Ich suche nach einem schnellen k-Mismatch-String-Matching-Algorithmus. Bei einer gegebenen Musterfolge P der Länge m und einer Textzeichenfolge T der Länge n benötige ich einen schnellen (linearen Zeit-) Algorithmus, um alle Positionen zu finden, an denen P mit einer Teilzeichenfolge von T mit höchstens k Fehlpaarungen übereinstimmt. Dies unterscheidet sich vom Problem der k-Unterschiede (Bearbeitungsabstand). Eine Nichtübereinstimmung impliziert, dass der Teilstring und das Muster an höchstens k Positionen einen anderen Buchstaben haben. Ich benötige wirklich nur k = 1 (höchstens 1 Fehlanpassung), daher reicht auch ein schneller Algorithmus für den speziellen Fall von k = 1 aus. Die Alphabetgröße beträgt 26 (Groß- und Kleinschreibung wird nicht berücksichtigt, daher sollte der Platzbedarf mit der Größe des Alphabets nicht zu schnell wachsen (z. B. nimmt der FAAST-Algorithmus, glaube ich, in der Größe des Alphabets exponentiell Platz ein, und so weiter) ist nur für Protein- und Gensequenzen geeignet).
Ein auf dynamischer Programmierung basierender Ansatz ist im schlimmsten Fall O (mn), was zu langsam ist. Ich glaube, dass es dafür Modifikationen des Boyer-Moore-Algorithmus gibt, aber ich bin nicht in der Lage, solche Papiere in die Hände zu bekommen. Ich habe kein Abonnement für den Zugriff auf wissenschaftliche Zeitschriften oder Veröffentlichungen, daher müssen alle Referenzen gemeinfrei sein.
Ich würde mich sehr über Hinweise oder Verweise auf frei verfügbare Dokumente oder den Algorithmus selbst für dieses Problem freuen.