トライ (データ構造) 整数を格納するトライ木

トライ (データ構造)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/01/06 14:51 UTC 版)

整数を格納するトライ木

二分トライ木

二分トライ木: binary trie)やビット単位トライ木: bitwise trie)とは、整数を格納するトライ木で、上位ビットから 0 また 1 で左右に分岐する[5]

高速化のためのテクニックとして、下記の2つの方法が使える。

  1. 葉ノードは子が無く、子を指すポインタが空くので、葉ノード同士を双方向連結リストでつないでしまう。前後のノードを O(1) でたどれるようになる。
  2. jumpポインタをノードに付け、一気に葉ノードまでジャンプする。

x-高速トライ木

x高速トライ木の例。1 (0012), 4 (1002), 5 (1012)を格納する。青い矢印はdescendant pointerを表す。ノード(01)が無く、ノード(0)を見ることでpredecessor(0112) = 1であることがわかる。

x-高速トライ木: x-fast trie)は、検索キーとして与えられた整数以上(以下)の値をもつ、キーに最も近い葉ノードを得る操作(successor, predecessor)を高速にできるようにした二分トライ木のバリエーションである。通常の二分トライ木との相違点は、階層高さごとのハッシュテーブル、葉ノード同士の双方向連結リスト、中間ノードが子ノードを0側(1側)のひとつしか持たない時に格納される、その中間ノード下で最大(最小)値をもつ葉ノードへのリンク(descendant pointer)を持つことである。[6]。階層にたいして二分探索をおこなうことで、木に格納する整数のビット数 w に対し、Successor, Predecessorの時間計算量がO(log w)となる。1982年に Dan E. Willard が発表した[7]

y-高速トライ木

y-高速トライ木: y-fast trie)とは、格納する整数が w ビットの時、x-fast trie に全体の 1/w だけしか格納せず、残りを Treap などの平衡2分探索木に O(w) 個ずつに分けて入れる[8]。これにより全体の空間計算量が、実際に木に格納されたデータの数 n に対し O(n) となり、x-高速トライ木より改善する。また、追加・削除の時間計算量が O(log w) になる。1982年に Dan E. Willard が x-fast trie と同時に発表した[7]


  1. ^ Jun-ichi Aoe (1989). “An Efficient Digital Search Algorithm by Using a Double-Array Structure”. IEEE Transactions on Software Engineering 15 (9): 1066-1077. 
  2. ^ Stephen C. Johnson (1975). “YACC-Yet another compiler-compiler”. Computing Science Technical Report 32: 1-34. 
  3. ^ A.V. エイホ; R. セシィ; J.D. ウルマン; M.S. ラム (2009). コンパイラ―原理・技法・ツール (Information & Computing). ISBN 978-4781912295 
  4. ^ An Implementation of Double-Array Trie
  5. ^ 13.1 BinaryTrie: A digital search tree
  6. ^ Bose, Prosenjit; Douïeb, Karim; Dujmović, Vida; Howat, John; Morin, Pat (2010), Fast Local Searches and Updates in Bounded Universes, Proceedings of the 22nd Canadian Conference on Computational Geometry (CCCG2010), pp. 261–264, http://cccg.ca/proceedings/2010/paper69.pdf 
  7. ^ a b Willard, Dan E. (1983). “Log-logarithmic worst-case range queries are possible in space Θ(N)”. Information Processing Letters (Elsevier) 17 (2): 81–84. doi:10.1016/0020-0190(83)90075-3. ISSN 0020-0190. 
  8. ^ 13.3 YFastTrie: A Doubly-Logarithmic Time SSet


「トライ (データ構造)」の続きの解説一覧



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「トライ (データ構造)」の関連用語

トライ (データ構造)のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



トライ (データ構造)のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのトライ (データ構造) (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2024 GRAS Group, Inc.RSS