25.10.2012 Aufrufe

Generierung lokaler Optimierungen - IPD Snelting

Generierung lokaler Optimierungen - IPD Snelting

Generierung lokaler Optimierungen - IPD Snelting

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

2 Grundlagen<br />

Definition 9 (Ergebnis eines Musters). Sei m ein Muster, G der zu m gehörende Graph,<br />

V die Menge der Knoten von G, sowie nvar = |{v ∈ V : type(v) = var}| die Anzahl<br />

der Knoten des Musters mit dem Typ einer Variablen (type(v) = var). Sei weiter<br />

tv ∈ Z nvar ein Eingabevektor, der jedem Knoten v ∈ V , mit type(v) = var einen Wert<br />

(Konstante) val = tv[idx(v)] zuordnet. val bildet selbst wieder eine Vektor (val) 1 , so<br />

dass eval(type(v), (val) 1 ) den Wert des Variablen-Knoten berechnet. Das Ergebnis eines<br />

Musters m(tv) ergibt sich durch eine Postorder-Traversierung 1 von G, bei der für<br />

jeden Knoten v ′ die Abbildung eval bezüglich der Ergebnisse seiner Vorgänger-Knoten<br />

ausgewertet wird.<br />

Abbildung 2.1 zeigt zu Definition 9 ein Beispiel. Der Eingabevektor tv = (1, 2) wird auf<br />

das in der Abbildung gezeigte Muster mit der Semantik (var0 + var1) + 2 angewendet.<br />

Wie in der Definition beschrieben, wird in Postorder-Reihenfolge jeder Knoten durch die<br />

eval Abbildung ausgewertet. Es ergibt sich das Ergebnis m(tv) = 5.<br />

Eingabevektor<br />

var0<br />

(1,2)<br />

var1<br />

add 2<br />

add<br />

−→<br />

1 2<br />

add 2<br />

add<br />

−→<br />

3 2<br />

add<br />

−→ 5<br />

Abbildung 2.1: Beispiel zur Berechnung des Ergebnisses eines Musters bezüglich eines<br />

Eingabevektors.<br />

Für die Aufstellung von Ersetzungsregeln ist es notwendig zu wissen, ob zwei Muster m<br />

und m ′ für alle Eingabevektoren jeweils dasselbe Ergebnis berechnen. Man spricht von<br />

semantischer Äquivalenz. Formal gilt:<br />

Definition 10 (Semantische Äquivalenz). Seien m und m′ zwei Muster, sowie Vm die<br />

Menge der Knoten von m und Vm ′ die Menge der Knoten von m′ . m und m ′ sind genau<br />

dann semantisch äquivalent, wenn für alle Eingabevektoren tv ∈ Z n , mit n = max(|{v ∈<br />

Vm : type(v) = var}|, |{v ∈ Vm ′ : type(v) = var}|) gilt:<br />

m(tv) = m ′ (tv)<br />

Für zwei semantisch äquivalente Muster m und m ′ schreibt man: m ≡ m ′ .<br />

1 zuerst wird der linke Teilbaum, dann der rechte Teilbaum und zum Schluss die Wurzel behandelt<br />

14

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!