algorithm - 估计一棵树的大小

标签 algorithm math tree graph

我想估计我无法详尽访问每个节点的大型树结构中的叶子数。这个算法合适吗?它有名字吗?另外,如果我使用任何术语不当,请学究。

sum_trials = 0
num_trials = 0
WHILE time_is_not_up
    bits = 0
    ptr = tree.root
    WHILE count(ptr.children) > 0
         bits += log2(count(ptr.children))
         ptr = ptr.children[rand()%count(ptr.children)]
    sum_trials += bits
    num_trials++
estimated_tree_size = 2^(sum_trials/num_trials)

最佳答案

如果您可以对您的树做出一些安全假设(例如:它是否平衡?)及其用法(是否有关于有多少叶子将成为同一节点的子节点的安全假设?),这可能是可能的。更好的是,如果您每次添加/删除叶节点时都保持运行计数(计数器)。然后您只需在一个操作中访问您的计数器变量。

关于algorithm - 估计一棵树的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2789418/

相关文章:

javascript - 为对象元素分配随机值

java - 使递归函数迭代

c - 整数除法的行为是什么?

jquery - 使用 jQuery 从 JSON 对象创建树表

c++ - 查找父节点在二叉树中的位置

algorithm - 具有最大尾随零位数的区间中的整数

algorithm - Haskell 中 sortBy 的复杂性

algorithm - 确定分发这些优惠券的最佳方式的算法是什么?

java - 为什么 Java 6 Arrays#sort(Object[]) 从合并排序更改为小数组的插入排序?

algorithm - 最小生成树的预序遍历