(Translated by https://www.hiragana.jp/)
2-3木 - Wikipedia

2-3(2-3き、えい: 2-3 tree)とは計算けいさん科学かがくにおけるデータ構造こうぞうとく平衡へいこう(balanced tree)にぞくする構造こうぞう一種いっしゅである。

2-3すべての要素ようそつパターン)

2-3後述こうじゅつするよう要素ようそかたかんして文献ぶんけんによってちがいがあるが、共通きょうつうする定義ていぎとして、

  • すべての内部ないぶノードは 2か3の子供こどもつ(1つ、または4つ以上いじょう子供こどもおや存在そんざいしない)
  • すべてのからの距離きょりひとしい(平衡へいこう
  • 内部ないぶノードは1つか2つのキーをつ。
  • 1つのキーをつノードは2ふん探索たんさく同様どうように、そのキーよりちいさい子供こどもひだりおおきい子供こどもみぎ格納かくのうしている。
  • 2つのキー(a, bで a < b とする)をつノードは、a よりちいさい子供こどもひだりに、a よりおおきく b よりちいさい子供こどもなかに、b よりおおきい子供こどもみぎ配置はいちする。

という構造こうぞうである。2-3とく要素ようそかたかんしては文献ぶんけんによってちがいがあり、おおきくけてふたつのパターンがある。ひとつはすべてのひとつだけ要素ようそち、内部ないぶノードのキーは要素ようそとならない(すなわちすべての要素ようそ格納かくのうされる)パターンである。もうひとつは内部ないぶノードのキー自体じたい要素ようそであり、も2つの要素ようそつことができるパターンである。後者こうしゃのパターンはとくにオーダーを 3にしたB操作そうさ同様どうようであり、このパターンをして2ふんB(BB; Binary B-tree)というかたをすることもある。このこうでも便宜上べんぎじょう、2-3場合ばあいおも前者ぜんしゃのパターンをし、後者こうしゃのパターンはBBぶことにする。なお前者ぜんしゃのパターンの2-3場合ばあい内部ないぶノードのキーと一致いっちした場合ばあいはどの子供こども検索けんさくするかを、あらかじめめておく必要ひつようがある(以降いこうのパターンではおな場合ばあい、よりみぎ子供こども検索けんさくするとする)。

検索けんさく

編集へんしゅう

2-3検索けんさく以下いかのようにおこなわれる。

  1. 対象たいしょうノードとして検索けんさく開始かいしする
  2. 検索けんさく対象たいしょうのノードがであり、検索けんさく一致いっちするなら検索けんさく成功せいこうとして終了しゅうりょう検索けんさく一致いっちしないなら登録とうろくされていないものとして終了しゅうりょうする
  3. 検索けんさく対象たいしょう内部ないぶノードのキーがひとつの場合ばあい検索けんさくがキーよりちいさいならひだりおおきいならみぎのノードをつぎ対象たいしょうとする。
  4. 検索けんさく対象たいしょう内部ないぶノードのキーがふたつの場合ばあい検索けんさく2つのキーどちらよりもちいさいならひだりへ、片方かたがたのキーよりおおきくもう片方かたがたのキーよりちいさいならなかへ、どちらよりもおおきい場合ばあいみぎのノードをつぎ対象たいしょうとする
  5. 2.以下いかかえす。

BB場合ばあいはこれに、内部ないぶノードのキーに一致いっちした場合ばあい検索けんさく成功せいこうとしてかえ処理しょりくわわる。2-3からまでの距離きょりすべひとしいため、要素ようそすうを N とすると検索けんさくようする実行じっこう時間じかん 2-3、BBどもO (log N)比例ひれいする。2ふん探索たんさくことなりこの時間じかんは、データの順序じゅんじょによって劣化れっかすることはない。

挿入そうにゅう

編集へんしゅう
 
要素ようそ追加ついかによって分割ぶんかつされる様子ようす

挿入そうにゅう操作そうさは2-3場合ばあい具体ぐたいてきには以下いかのようになる。

  1. 検索けんさく同様どうよう操作そうさおこなってひとじょうおや検索けんさくする。
  2. そのおや挿入そうにゅう挿入そうにゅうする。
  3. もし、挿入そうにゅう挿入そうにゅうした場合ばあいに、子供こどもが3つになった場合ばあいは、おやのキーを変更へんこうする。キーのなか子供こどもと、一番いちばんみぎ子供こどもになる。
  4. もし、挿入そうにゅう挿入そうにゅうして子供こどもが 4つになった場合ばあいは、おやのノードを、子供こどもふたつもつノードふたつに分割ぶんかつする。分割ぶんかつしたおやノードのキーおよび分割ぶんかつ仕方しかた挿入そうにゅうとノードの状態じょうたいによってことなる(みぎ参照さんしょう
  5. 2以降いこう処理しょりおや分割ぶんかつおこなわれなくなるまで、かえす。

BB場合ばあい同様どうようにまず部分ぶぶん追加ついか要素ようそ追加ついかする。追加ついかする位置いちにすでに要素ようそが2つにある場合ばあい中央ちゅうおうをとり、それをおやとする2ノードを形成けいせいし、からすべての距離きょり一致いっちするようにおや分割ぶんかつと、回転かいてんおこなうことで実装じっそうされる(くわしくはB参照さんしょう)。

削除さくじょ

編集へんしゅう

削除さくじょ処理しょりは2-3とBBでかなりことなる。2-3場合ばあい以下いかようになる

  1. 削除さくじょする要素ようそおやが3つの子供こども場合ばあいは、その要素ようそ削除さくじょして、おやのキーを更新こうしんする。削除さくじょ兄弟きょうだいなかでもっともおおきい場合ばあいは、おやのキーから削除さくじょおなじキーを削除さくじょする。削除さくじょ兄弟きょうだいなかなか場合ばあいおやのキーから自分じぶん削除さくじょしてみぎ兄弟きょうだいなか移動いどうする。一番いちばんひだり場合ばあいなか兄弟きょうだいのキーを削除さくじょしてなかひだりみぎなか移動いどうする。
  2. 削除さくじょする要素ようそおやが2つの子供こども場合ばあいおや兄弟きょうだい検索けんさくする。
  3. 検索けんさくしたおや兄弟きょうだいが2つの子供こども場合ばあいおやとその兄弟きょうだいを、3つの子供こどもつ1つのおや併合へいごうする。
  4. 3.の操作そうさ併合へいごうされた場合ばあいおやのそのまたおや子供こどもかずが 2.か 3.であることを確認かくにんし、1つである場合ばあいは、2以降いこう処理しょりかえす。

BB場合ばあいはまず、削除さくじょ削除さくじょして、2-3条件じょうけんたすかを判断はんだんする。もし削除さくじょが2つの要素ようそをもつなら、その削除さくじょするだけでよい。それ以外いがい場合ばあい削除さくじょおやとの中央ちゅうおう算出さんしゅつし、もし子供こどもりなくなったらおや兄弟きょうだい併合へいごうかえすことで実装じっそうされる。

参考さんこう文献ぶんけん

編集へんしゅう
  • A.エイホJ.ホップクロフト・J.ウルマンちょ、『アルゴリズムの設計せっけい解析かいせきI』、野崎のさき昭弘あきひろ野下のげ浩平こうへいやくサイエンスしゃ、1977ねんISBN 4-7819-0279-0
  • N.ヴィルトしる、『アルゴリズムとデータ構造こうぞう』、うら昭二しょうじ国府こくぶほう久史ひさしやく近代きんだい科学かがくしゃ、1990ねんISBN 4-7649-0162-5

関連かんれん項目こうもく

編集へんしゅう