私はVB.NETで予測テキスト入力用のトライを実装しています-トライの使用に関する限り、基本的にオートコンプリートです。汎用辞書クラスに基づいて、トライを再帰的なデータ構造にしました。
それは基本的に:
class WordTree Inherits Dictionary(of Char, WordTree)
単語内の各文字(すべて大文字)は、新しいWordTrieのキーとして使用されます。リーフのヌル文字は、単語の終了を示します。接頭辞で始まる単語を見つけるために、接頭辞が尽きるまでトライを歩き、すべての子の単語を収集します。
私の質問は基本的にトライ自体の実装についてです。辞書ハッシュ関数を使用してツリーを分岐しています。リストを使用してリストを線形検索するか、他のことを行うことができます。ここでのスムーズな動きは何ですか?これは私の分岐を行うための合理的な方法ですか?
ありがとう。
アップデート:
明確にするために、私は基本的に、辞書の分岐アプローチが他の方法よりも明らかに劣っているかどうかを尋ねています。このデータ構造を使用しているアプリケーションでは大文字のみを使用しているため、配列アプローチが最適な場合があります。将来、より複雑な先行入力状況(より多くの文字)に同じデータ構造を使用する可能性があります。その場合、辞書が正しいアプローチのように思えます。一般的にもっと複雑なものを使用する必要があるところまでです。