すべての葉が同じ深さであり、かつ、葉以外のすべての節点が二つの子を持つ要素数nの完全2分木がある。どの部分木をとっても左の子孫は親より小さく、右の子孫は親より大きいという関係が保たれている。2分木で探索する場合、ある要素を探索するときの最大比較回数のオーダはどれか。

【問題】

すべての葉が同じ深さであり、かつ、葉以外のすべての節点が二つの子を持つ要素数nの完全2分木がある。どの部分木をとっても左の子孫は親より小さく、右の子孫は親より大きいという関係が保たれている。2分木で探索する場合、ある要素を探索するときの最大比較回数のオーダはどれか。

ア.log2n

イ.nlog2n

ウ.n

エ.n2

【解答】

完全2分木であって、かつ左の子孫は親より小さく、右の子孫は親より大きいということは、1回の探索で対象の数を半数にすることが出来る、ということを意味する。

     5

   3   7

  1 4 6 8

たとえば4を検索する場合、最初の選択で左の3に移動するが、その時点で6,7,8を捨てることに成功している。

とすると、要素数が2の何乗になるかを考えれば、答えに辿りつくかが分かるようになるから、

2x = n

という式が成立することになる。

とすると、xに着目した場合、

log22x = log2n

x・log22 = log2n

x・1 = log2n

x = log2n

となる。よって、解答はアとなる。

この問題は、数式を理解していなくても、昇順または降順に値が並んでいる場合は、2分探索が可能→1回の検索で値を半分に減らすことが出来る、という前知識と、値を半分に減らすことの出来るオーダはlog2nで表すことが出来る、という知識があれば、そのまま答えまでたどり着くことが出来る。

↓クリックしていただけると励みになります↓
にほんブログ村 株ブログ 株日記へ にほんブログ村 メンタルヘルスブログ 統合失調症へ にほんブログ村 為替ブログ 為替日記へ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする