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.

4 Implementierung<br />

sofern das zu untersuchende Muster optimal ist, wenn also kein semantisch äquivalentes<br />

Muster existiert. Die Eingabevektoren für nicht-optimale Muster, also für solche für<br />

die bereits ein äquivalentes Muster existiert, brauchen nicht gespeichert zu werden, da<br />

diese Muster für keinen<br />

Äquivalenz-Vergleich mehr herangezogen werden. Stattdessen<br />

wird immer das bereits vorhandene Muster verwendet. Zu jeder Hash-Klasse bzw. jedem<br />

Hashwert h(m) existiert eine eigene Liste T V h(m) zur Speicherung der so ermittelten<br />

Eingabevektoren (vgl. Listing 4.6 Zeile 16 in Abschnitt 4.3.3). Mit diesen Eingabevektoren<br />

wird die Menge der Muster einer Hash-Klasse M h(m), die als Kandidaten für den<br />

Erfüllbarkeitstest in Frage kommen, weiter gefiltert.<br />

Für die Eingabevektoren und Muster derselben Hash-Klasse besteht folgender Zusammenhang:<br />

Angenommen, es wird ein neues Muster m mit dem Hashwert h(m) erzeugt<br />

und auf dieses Muster ist keine bisher ermittelte Regel anwendbar. Das Muster wir also<br />

durch den Vorabtest untersucht. Es lassen sich drei Fälle unterscheiden:<br />

44<br />

• M h(m) = ∅:<br />

Es gilt, dass die Menge der Muster M h(m) einer Hash-Klasse noch leer ist. Demnach<br />

ist auch die Menge der Eingabevektoren T V h(m) bezüglich einer Hash-Klasse noch<br />

leer. Das neue Muster m kann direkt zur Menge der optimalen Muster Mopt, sowie<br />

zu dieser Hash-Klasse hinzugefügt werden, da noch kein anderer Kandidat für eine<br />

mögliche Äquivalenz existiert.<br />

• |M h(m)| = 1:<br />

Es gilt, dass bisher nur ein Muster m ′ der Hash-Klasse M h(m) zugeordnet ist.<br />

Demzufolge ist die Liste der Eingabevektoren T V h(m) noch leer. Für das neue<br />

Muster m besteht entweder die Möglichkeit, dass es zu dem bereits vorhandenen<br />

Muster m ′ äquivalent ist, oder nicht. Falls m ≡ m ′ gilt, ist das Muster nicht optimal<br />

und es wird eine neue Regel erzeugt. Falls jedoch m �≡ m ′ gilt, ist m ′ eine Kandidat<br />

und es wird durch den Erfüllbarkeitstest ein Zeuge tv ermittelt, welcher beweist,<br />

dass m und m ′ nicht semantisch äquivalent sind. m ist in diesem Fall ein optimales<br />

Muster und wird der Menge Mopt, sowie der Hash-Klasse M h(m) hinzugefügt, sowie<br />

tv der Menge T V h(m).<br />

• |M |h(m)| > 1:<br />

Es gilt, dass sich bereits mehrere optimale, d. h. semantisch nicht äquivalente Muster<br />

in der Hash-Klasse M h(m) befinden. Für das neue Muster m besteht, wie im<br />

vorherigen Fall die Möglichkeit, dass ein Muster m ′ ∈ M h(m) existiert, zu dem<br />

m äquivalent ist, oder dass es noch kein solches Muster gibt. Ist m zu einem<br />

Muster m ′ ∈ M h(m) äquivalent, dann gilt für jeden Eingabevektor tv ∈ T V h(m) :<br />

m(tv) = m ′ (tv). Da jedoch für jedes andere Muster m ′′ ∈ M h(m), mit m ′ �≡ m ′′<br />

mindestens ein tv ′ ∈ T V h(m) existiert, so dass m ′ (tv ′ ) �= m ′′ (tv ′ ) gilt, folgt, dass es<br />

kein anderes Muster außer m ′ ∈ M h(m) geben kann für das alle Eingabevektoren<br />

tv ∈ T V h(m) ein Ergebnis liefern, welches mit dem von m für dieselben Eingabevektoren<br />

übereinstimmt. Es gibt demnach nur genau ein Muster, für das alle bisher

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!