algorithm - 计算最小可能的树

标签 algorithm language-agnostic tree

给定一组节点,我如何构造一棵树,以最小化max(max(degree), max(depth))的方式将所有节点连接在一起?

例如,给定一组五个节点,我可以像这样连接它们:

max(degree) = 4, max(depth) = 1

但是,这不是最小值,因为 max(degree) == 4 和 max(depth) == 1,更好的树应该是:

max(degree) = 2, max(depth) = 2

它有 max(degree) == 2 和 max(depth) == 2

编辑:算法不一定要快,但计算出绝对最优的树很重要。

最佳答案

从相反的方向走。给定度数和深度,最大节点数是总和 = 1 + 度数 + 度数^2 + ... + 度数^深度。这是整数序列 A031973 .您可以每次都计算它,或者只存储第一剂量的值。无论哪种情况,您都搜索大于节点数的最小值,并找出相应的 D=degree=depth

当你知道你的 D 时,就可以按照你喜欢的方式填充树,关于它的边界。

关于algorithm - 计算最小可能的树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3996783/

相关文章:

language-agnostic - 能做到100%解耦吗?

algorithm - 优于 O(log(N)) 以 2 为底的情况

algorithm - Minimax 的 Alpha-beta 剪枝

具有流式更新的 Java Swing 树

c - 修改二叉树

c - 字符串中的 Booth 算法

javascript - 从约束列表中生成所有可能的对象

c++ - 径向树布局算法

java - java写并行算法时 "serial thread-confinement"是什么意思?

algorithm - 确定两个随机数生成器之间的相似性