algorithm - 证明具有n个元素的二叉堆中二叉树的数量至多为O(log n)

标签 algorithm tree heap computer-science binomial-heap

我无法为这个陈述找到一个很好的证明。我知道如何确定二叉树的数量是通过使用 n 的二进制表示来确定的。 比如13个元素二进制为1101,2^{3}+2^{2}+2^{0} 所以需要3棵二叉树,ln(13) + 1 = 3.56 > 3

我只是不知道如何证明它受 log(n) 的限制。总的来说,我在涉及 log(n) 的算法中纠结于许多概念

有人可以提供此声明的简洁明了的证明吗?

最佳答案

如果所需的二叉树的数量由 n 的二进制表示中 1 的数量给出,则 1 的数量受限于二进制数字的数量,最多为 (lg n) + 1(其中lg n 是以 2 为底的对数,即 lg n = ln(n)/ln(2))。所以这将给出 O(log n) 的大 O 界。

关于algorithm - 证明具有n个元素的二叉堆中二叉树的数量至多为O(log n),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21858490/

相关文章:

python - 如何构造一个适合 numpy 排序的数组?

C++ 泛型插入排序

java - 将二叉树转换为 List<List<Node>>

java - 如何检查最大堆子级以找出哪个更大

algorithm - 堆插入、删除k个元素

c# - 计算堆排序对数组进行排序所需的步骤数

algorithm - 两个排序列表相交的最快算法是什么?

java - 较短版本的计算

c# - 字典的大小

algorithm - 树标记算法的复杂性