16.12.2012 Aufrufe

Zusammenfassung - Otto-von-Guericke-Universität Magdeburg

Zusammenfassung - Otto-von-Guericke-Universität Magdeburg

Zusammenfassung - Otto-von-Guericke-Universität Magdeburg

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.

6 Suche mit Fehlern<br />

Algorithmus 6 Implementierung der Suche nach einer Zeichenkette r in einer Menge <strong>von</strong> l<br />

Zeichenketten s1 bis sl unter Berücksichtigung des Ähnlichkeitsschwellwertes τ<br />

1: function SEARCH(r,{s1,s2,s3,...,sl},τ)<br />

2: m ← |r|<br />

3: H ← /0 ⊲ initialisiere Ergebnistreffermenge H ∈ H ∗ als leere Menge<br />

4: H ′ ← /0 ⊲ initialisiere temporäre Treffermenge H ′ ∈ H ∗ als leere Menge<br />

5: for i ← 1,...,l do<br />

6: n ← |si|<br />

7: berechne Distanzmatrix D für Zeichenketten r und si<br />

8: for j ← 1...n do ⊲ füge alle Stellen j als potentielle Treffer in H ′ ein<br />

9: ID = i, σ = 1 − Dm, j/m<br />

10: j b = j − m + 1, j e = j<br />

11: if j b < 0 then j b = 0<br />

12: end if<br />

13: h ′ ← (ID, j b , j e ,σ) ⊲ erzeuge potentiellen Treffer h ′ ∈ H<br />

14: H ′ ← H ′ ∪ {h ′ } ⊲ füge h ′ der Menge potentieller Treffer H ′ hinzu<br />

15: end for<br />

16: for all h ′ ∈ sort(H ′ ) do ⊲ iteriere über die Elemente <strong>von</strong> H ′ , absteigend<br />

sortiert nach den Ähnlichkeitswerten σ der Elemente<br />

17: if sim ≥ τ ∧ ¬∃h ∈ H : OVERLAPS(h,h ′ ) then<br />

18: H ← H ∪ {h ′ } ⊲ füge h ′ der Ergebnistreffermenge H hinzu, falls<br />

19: end if noch kein überlappender Treffer in H existiert<br />

20: end for<br />

21: end for<br />

22: return H<br />

23: end function<br />

24: function OVERLAPS(h1,h2)<br />

25: (ID1, j b 1 , j e 1 ,sim1)<br />

26:<br />

= h1<br />

(ID2, j b 2 , j e 2 ,sim2)<br />

27:<br />

= h2<br />

if ID1 �= ID2 then<br />

28: return false<br />

29: else if ( j b 1 ≤ j b 2 ≤ j e 1 ) ∨ ( j b 1 ≤ j e 2 ≤ j e 1 ) ∨ ( j b 2 ≤ j b 1 ≤ j e 2 ) ∨ ( j b 2 ≤ j e 1 ≤ j e 30:<br />

2 ) then<br />

return true<br />

31: else<br />

32: return false<br />

33: end if<br />

34: end function<br />

80

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!