2009-05-21 7 views
1

ich bin ein Wörterbuch, in dem Schlüssel ist ein String keyword.supporte Ich habe folgende Schlüssel im Wörterbuch.hw Suche Teilzeichenfolge in einer Liste indizierter Zeichenfolgen?

Matte hon saß hon lat hon

jetzt, wenn ich einzelne Stichwort serach annehmen Mathon es es in konstanten time.But suchen, wenn ich bin hon i alle suchen möchten von drei Wörtern, die in der konstanten Zeit oder in der minimalen Zeit retreived werden mögen, wie im Fall von Google Search. was sollte mein Ansatz sein? und ist Wörterbuch richtige Datenstruktur für den Zweck?

Wert des Wörterbuchs ist eine Liste von Elementen, die ich für den Benutzer anzeigen muss und die Suche kann mehrere Stichwörter basieren.

Antwort

1

ein Gaddag, wie in this paper beschrieben, ist wahrscheinlich Ihre beste Wette. Es ist eine Variante eines Trie, mit der man überall in einem Wort suchen kann und sowohl vorwärts als auch rückwärts läuft. Es ist nicht O (1) Lookup, aber es ist ziemlich schnell und hat einen angemessenen Platzverbrauch.

bearbeiten: und für mehrere Keywords können Sie einfach individuell nach jedem Schlüsselwort suchen und dann eine bestimmte Schnittmenge oder Vereinigung abhängig machen. es ist wahrscheinlich schneller als du denkst; zumindest lohnt es sich, als möglichst einfachen Algorithmus zu implementieren und nur dann zu verwerfen, wenn sich beim Profiling ein tatsächlicher Engpass ergibt.