Ich lerne gerade über Mustervergleichsalgorithmen und bin auf diese beiden Algorithmen gestoßen. Ich habe folgende allgemeine Ideen:Wann würdest du KMP über BOYER-MOORE verwenden?
KMP
- Vergleicht Text von links nach rechts
- einen Fehler Array Verwendet zu verschieben intelligent
- nimmt O (m), wobei m die Länge ist das Muster, Versagen Array
- nimmt O (m), Raum
- nimmt O (n), die Zeit zu berechnen, eine Zeichenfolge
BM
- Vergleichen Muster von den letzten Charakter
- Verwenden schlechter Charakter springt und guter Suffix springt
- O (m + Größe des Alphabets) nimmt Tabellen
- nimmt O (m + Größe zu berechnen des Alphabets), Raum
- nimmt O (n), aber in der Regel besser
stieß ich auf die folgende qu suchen estion, die diese Frage ausgelöst (Wahr oder Falsch):
Die Knuth-Morris-Pratt (KMP) Algorithmus ist eine gute Wahl, wenn wir Suche nach dem gleichen Muster wiederholt in vielen verschiedenen Texten wollen.
Deshalb glaube ich, die Antwort nur wahr ist, weil die Annahme ist, dass jedes Mal, wenn der Algorithmus auf verschiedenen Text laufen die Vorverarbeitung nur O (n), wobei für BM ist es O (n + Größe des Alphabets). Ich bin jedoch nicht sicher, ob ich die korrekte Annahme mache, dass jedes Mal, wenn der Algorithmus erneut ausgeführt wird, eine neue Tabelle neu berechnet wird. Denn der Text fällt immer ins englische Alphabet. Ich müsste die Tabelle nur einmal berechnen und die Tabelle einfach wiederverwenden. So am Ende des Tages, würde die Antwort auf diese Frage auf der Tatsache abhängen, dass die Algorithmen sind alle auf Text ausgeführt werden, die in das gleichen Alphabet enthalten ist, oder gibt es einen anderen Faktor, die es beeinflussen können?
Viele Informationen hier: http://StackOverflow.com/q/12656160/56778, und in anderen SO-Posts. Machen Sie eine Google-Suche nach [kmp vs boyer-moore]. –
@JimMischel Ich habe diesen Beitrag schon gesehen, aber er beantwortet nicht direkt den Hauptteil meiner Frage. Und ich habe bereits versucht, Google es – Eric
Dies ist genau das, was ich suche. Jede Hilfe wäre willkommen. –