潜在的な無料/有料アプリケーションのハードウェア/ソフトウェア要件(最終的な目標はモバイルJavaアプリケーション)を検討しています。単語のリストが与えられます - javaの単語補完のための良いアルゴリズムは何でしょうか?トレードオフ:速度/効率/メモリフットプリント
アプリケーションは次の簡単な目標から開始されます。データベース内の関連する単語のリストを指定すると、単一の文字列入力で単語補完を行うことができます。
つまり、私はすでにデータベースの内容を知っていますが、アルゴリズムのメモリフットプリント/速度/検索効率によって、サポートされるデータ量が決まります。
私はサフィックスベースのツリー検索で始めましたが、この単純なアプローチのスピード/メモリサイズのトレードオフと比べて、誰かが会議で話されているより複雑なものと経験があるのだろうかと思っています。
正直なところ、最初のアプリケーションの文脈は500ワード未満であるため、問題はないかもしれませんが、最終的にはアプリケーションが数万から数十万に拡張される可能性があります。
私は単純なものから始めて、後で切り替えることができると思いますが、以前のトレードオフを理解することを願っています!
クール - ポインタありがとう!トライ法は理想的です。合理的なサイズのデータベースをカバーするには、おそらく6または8以上の深いトライを取ることはありません。このように(私が推測している)トライの各レベルへのポインタは、メモリフットプリントが基本データの2倍または3倍以上であってはならないことを意味します。 –