Diese Frage wurde von Efficient Data Structures zum Erstellen einer schnellen Rechtschreibprüfung gestellt .
Bei zwei Strings sagen wir, dass sie k- nah sind, wenn ihr Damerau-Levenshtein-Abstand ¹ klein ist, dh \ operatorname {LD} (u, v) \ geq k für ein festes k \ in \ mathbb {N} . Informell ist \ operatorname {LD} (u, v) die Mindestanzahl von Lösch-, Einfüge-, Ersetzungs- und (Nachbar-) Auslagerungsoperationen, die erforderlich sind, um u in v umzuwandeln . Sie kann durch dynamische Programmierung in \ Theta (| u | \ cdot | v |) berechnet werden . Beachten Sie, dass \ operatorname {LD} eine Metrik ist , die insbesondere symmetrisch ist.
Die Frage des Interesses ist:
Was ist die Kardinalität von bei einer Menge von Strings über mit Längen von höchstens ?
?
Da sogar zwei Strings gleicher Länge unterschiedliche Anzahlen von Strings² haben², kann es schwierig (unmöglich?) Sein, eine allgemeine Formel / einen Ansatz zu finden. Daher müssen wir möglicherweise die Zahl für jedes gegebene S explizit berechnen , was uns zu der Hauptfrage führt:
Was ist die (zeitliche) Komplexität des Findens der Kardinalität der Menge für (beliebiges) ?
Beachten Sie, dass die gewünschte Menge in exponentiell ist Eine explizite Aufzählung ist daher nicht wünschenswert. Ein effizienter Algorithmus wäre großartig.
Wenn es hilft, kann angenommen werden, dass wir tatsächlich eine (große) Menge von Zeichenfolgen haben, dh wir lösen die erste hervorgehobene Frage.
- Mögliche Varianten sind die Verwendung des Levenshtein-Abstands .
- Betrachten Sie und . Die Sätze von geschlossenen Zeichenfolgen über sind (8 Wörter) und (10 Wörter).