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

Algorithm 无向图的平衡生成树(T),algorithm,graph,tree,Algorithm,Graph,Tree,我已经连接了无向图。 我正在寻找构造图的平衡生成树(T)的方法 关于平衡生成树,我可以定义如下: 如果树的根是r.All 节点可以划分为 级别,即 距离r(T)的距离为j 在Lj等级别 对于每个节点w,可以定义 T的子树T_w,使得w是它的 根 目标是定义生成树 以这样一种方式,对于每个级别 Li,对于每两个节点u和v in level Li中的节点数 T_和T_v是最大等价的 有人能为构建这种“相对”平衡的生成树提供算法建议吗 提前谢谢你。这似乎很琐碎。让G成为你的图。它是连接的,因此每对顶点

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

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

  • 如果树的根是r.All 节点可以划分为 级别,即 距离r(T)的距离为j 在Lj等级别
  • 对于每个节点w,可以定义 T的子树T_w,使得w是它的 根
  • 目标是定义生成树 以这样一种方式,对于每个级别 Li,对于每两个节点u和v in level Li中的节点数 T_和T_v是最大等价的
  • 有人能为构建这种“相对”平衡的生成树提供算法建议吗


    提前谢谢你。

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


    由此产生的图形——称之为U表示“更新的G”——通过构造具有与G'相同的顶点数,并且通过构造,当相应的边存在于G'中时,U中存在一条边。因此,U=G’,因此U是一个平衡的生成树。

    我不确定你的表达式“最大等价”

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


    一般来说,这个问题似乎是NP完全问题。如果幸运的话,一些贪婪的方法可能会导致常数近似算法。

    您希望将树构造为一个

    您可以从上找到用于实现它的其他信息和代码


    有一些漂亮的图片来帮助解释发生了什么,还包括一个AVL树数据类型的Java实现。

    边的权重是否相等?如果不是,应该如何处理不同的权重?该图被称为连接但不完整:对于每对顶点,存在一条从一个到另一个的路径,但这两个顶点不必通过边连接。因此,建议的算法将不起作用:G'中可能存在G'中没有相应边的边。AVL树不适用于此问题。即使初始的不平衡树可能构造得很简单,但一旦涉及AVL树的重新平衡过程,它将破坏生成树属性。@Arjen Kruithof:其思想是在将图形转换为树时不断重新调整哪个节点被视为根节点。它需要对标准AVL树进行一些修改,因为AVL树是二进制的,并且生成树在每个节点上可以有多条(三条以上)边。