三分探索木とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > 三分探索木の意味・解説 

三分探索木

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2016/08/19 19:30 UTC 版)

三分探索木(さんぶんたんさくぎ、: ternary search tree)は、トライ木の各ノードを二分探索木として表現したデータ構造である。各ノードは文字列中の文字と以下の三つの子ノードを持つ。

  • その文字の代わりに、より小さな文字を指す左ノード
  • その文字の代わりに、より大きな文字を指す右ノード
  • その文字の次の文字を指す中央ノード

他のトライ木構造と同じく、三分探索木の各ノードは格納された文字列の接頭辞に対応している。中央ノードに格納された木は、そこに至るまでのノードを共通接頭辞として持つ。

           c
         / | \
        a  u  h
        |  |  | \
        t  t  e  u
      /  / |   / |
     s  p  e  i  s

上記の三分探索木は "as", "at", "cup", "cute", "he", "i", "us" が値として格納されている。三分探索木から値を取得するには次のような操作を行う。

  1. 頂点ノードから「子に中央ノードを持たないノード」までを辿り、その経路を保存する
    1. "c-a-t-s"
    2. "c-a-t"
    3. "c-u-t-p"
    4. "c-u-t-e"
    5. "c-h-e"
    6. "c-h-u-i"
    7. "c-h-u-s"
  2. それらの経路に対して頂点から順に、子が中央ノードでなければ自身の文字を消す
    1. "a-s"
      1. "c-a-t-s" の "c" に対して "a" は左ノードで繋がっているので "c" を消す
      2. "a-t-s" の "a" に対して "t" は中央ノードで繋がっているので "a" を残す
      3. "a-t-s" の "t" に対して "s" は左ノードで繋がっているので "t" を消す
      4. "a-s" の "s" は終端ノードなので残す
    2. "a-t"
    3. "c-u-p"
    4. "c-u-t-e"
    5. "h-e"
    6. "i"
    7. "u-s"

このようにして、三分探索木から値を取得できる。

なお、値として "cute" と "cut" を含む(他の値の部分文字列であるような値を含む)ような三分探索木は、終端文字を表すノードを用いることで表現できる。上記の例に値 "cut" を追加した場合の例を以下に示す(ここでは終端文字を # と表している)。

           c
         / | \
        a  u  h
        |  |  | \
        t  t  e  u
      /  / |   / |
     s  p  e  i  s
         /
        #

二分探索木と同様、三分探索木を平衡させることも可能である。長さmの文字列を、要素nを格納した平衡三分探索木から探索するのに必要な文字比較はたかだかm + log2nである。比較が文字列ではなく文字である点に注意されたい。

トライ木おける基数木と同様なやり方で、余計なノードをまとめて三分探索木を圧縮することも可能である。例えば上記の最初の例では、 "cu", "te", "he" および "us" は一つのノードに圧縮できる。

関連項目

参考文献

外部リンク



このページでは「ウィキペディア」から三分探索木を検索した結果を表示しています。
Weblioに収録されているすべての辞書から三分探索木を検索する場合は、下記のリンクをクリックしてください。
 全ての辞書から三分探索木 を検索

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

辞書ショートカット

すべての辞書の索引

「三分探索木」の関連用語

三分探索木のお隣キーワード
検索ランキング

   

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



三分探索木のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

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

©2025 GRAS Group, Inc.RSS