現在、基数ツリー/パトリシア トライを実装しています (名前は何でも構いません)。非常に能力の低いハードウェアで辞書のプレフィックス検索に使用したいと考えています。多かれ少なかれオートコンプリートのように機能するはずです。つまり、入力されたプレフィックスが一致する単語のリストを表示します。
私の実装はこの記事に基づいていますが、そのコードにはプレフィックス検索が含まれていませんが、著者は次のように述べています。
[...] 共通のプレフィックス「AB」を持つキーを持つすべてのノードを列挙したいとします。そのルートから開始して、バック エッジに遭遇するたびに停止する深さ優先検索を実行できます。
しかし、それがどのように機能するのかわかりません。たとえば、次の単語から基数ツリーを構築するとします。
病気
想像上の
想像力
想像する
模倣
すぐ
に すぐ に
巨大
接頭辞「i」と「in」に対してまったく同じ「ベストマッチ」を取得するため、そのベストマッチからツリーをトラバースするだけで、一致するすべての単語を収集するのは難しいようです。
さらに、Java には基数ツリーの実装があり、 RadixTreeImpl.javaにプレフィックス検索が実装されています。そのコードは、すべてのノード (特定のノードから始まる) を明示的にチェックして、プレフィックスの一致を確認します。実際にはバイトを比較します。
基数ツリーでのプレフィックス検索の実装に関する詳細な説明を誰かに教えてもらえますか? Java 実装で使用されるアルゴリズムは、それを行う唯一の方法ですか?