Generierung lokaler Optimierungen - IPD Snelting
Generierung lokaler Optimierungen - IPD Snelting
Generierung lokaler Optimierungen - IPD Snelting
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 />
nicht erfüllbar 1 , sind beide Muster m und m ′ äquivalent. Ist das Ergebnis jedoch für<br />
jedes m ′ ∈ MCand erfüllbar 2 , so ist m ein optimales Muster. Wie in Abschnitt 4.3.2<br />
angesprochen, werden die Zeugen, also Eingabevektoren tv, die beweisen, dass m �≡ m ′<br />
gilt, extrahiert und falls m optimal ist, in der Liste T V h(m) gespeichert (Zeile 9, 10, 16).<br />
Listing 4.6 Erfüllbarkeitstest<br />
1: function Erfüllbarkeitstest(m, mCand)<br />
2: T VT mp ← CreateEmptyList ⊲ Erzeuge List für gefundene Zeugen<br />
3: if mcand �=⊥ then<br />
4: proof ← CreateProof(m, mcand) ⊲ Erzeuge Beweis-Instanz<br />
5: unsat ← Solve(proof) ⊲ Beweis lösen<br />
6: if unsat then<br />
7: return mcand ⊲ mcand ist semantisch äquivalentes Muster<br />
8: else<br />
9: v ← ExtractProofVector(proof) ⊲ Zeuge extrahieren<br />
10: InsertInto(T VT mp, v) ⊲ Zeuge zwischenspeichern<br />
11: end if<br />
12: end if<br />
13:<br />
14: T V h(m) ← GetTestvectorsByHash(h(m))<br />
15:<br />
16: Append(T V h(m), T VT mp) ⊲ Neue Zeugen zur Liste hinzufügen<br />
17: return ⊥ ⊲ Kein äquivalentes Muster ⇒ m optimal<br />
18: end function<br />
4.4 Zusammenwirken der Komponenten<br />
In diesem Abschnitt soll der vollständige Ablauf eines <strong>Generierung</strong>svorgangs noch einmal<br />
zusammengefasst werden. Anschließend folgt ein ausführliches Beispiel.<br />
4.4.1 Ablauf<br />
Listing 4.7 stellt den Ablauf eines <strong>Generierung</strong>svorgangs in algorithmischer Form dar.<br />
Die Prozedur Generate wird mit einem Wert limit aufgerufen, der die gewünschte Kostenobergrenze<br />
für den durchzuführenden <strong>Generierung</strong>svorgang festlegt. Zunächst werden<br />
drei Listen RRules, MOpt und MErz erzeugt. RRules dient zur Speicherung der generierten<br />
Regeln, MOpt beinhaltet die optimalen Muster und MErz speichert alle erzeugten<br />
1 engl. unsatisfiable<br />
2 engl. satisfiable<br />
47