nノードを持つバイナリヒープが正確に⌈ n/2 ⌉リーフノードであることを証明しますか?nノードのバイナリヒープにceil(n/2)の葉があることをどのように証明しますか?
2
A
答えて
1
これについての直感は、これを誘導的に考えることです。 n = 0の場合、葉はなく、n = 1の場合、根は唯一の葉である。その後に追加された各ノードについて、(1)以前にリーフであったノードに子を追加し、リーフノードの数を変更しないで1つの子を持つ、または(2)既に存在するノードに子を追加する1人の子供が、葉の数を1つ増やします。帰納法を使用すると、これを形式化して、バイナリヒープの葉数が⌈ n/2 ⌉であることを証明できます。
2
Let x be the height of tree in which case 2^x = no of leaves
=> 2^0 + 2^1+ 2^2 + 2^3 +...2^x = n
=> 2^(x+1) - 1 = n (By sum series power of 2 formula)
=>2^(x+1)= n+1
=> log(n+1) = x+1
=>log(n+1)-1 = x;
=>log(n+1)- log2 =x
x =log(n+1/2)
=> no of leaves = (n+1)/2 (which is 2^(log(n+1/2))
0
0-level
1-level
...
d-level // Total 2^d nodes at this level. #ofLeafNodes at this level depends on how many nodes are there at below level.
last-level-containing-X-nodes // All leaf nodes
リーフノードは、最後の二つのレベルからのみ来ることができるように、我々はn
ノードを持っているとしましょう。
最終レベルはx
リーフノードです。 最後の2番目のレベルは合計2^d個のノードと⌈ x/2 ⌉のリーフノードを持ちます。
したがって、総リーフノードに=バイナリヒープツリー内
= (Leaf nodes at bottom-most level) + (Leaf nodes at second bottom-most level)
= (x + (2^d - ⌈x/2⌉)) //Equation 1
合計ノードは=>
n = (2^(d + 1) - 1) + x
2*(2^d) = n-x+1
2^d = (n-x+1)/2
次に、上記EQ#1に2^d
を代入
(x + (2^d - ⌈x/2⌉))
=(x + (n-x+1)/2 - ⌈x/2⌉)
= n/2 + x/2 + 1/2 - ⌈x/2⌉
でも
n
については
、x
が奇数になります:奇数n
については
= n/2 + x/2 + 1/2 - (x/2 + 1/2)
= n/2 + x/2 + 1/2 - x/2 - 1/2
= n/2
= ⌈n/2⌉ /*Since n is even*/
、x
はさらに次のようになります。
= n/2 + x/2 + 1/2 - (x/2 + 1/2)
= n/2 + x/2 + 1/2 - x/2
= n/2 + 1/2
= ⌈n/2⌉
関連する問題
- 1. nlog_2(n)がO(n^1.01)であることをどのように証明できますか?
- 2. ペナルティを伴うジョブスケジューリング問題がNPにあることをどのように証明できますか?
- 3. scala.math.BigDecimalのceil関数はどこにありますか?
- 4. Coq:nと(S n)の積が偶数であることを証明する
- 5. どのようにして証明書を持たないクライアント認証証明書が必要なウェブサイトに接続することができますか?
- 6. C++ 11標準では、 "auto n2 = const_cast <int &>(n);"で "n2 is int&"を保証していますか?
- 7. \ Omega {(n(logn)^ k)}という下限をどのように証明できますか? [k> 1]
- 8. Xcodeでアーカイブを検証しようとしています - どの証明書がありませんか?
- 9. FloorとCeilがpython3.xの最も近い整数にどのように値を設定しますか?
- 10. どのようにデジタル証明書のSSLを検証しますか?
- 11. 関数にceilがあるときに漸近的複雑さを見つけるには? (2 ^(2^ceil(log2(n)))))= O(2^n)?
- 12. glibcでの数学関数ceil()のソースコードはどこにありますか?
- 13. MMC証明書スナップインは「サービスアカウント」の証明書をどこにインポートしますか?
- 14. Jettyのキーストアに複数の証明書がある場合、どのように選択しますか?
- 15. "エンタープライズ"環境でN2 CMSをどのように設定しますか?
- 16. ノードの位置を配列で検索する(バイナリヒープとして)
- 17. Pythonの葉ノードでネストされたdictがFalseであるかどうかを確認します
- 18. 任意のn> 3に対して、ボロノイ図(P)のセルの1つにn-1個の頂点があるように、平面内にn個のポイントサイトの集合があることを証明してください。
- 19. どのように私は(1)ラクダの言葉を切ることができますか?
- 20. kがサブセット合計でO(n^k)に対して定数であるかどうかをどのように知ることができますか?
- 21. SSL証明書はページのランキングにどのように影響しますか?
- 22. どのようにAJAXフォーム認証を行うことができますか?
- 23. 証明のn^2 - 4N =ビッグシータ(2^n)の
- 24. RabbitMQ SSLの問題 - 証明書のパスはどのようにする必要がありますか?
- 25. [n&1]と[n%2]はどのように機能しますか?
- 26. カスタムOpenAM認証はどのようにすることができますか?
- 27. 誰かがこの機能がlaymansの言葉でどのように機能するのか説明できますか?
- 28. この検証をどのようにして再検証できますか?
- 29. クラスを追加することをどのように証明できますか?
- 30. スマートカードのセキュリティ、どのように証明書を偽物ではないと認証しますか?
私は理解しません。私はNが3(3ノード)であると思うので、1つのルートと2つのリーフがあります。ではない? –
はい!そしてceil(3/2)= 2。 – templatetypedef