trie
トライ木
名詞
複数形: tries
trieは、特に文字列の検索やオートコンプリート機能を実装する際に非常に強力なデータ構造です。一般的なハッシュテーブルとは異なり、共通の接頭辞を持つ文字列を効率的に共有して格納するため、メモリの節約と高速な前方一致検索を同時に実現できます。
検索効率と特性
この構造の最大の特徴は、検索時間がデータセット全体のサイズではなく、検索しようとしている文字列の長さにのみ依存することです。そのため、膨大な量の単語を格納していても、短い単語の検索は極めて高速に行われます。一方で、単純な二分探索木などの構造に比べて、実装が複雑になりやすく、メモリ消費量が増加する場合がある点に注意が必要です。
実用的な活用シーンtrieは以下のような機能の実装に最適です。
検索エンジンのサジェスト機能(入力中の文字から候補を提示する)
スペルチェッカー(辞書にある単語かどうかを判定する)
IPルーティングの最長一致検索
例えば、appleとapplyという二つの単語を格納する場合、applまでの部分は共通のパスとして共有され、最後の文字で分岐します。これにより、接頭辞に基づいた効率的な管理が可能になります。
意味
関連語
algorithmdata structurenodeedgerootleafprefixstringcharacteralphabetsearchinsertiondeletiontraversalrecursioncomplexitytime complexityspace complexitydictionarylexiconrouting tableIP addressbinary treehash tableheapstackqueuepointermemoryallocationoptimizationpattern matchingwildcardsortinglexicographicaldepth first searchbreadth first searchpathbitbyteencodingUTF-8ASCIIcompressionlookupretrievalindexingdatabasecompilerparsertokenizationautomatonstate machinegraph theoryadjacency listadjacency matrixlinked listarraypointer arithmeticdynamic programming