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 mehr verändert werden, da andernfalls die zu vergleichenden Ergebnisse auf unterschiedlichen<br />
Testvektoren beruhen würden und somit nicht mehr vergleichbar sind.<br />
Listing 4.3 Vorabtest – Variante 2<br />
1: function Vorabtest2(m, MOpt)<br />
2: MCand ← CreateEmptyList() ⊲ Liste für Erfüllbarkeitstest Kandidaten<br />
3: T V ← GetTestvectors() ⊲ Liste aller Testvektoren<br />
4: n ← Count(TV) ⊲ Anzahl der Testvektoren<br />
5:<br />
6: i ← 0<br />
7: for all t ∈ T V do<br />
8: res ← Result(m, t) ⊲ wird für jedes Muster nur einmal bestimmt<br />
9: m.results[i] ← res<br />
10: i ← i + 1<br />
11: end for<br />
12:<br />
13: for all m ′ ∈ MOpt do<br />
14: i ← 0<br />
15: equal ← true<br />
16: while i < n do<br />
17: if m.results[i] �= m ′ .results[i] then ⊲ Ergebnisse unterschiedlich?<br />
18: equal ← false ⊲ ⇒ m ′ kein Kandidat<br />
19: break<br />
20: end if<br />
21: i ← i + 1<br />
22: end while<br />
23: if equal then<br />
24: StorePatternInto(MCand, m ′ ) ⊲ m ′ ist Kandidat<br />
25: end if<br />
26: end for<br />
27:<br />
28: return MCand<br />
29: end function<br />
Verwendete Variante<br />
Im Rahmen dieser Arbeit wird eine Kombination aus beiden Varianten verwendet, die<br />
zusätzlich durch den Einsatz einer Hash-Funktion ergänzt wird. Listing 4.4 stellt den<br />
konkreten Ablauf dar. Um das Problem des höheren Speicherverbrauchs von Variante<br />
2 gegenüber Variante 1 zu vermeiden, werden nicht die Ergebnisse gespeichert, sondern<br />
es wird aus ihnen ein Hashwert gebildet. Die hierzu verwendete Hashfunktion h besteht<br />
aus einer einfachen Gewichtung der Ergebnisse, die in der Reihenfolge in der sie berech-<br />
41