Was sind gute Datenstrukturen für automatische Vervollständigungsalgorithmen? Welche Datenstrukturen ermöglichen es, effizient Strings zu finden, die einen bestimmten Teilstring enthalten?Datenstruktur für die automatische Vervollständigung
Antwort
Wenn Sie schauen, um etwas ähnlich wie zu tun, Google es ist die automatische Vervollständigung implementiert, könnte man ein ternäres Suchbaum prüfen wollen:
http://igoro.com/archive/efficient-auto-complete-with-a-ternary-search-tree/
Wenn Sie jedoch einen beliebigen Teilzeichen finden wollen Versuchen Sie in einer Zeichenfolge eine generalisierte Suffixstruktur.
Funktioniert das nicht nur, wenn Sie nur Präfixe abgleichen wollen? z.B. ein ternärer Suchbaum hilft Ihnen, "ab" in "abcd", aber nicht "bc" in "abcd" zu finden (könnte dick sein, weiß nicht viel über ternäre Suchbäume und gab dem Link nur einen flüchtigen Blick). –
Ich denke, im Allgemeinen funktioniert es in einem x "beginnt mit" y Art und Weise. In der Praxis scheint dies jedoch so zu sein, dass alle Autocomplete-Funktionen, die ich jemals benutzt habe, funktionierten. –
fwiw eine Anzahl der Auto-Vervollständigen-Widgets Ich verwende alltägliche Übereinstimmung irgendwo in der Zeichenfolge; nichtsdestotrotz - nützlicher Link, also +1. –
Check out suffix array und suffix tree.
Mann, ich suche seit Jahren nach Ukkonens Algorithmus und wusste nie davon! Ich habe eine Anwendung, die eine effiziente Anpassung von Teilstrings mit Fehlern benötigt. Ich habe sogar in Foren wie diesem in der Vergangenheit gefragt und keine guten Hinweise bekommen. Du hast meinen Tag gerettet! – swestrup
@swestrup: Ich bin froh, dass ich Ihnen geholfen habe, diese Informationen zu verfolgen :) Sie sollten eine Kopie von * The Algorithm Design Manual *, http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp bekommen/1848000693/ref = sr_1_1? Ie = UTF8 & s = Bücher & qid = 1268325877 & sr = 8-1 es ist eine unschätzbare * Zusammenstellung * von Datenstrukturen, Algorithmen und Bibliographie/URLs Referenzen;) –
Wenn Sie Präfixe machen (was die meisten Autocomplets tun), dann ist auch ein ternärer Suchbaum das, was ich empfehlen würde. Wenn du allgemeine Infixe machst, dann gehe mit einem Suffixbaum, wie oben erwähnt.
Nein, es ist eine dumme Idee. Verwenden Sie Suffixbäume. Viel besser. – swestrup
Wenn es dumm ist, redigiere deine Antwort –
Als Alternative zu Suffix Arrays, Trees und Tries sehen Sie sich Directed Acyclic Word Graphs (DAWGs) und die Compressed-Variante (CDAWGs) an. Sie können in linearer Zeit erstellt werden, linearen Raum einnehmen und Teilstringsuche ermöglichen.
Mit einer komplizierteren Suchfunktion können Sie sogar eine begrenzte Anzahl von Platzhaltern unterstützen.
Ich habe eine Anwendung für genau das, was Sie wollen erstellt. Es ist der effizienteste Präfix-basierte Ranked-Autocomplete-Algorithmus um.
Wenn der Satz von der automatischen Vervollständigung Vorschläge ist Rang geordnet, ist ein SuggestTree eine gute Datenstruktur. Für jedes gegebene Präfix bietet es schnellen Zugriff auf die obersten k Vorschläge, die mit diesem Präfix beginnen.
- 1. Erhöhen Sie die Bildlaufleistengröße für automatische Vervollständigung
- 2. xamarin.forms die automatische Vervollständigung für Visual Studio
- 3. IntelliJ die automatische Vervollständigung entkommen
- 4. Wie die automatische Vervollständigung Suchereignis
- 5. Protoype/Scriptaculous automatische Vervollständigung
- 6. automatische Vervollständigung Methode Brackets
- 7. Subversion Repository automatische Vervollständigung
- 8. automatische Vervollständigung von Datenbank
- 9. automatische Vervollständigung JQuery Alternativen
- 10. Gibt es eine automatische Vervollständigung für Gradlew?
- 11. Automatische Vervollständigung für Textfelder in Firefox ausschalten
- 12. die automatische Vervollständigung Funktionalität in Emacs sucht
- 13. automatische Vervollständigung für PyroCMS in NetBeans IDE
- 14. klickbare die automatische Vervollständigung, wie Google
- 15. IntelliJ die automatische Vervollständigung den Funktionsnamen ersetzen
- 16. die automatische Vervollständigung funktioniert nur mit Leerzeichen
- 17. die automatische Vervollständigung und $ .getJSON Problem
- 18. jQuery ui die automatische Vervollständigung - renderItem
- 19. Vims Strg + P die automatische Vervollständigung für Bezeichner mit Bindestrich ‚-‘
- 20. Verwenden Sie Blasen in UItextfeld für die automatische Vervollständigung
- 21. Wie man Datenlisten für die dynamische automatische Vervollständigung aktualisiert?
- 22. So aktivieren Sie die automatische Vervollständigung für Frameworks [Notepad ++]
- 23. So legen Sie den Attributtitel für die automatische Vervollständigung fest
- 24. Wie Sie die automatische Vervollständigung für dynamisch erstellte Eingabefelder anwenden
- 25. Wie verwenden Sie die automatische Vervollständigung für Tausende von Einträgen?
- 26. Google map api - die automatische Vervollständigung für Hotels
- 27. Mehrere automatische Vervollständigung Calls - jQuery
- 28. Eclipse-CDT automatische Vervollständigung nicht
- 29. automatische Vervollständigung Feld in Django
- 30. dynamisches Textfeld und automatische Vervollständigung
http://en.wikipedia.org/wiki/Trie – frankc