MagicMagor
08.04.2009, 12:18
Eigentlich bin ich jemand der lieber erstmal selber versucht ein Problem oder eine Frage zu lösen bevor ich jemand anderen um Hilfe bitte, aber diesmal will ich lieber zu früh fragen als zu spät.
Ich habe in etwa einer Woche (genauer kommenden Dienstag) meine Nachklausur in Informatik3 (Algorithmen und Datenstrukturen) und arbeite mich nun erneut durch das Skript.
Probleme habe ich dabei mit dem Textsuch-Verfahren von Boyer-Moore insbesondere was den delta-2 Wert angeht.
Ich denke ich habe einigermaßen verstanden wie der Algorithmus funktioniert und warum er im Mittel gute Laufzeitergebnisse liefert, aber wie sich der delta-2 und der verbesserte delta-2 Wert berechnet entzieht sich mir noch ein wenig.
Im Skript haben wir also einen Text T der Länge N und ein Muster P mit der Länge M. Verglichen wird jeweils T(i) mit P(j).
Folgendes steht nun im Skript zum delta-2 Wert:
Der sogenannte delta-2-Wert beschreibt, um welchen Wert i maximal erhöht werden kann, wenn an einer Position j im Muster ein Mismatch eintritt.
Genutzt wird dabei die Information, dass auf den Positionen i+1, ..., i+(M-1-j) im Text die gleichen Zeichen stehen, wie im Muster auf den Positionen j, ... , M-1. Wird zusätzlich noch die Information genutzt, dass auf Position i im Text ein anderes Zeichen steht als auf Position j im Muster, dann erhalten wir den verbesserten delta-2 Wert.
Das ist soweit klar, was mir nur nicht klar ist, wie der Wert denn nun genau berechnet wird. (Und genau so eine Aufgabe kam in der ersten Klausur dran - auch wenn ich daher bezweifle, das in der Nachklausur diesselbe Aufgabe noch einmal dran kommt würde ich es gerne verstehen)
Gegeben ist folgendes Beispiel:
P | = 1 0 0 1 0 1 0 1 0
j | = 0 1 2 3 4 5 6 7 8
delta2(j) | = 15 14 13 7 6 5 4 3 1
Was im Skript vollständig fehlt ist eine mathematische Herleitung des delta2-Wertes oder überhaupt eine Angabe der Berechnung desselbigen. Das Beispiel wird zwar mit vielen Schaubildern verdeutlicht und ich kann insofern nachvollziehen, daß die obigen Werte korrekt sind, aber wie man auf sie kommt kann ich mir nicht herleiten.
Es wäre schön wenn mir hier jemand auf die Sprünge helfen könnte.
Ich habe in etwa einer Woche (genauer kommenden Dienstag) meine Nachklausur in Informatik3 (Algorithmen und Datenstrukturen) und arbeite mich nun erneut durch das Skript.
Probleme habe ich dabei mit dem Textsuch-Verfahren von Boyer-Moore insbesondere was den delta-2 Wert angeht.
Ich denke ich habe einigermaßen verstanden wie der Algorithmus funktioniert und warum er im Mittel gute Laufzeitergebnisse liefert, aber wie sich der delta-2 und der verbesserte delta-2 Wert berechnet entzieht sich mir noch ein wenig.
Im Skript haben wir also einen Text T der Länge N und ein Muster P mit der Länge M. Verglichen wird jeweils T(i) mit P(j).
Folgendes steht nun im Skript zum delta-2 Wert:
Der sogenannte delta-2-Wert beschreibt, um welchen Wert i maximal erhöht werden kann, wenn an einer Position j im Muster ein Mismatch eintritt.
Genutzt wird dabei die Information, dass auf den Positionen i+1, ..., i+(M-1-j) im Text die gleichen Zeichen stehen, wie im Muster auf den Positionen j, ... , M-1. Wird zusätzlich noch die Information genutzt, dass auf Position i im Text ein anderes Zeichen steht als auf Position j im Muster, dann erhalten wir den verbesserten delta-2 Wert.
Das ist soweit klar, was mir nur nicht klar ist, wie der Wert denn nun genau berechnet wird. (Und genau so eine Aufgabe kam in der ersten Klausur dran - auch wenn ich daher bezweifle, das in der Nachklausur diesselbe Aufgabe noch einmal dran kommt würde ich es gerne verstehen)
Gegeben ist folgendes Beispiel:
P | = 1 0 0 1 0 1 0 1 0
j | = 0 1 2 3 4 5 6 7 8
delta2(j) | = 15 14 13 7 6 5 4 3 1
Was im Skript vollständig fehlt ist eine mathematische Herleitung des delta2-Wertes oder überhaupt eine Angabe der Berechnung desselbigen. Das Beispiel wird zwar mit vielen Schaubildern verdeutlicht und ich kann insofern nachvollziehen, daß die obigen Werte korrekt sind, aber wie man auf sie kommt kann ich mir nicht herleiten.
Es wäre schön wenn mir hier jemand auf die Sprünge helfen könnte.