2分探索木によつ裁量及び最悪計算量とはつまりなんですか?

google-deepmind-37x7-sBhwf8-unsplash.jpg

質問

2分探索木によつ裁量及び最悪計算量とはつまりなんですか?
具体例を示してください。


解答

とてもよい質問です。
「2分探索木(Binary Search Tree)」の最良・最悪計算量について、
まずはやさしく仕組みから説明し、その後に具体例を示します。


✅ そもそも「2分探索木(BST)」とは?

以下のようなルールでデータを木構造に並べたものです:

  • 各ノードに値がある

  • 左の子ノードは親より小さい

  • 右の子ノードは親より大きい


✅ 目的:検索・挿入・削除などを高速化したい

リストや配列だと、検索に O(n) かかることがありますが、
2分探索木を使えば効率化できます。


✅ 最良・最悪計算量とは?

操作ごとの時間(計算の速さ)をノード数 n に対して表したものです。

操作最良(平均)計算量最悪計算量
探索O(log n)O(n)
挿入O(log n)O(n)
削除O(log n)O(n)

✅ 最良と最悪がなぜ違うの?

● 最良(= 平衡な木の場合)

木の高さが小さいので、上から下へたどる回数が少ない
log₂(n) 回くらいで済む(たとえば 1024個なら約10回)

→ 計算量は O(log n)


● 最悪(= 偏った木の場合)

たとえば、小さい順に挿入した場合:

1 \  2   \    3     \      4       \        5

→ これはほぼただのリストになっていて、検索に毎回1歩ずつたどる必要がある
→ 計算量は O(n)


✅ 具体例で理解

1. 最良ケース(バランスのよい木)

データ:3, 1, 5, 0, 2, 4, 6 を挿入すると…

      3     / \    1   5   / \ / \  0  2 4  6
  • 高さ:3

  • 検索回数は最大でも3回 → O(log n)


2. 最悪ケース(昇順で挿入)

データ:1, 2, 3, 4, 5, 6 を順に挿入すると…

1 \  2   \    3     \      4       \        5         \          6
  • 高さ:6(ノード数と同じ)

  • 検索回数は最大6回 → O(n)


✅ 補足:最悪を避ける方法はある?

あります。それが 「自己平衡木」(AVL木やRed-Black Treeなど)です。
これらは木の高さを自動で調整するので、常に O(log n) を維持します。


✅ まとめ

状態計算量説明
最良・平均O(log n)木の高さが低くてバランスが良い
最悪O(n)木が片側に偏ってリスト状になる
解決策AVL木やRed-Black Treeなど、自己平衡木を使う 




ゲームで学ぶ探索アルゴリズム実践入門〜木探索とメタヒューリスティクス [ 青木 栄太 ]

価格:2992円
(2025/7/14 14:04時点)
感想(0件)


【新品】HAGIWARA SYS-COM HNT-DDRW-R ハギワラシスコム マイクロSD専用 ドコモダケカードリーダー

価格:980円
(2024/11/30 11:07時点)
感想(0件)


 



この記事へのコメント

広告です。クリックいただけると励みになります。