Ein Beispiel, bei dem der Knuth-Morris-Pratt-Algorithmus schneller ist als Boyer-Moore?


10

Diese Seite über den Knuth-Moriss-Pratt-Algorithmus im Vergleich zu Boyer-Moore beschreibt einen möglichen Fall, in dem der Boyer-Moore-Algorithmus unter einer geringen Sprungdistanz leidet, während KMP eine bessere Leistung erzielen könnte.
Ich suche ein gutes Beispiel (Text, Muster), das diesen Fall klar demonstrieren kann.


Antworten:


3

Es gibt ein Papier, das ein gutes Experiment über diese String-Matching-Algorithmen für verschiedene Muster durchgeführt hat: " Vergleich von String-Matching-Algorithmen: eine Hilfe zur Sicherheit von Informationsinhalten "

Es gibt auch eine Studie dieser String-Matching-Algorithmen für die japanische Sprache: Vergleich und Verbesserung von String-Matching-Algorithmen für japanische Texte

Ich hoffe, diese sind nützlich, um ein Gefühl für die Effizienz von Algorithmen zu bekommen!


3

Nun, diese Muster lassen KMP schneller arbeiten:

T = aaaaaaaaaa P = aaaa KMP wird 10 Vergleichsschritte versuchen, während Boyer-Moore 28 Schritte unternehmen wird

Ein anderes Beispiel:

T = aaaaaaaaaa P = abab KMP versucht 8 Vergleichsschritte, wobei BM 12 versucht.


Im ersten Beispiel finden beide Algorithmen bei der ersten Schicht sofort eine Übereinstimmung - wie würden sie mehr als 4 Vergleiche durchführen?
BartoszKP
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.