━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ データ構造・アルゴリズム論 確認問題9 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
●問 (2-3-4木の基本操作) 次の 2-3-4 木に 7, 10, 0 の順で要素を挿入したときの木の変化を, 1要素の挿入ごとに図示せよ.ただし,2-3-4木の操作のアルゴリズムは, 授業で説明されたものを使うこと. (4,6) / | \ (1,2,3) (5) (8,9) ────────────────────────────────────── ●答 (2-3-4木の基本操作) 各要素を挿入したときの 2-3-4 木の変化を次に示す. 挿入前 (4,6) / | \ (1,2,3) (5) (8,9) 7 の挿入後 (4,6) / | \ (1,2,3) (5) (7,8,9) 10 の挿入後 (4,6,8) / | | \ (1,2,3) (5)(7) (9,10) 0 の挿入後 (6) / \ (2,4) (8) / | \ / \ (0,1) (3) (5) (7) (9,10) [解説] 7 探索の失敗位置の葉 (8,9) が2要素以下なので,この葉に挿入する. 10 の探索時に3要素の頂点 (7,8,9) を訪れるので,中央値 8 を親 (4,6) へ 挿入し,残りを (7) と (9) へ分割してから,探索の失敗位置の葉 (9) へ挿入する. 0 の探索時には3要素の根 (4,6,8) と頂点 (1,2,3) を通るので,どちらも挿入前に 分割する.授業で解説されたアルゴリズムでは,探索時に通る3要素の頂点すべてを, 挿入前の通りがけに分割することに注意する. 参考までに,上記の2-3-4木への挿入に対応する2色木への挿入の結果を以下に示す. ただし,2-3-4木に対応する2色木は複数あるので,2色木への挿入アルゴリズムとして 授業で解説されたものを使った実行結果を示す.また,フォントの都合上, 2種類の辺を区別する代わりに赤辺の入る頂点を [ ] で区別する. 挿入前 6 / \ [4] 9 / \ / 2 5 [8] / \ [1] [3] 7 の挿入後 6 / \ [4] 8 / \ / \ 2 5 [7] [9] / \ [1] [3] 10 の挿入後 6 / \ [4] [8] / \ / \ 2 5 7 9 / \ \ [1] [3] [10] 0 の挿入後 6 / \ 4 8 / \ / \ [2] 5 7 9 / \ \ 1 3 [10] / [0] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 授業のホームページ 山田 俊行 https://www.cs.info.mie-u.ac.jp/~toshi/