来自无向图的平衡生成树(T)

时间:2011-01-25 16:18:02

标签: algorithm graph tree

我连接了无向图。 我正在寻找构建图的平衡生成树(T)的方法

具体关于平衡生成树,我可以定义如下:

  1. 如果树的根是r。所有 节点可以分为 等级。即所有节点 距离r(在T中)的距离是j 在Lj等等。
  2. 对于每个节点w,可以为a定义 T的子树T_w,使得w是其 根。
  3. 目标是定义生成树 以这种方式,为每个级别 Li,每两个节点u和v in 级别Li中的节点数量 T_u和T_v最大等效。
  4. 是否有人可以建议任何算法来构建这种“相对”平衡的生成树?

    提前谢谢。

3 个答案:

答案 0 :(得分:2)

我不确定你的表达“最大等效。”

这个问题可能没有一个完美的解决方案,所以显而易见的是我们能做得多好吗?

这个问题的普遍性似乎是NP-Complete。如果你幸运的话,一些贪婪的方法可能会产生恒定的近似算法。

答案 1 :(得分:0)

这似乎是微不足道的。设G就是你的图。它是连接的,因此每对顶点之间有一条边。使用该定义,构造一个具有与G相同顶点数的任意平衡生成树G'。从G'中的 r 和任意选择的G顶点开始,将G'中的每个顶点映射到a G中的顶点。删除G中没有G'中相应边的所有边。

结果图 - 将其称为“更新的G” - 通过构造具有与G'相同的顶点数,并且通过构造,如果相应的边存在于G'中,则在U中存在边。因此U = G',因此U是平衡的生成树。

答案 2 :(得分:-2)

您希望将树构建为AVL tree

page 12 of this PDF document开始,您可以找到用于实现它的其他信息和代码。

This PowerPoint document有一些漂亮的图片可以帮助解释正在发生的事情,还包括AVL树数据类型的Java实现。