Generierung lokaler Optimierungen - IPD Snelting
Generierung lokaler Optimierungen - IPD Snelting
Generierung lokaler Optimierungen - IPD Snelting
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
2 Grundlagen<br />
Reassoziierung Die Reassoziierung nutzt die algebraischen Eigenschaften der involvierten<br />
Operationen wie Assoziativität, Kommutativität und Distributivität aus um<br />
Teilausdrücke neu anzuordnen. Dadurch kann erreicht werden, dass zwei Konstanten<br />
aus unterschiedlichen Teilausdrücken in einem Teilausdruck zusammengefasst<br />
werden und somit eine Konstantenfaltung möglich wird. Die folgende Gleichung<br />
zeigt hierzu ein Beispiel: (x + 1) + (y + 1) = (x + y) + (1 + 1) = (x + y) + 2.<br />
2.2 Graphen, Muster und Regeln<br />
Das in Kapitel 4 vorgestellte Verfahren orientiert sich an maschinenunabhängigen Zwischensprachen<br />
und betrachtet Ausdrücke, wie sie im vorherigen Abschnitt vorkommen,<br />
als Muster in Graphform. An dieser Stelle werden die dazu notwendigen theoretischen<br />
Ansätze eingeführt.<br />
Definition 1 (Gerichteter Graph). Ein gerichteter Graph G entspricht einem 4-Tupel<br />
G = (V, E, src, dst) mit der Knotenmenge V , einer Kantenmenge E, sowie zwei Abbildungen<br />
src → V und dst : E → V . src(e) ordnet jeder Kante e einen Quellknoten und<br />
dst(e) jeder Kante e einen Zielknoten zu.<br />
Definition 2 (Pfad). Sei G ein gerichteter Graph, E die Menge der Kanten von G,<br />
sowie P = (e0, . . . , en), n ∈ N+ eine Folge von Kanten aus E und i aus {0, . . . , n − 1}.<br />
P heißt Pfad, wenn für jede Kante ei ∈ E der Folge P gilt:<br />
dst(ei) = src(ei+1)<br />
Definition 3 (Zyklus). Sei G ein gerichteter Graph. Ein Zyklus C in G entspricht<br />
einem Pfad P = (e0, . . . , en) für dessen Startknoten src(e0) sowie dessen Zielknoten<br />
dst(en) gilt:<br />
src(e0) = dst(en)<br />
Definition 4 (Gerichteter azyklischer Graph). Ein gerichteter Graph G heißt azyklisch,<br />
wenn kein Zyklus C in G existiert.<br />
Definition 5 (Gewurzelter Graph). Ein gerichteter azyklischer Graph G heißt gewurzelt,<br />
wenn genau ein Knoten vw ∈ V existiert, so dass für alle anderen v ∈ V ein Pfad<br />
P = (e0, . . . , en) existiert, für den gilt: src(e0) = vw ∧ dst(en) = v. Der Knoten vw wird<br />
als Wurzel von G bezeichnet.<br />
Mit den bisherigen Definitionen kann nun ein Ausdruck als graphbasiertes Muster wie<br />
folgt formal eingeführt werden:<br />
Definition 6 (Muster). Ein Muster m entspricht einem 4-Tupel m = (G, type, pos, idx)<br />
mit einem gewurzelten Graphen G = (V, E, src, dst), einer Abbildung type : V → T ,<br />
einer Abbildung pos : E → N0 und einer Abbildung idx : V → N0.<br />
12