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.

4 Implementierung<br />

kann. Existiert eine weiteres Muster m ′′ sowie eine weitere Regel m ′ → m ′′ , dann gilt<br />

analog, dass m ′′ vor m ′ erzeugt wurde woraus direkt folgt, dass m ′′ auch vor m erzeugt<br />

wurde. Ein Rekonstruktion von m durch eine zweite Regel ist also auch nicht möglich.<br />

Diese Überlegung lässt sich analog für drei oder mehr Regeln fortführen. Es ist jedoch<br />

nicht ausgeschlossen, dass eine Transformationsregel existiert, die auf ein Teilmuster von<br />

m ′ oder eines der folgenden Muster anwendbar ist und dadurch wieder das ursprüngliche<br />

Muster m erzeugt werden kann.<br />

Bei Transformationsregeln mit zwei strukturell identischen Mustern können definitiv<br />

Regelzyklen entstehen. Dies zeigen die Beispiele 1 und 2 zu Beginn dieses Abschnittes.<br />

Der Grund besteht darin, dass es für zwei strukturell identische Muster möglich ist, dass<br />

beide eine gemeinsame Teilmenge von spezielleren Mustern überdecken. Ein Muster m ′<br />

gilt gegenüber einem Muster m als spezieller, wenn m und m ′ strukturell identisch sind<br />

und m ′ von m überdeckt werden kann, nicht aber umgekehrt.<br />

Die Idee um dieses Problem zu lösen besteht darin, das Muster der linken Seite einer<br />

Regel r : rleft → rright mit zwei strukturell identischen Mustern rleft und rrigth derart<br />

einzuschränken, dass dieses zum einen nicht auf das Muster rright und zum anderen auch<br />

auf kein spezielleres Muster als rright angewendet werden kann. Variablen, Konstanten<br />

oder symbolische Konstanten, die nicht an einer<br />

Änderung durch die Regel beteiligt<br />

sind, stellen hierbei kein Problem dar. Sie tragen nicht dazu bei, dass durch die Anwendung<br />

der Regel eine andere Regel anwendbar wird, die nicht bereits zuvor anwendbar<br />

gewesen wäre. Ein Beispiel für eine solche Variable ist var0 aus Abbildung 4.30. Problematisch<br />

sind solche Knoten, die durch die Regel verändert werden, wie beispielsweise die<br />

symbolische Konstante sc0 aus Abbildung 4.30, die als Operand einer anderen Operation<br />

zugeordnet wird. Konstanten müssen bei der Prüfung auf die Anwendbarkeit einer Regel<br />

immer genau übereinstimmen, also auch denselben Wert besitzen. Stimmen Konstanten<br />

in der Regeldefinition hinsichtlich ihrer Position und ihres Wertes nicht überein, ist die<br />

entsprechende Regel auch nicht auf das Muster anwendbar, welches sich aus der Anwendung<br />

der Regel ergibt. Bleiben noch Variablen und symbolische Konstanten, die an<br />

einer Änderung durch die Regel beteiligt sind. Diese können auch Knoten mit anderen<br />

Typen überdecken. Um zu verhindern, dass zwei Muster eine gemeinsame Teilmenge<br />

von Mustern überdecken, werden nacheinander zunächst die Variablen und anschließend<br />

symbolische Konstanten, in der Reihenfolge ihrer Indizes auf ihren eigentlichen Typ beschränkt.<br />

D. h. eine Variable darf dann nur noch Variablen und symbolische Konstanten<br />

nur noch symbolische Konstanten bei der Anwendung einer Regel überdecken. Die Einschränkung<br />

wird sukzessive fortgeführt bis für ein Knotenpaar (v, v ′ ) gilt, dass v und<br />

v ′ keine gemeinsame Teilmenge von möglichen Knotentypen überdecken können, wobei<br />

v aus einem Muster m stammt und v ′ dem Knoten entspricht, der sich in einem zu<br />

m strukturell identischen Muster m ′ an derselben Position wie v befindet. In Abbildung<br />

4.30 wird dies bereits durch die Einschränkung von var1 erreicht. var1 aus Muster<br />

rleft kann nur noch Variablen überdecken, während sc0 nur Konstanten und symbolische<br />

Konstanten überdecken kann.<br />

64

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!