25.10.2012 Aufrufe

Generierung lokaler Optimierungen - IPD Snelting

Generierung lokaler Optimierungen - IPD Snelting

Generierung lokaler Optimierungen - IPD Snelting

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!