私はVB.NETでの予測的なテキスト入力のためのトライを実装しています - 基本的には、トライの使用に関する限りオートコンプリートです。私は、ジェネリック辞書クラスに基づいて再帰的なデータ構造を作成しました。Trie実装の質問
それは基本的にあります:
class WordTree Inherits Dictionary(of Char, WordTree)
単語内の各文字(すべての同棲上)新しいWordTrieへのキーとして使用されます。リーフのヌル文字は、単語の終了を示します。接頭辞で始まる単語を見つけるには、私の接頭辞がすべての子供の言葉を収集する限り、トライを歩きます。
私の質問は、基本的にトライ自体の実装です。辞書ハッシュ関数を使ってツリーを分岐しています。私はリストを使用し、リストの上で線形検索をするか、何か他のことをすることができます。ここで円滑な動きは何ですか?これは私の分岐を行うための合理的な方法ですか?
ありがとうございました。
更新:アプローチを分岐辞書は明らかにいくつかの他の代替に比べて劣る場合
だけ明確にする、私は基本的に求めています。私がこのデータ構造を使用しているアプリケーションでは、大文字しか使用しないので、おそらく配列のアプローチが最適です。私は、将来のより複雑な先制的な状況(より多くの文字)に同じデータ構造を使用するかもしれません。その場合、辞書が正しいアプローチであるように聞こえます。一般的にはもっと複雑なものを使う必要があります。
これはちょうどa-zですか?すなわち、国際化なし – MarkJ
はい、ちょうど26文字とヌル文字です。 – Steve
あなたはより多くのフィードバックを提供できるので、質問に完全に答えることができますか? – sfossen