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.
4 Implementierung<br />
sc0<br />
sub<br />
add<br />
var0<br />
⇒<br />
Regel r<br />
sc0 −4<br />
Abbildung 4.29: Abbildung einer verallgemeinerten Regel – r0, r1, r2, r3 aus Abbildung<br />
4.28 lassen sich durch symbolische Konstanten in einer Regel r<br />
zusammenfassen.<br />
Die optimalen Muster bilden jedoch die Grundlage für neue Muster und werden als<br />
mögliche rechte Seite von Regeln benötigt. Sie dürfen nicht entfernt werden.<br />
Verallgemeinerung<br />
Wie in den beiden vorherigen Beispielen gezeigt wird, sind Regeln, oder allgemeiner<br />
eine Folge von Regeln R = (r0, . . . , rn), n ∈ N+ problematisch, wenn es möglich ist,<br />
aus einem Muster m durch Anwendung einer solchen Folge R von Regeln wieder das<br />
Ursprungsmuster m zu erzeugen.<br />
Hierzu zunächst eine Definition:<br />
Definition 18 (Regelzyklus). Ein Regelzyklus innerhalb einer Regelmenge RM, besteht<br />
dann, wenn ein Muster m, sowie eine Folge von Regeln R = (r0, . . . , rn), mit r0, . . . , rn ∈<br />
RM existiert, so dass gilt:<br />
m r0 → . . . rn → m<br />
Regelzyklen in Regelmengen stellen bei der Verwendung der Regelmenge, beispielsweise<br />
in einem Übersetzer ein Problem dar. Bei jeder Verwendung einer Regel aus dieser<br />
Menge ist zu prüfen, ob ein Zyklus besteht, da ansonsten eine Terminierung bei der<br />
Anwendung der Regeln nicht garantiert ist. Schon aus diesem Grund ist es sinnvoll, Regelzyklen<br />
bereits beim Erzeugen einer Regelmenge zu verhindern. Darüber hinaus stören<br />
Regelzyklen auch den eigentlichen <strong>Generierung</strong>svorgang wie Beispiel 1 und 2 zeigen. Das<br />
Entfernen optimaler Muster aufgrund eines Regelzyklus ist besonders kritisch. In diesem<br />
Fall ist nicht mehr garantiert, dass es sich bei einem Muster m auf der rechten Seite einer<br />
62<br />
add<br />
sub<br />
add<br />
var0