【问题标题】:Split a tree into equal parts by deleting an edge通过删除边将树分成相等的部分
【发布时间】:2012-01-05 20:55:15
【问题描述】:

我正在寻找一种算法,通过从中删除一条边来拆分具有 N 个节点(每个节点的最大度数为 3)的树,以便结果中的两棵树尽可能接近N/2。如何找到“最居中”的边缘?

树作为算法前一阶段的输入,并作为图输入 - 所以它不平衡,也不清楚哪个节点是根。

我的想法是在树中找到最长的路径,然后选择最长路径中间的边。有用吗?

最理想的情况是,我正在寻找一种解决方案,可以确保两棵树的节点数都不超过 2N / 3 个。

感谢您的回答。

【问题讨论】:

  • 如果您没有关于树的布局平衡的数据,您可以从退化树开始(例如,左臂为 100,右臂为 50),最终得到 50/100事后分道扬镳。
  • 是的,但是采用长度为 150 的最长路径并采用中间边缘(路径上的第 75 或第 76)会将其分成相等的部分。问题是这样的最优优势是否会一直存在(我不这么认为)。
  • 简并树基本上是一个链表。例如唯一有两个孩子的节点是根节点。因此,您将有两条从根部穿过树的路径。左边有 100 个线性节点,右边有 50 个。拆分最长的路径(100 个节点分支)会将 100 拆分为 50/50,加上右分支中的剩余部分,因此您已经将树从 100 /50 到 50/100。
  • 对不起,我想你误会了。输入实际上是一个带有非定向边的图,这意味着我打算找到的最长路径是“两个节点之间的最大可能距离”。在一般图中找到最长的路径是 NP 完全的。但是输出图的算法是这样设计的,输出图总是一棵树(不是树数据结构,而是树图)。
  • 我不相信你的算法有效。考虑一个完全平衡的三叉树,它有一长串节点进入根。在这种情况下,取最长的路径并在中间点切割会给你完整的三叉树和一个简单的链表。树中的节点将比链表多得多。

标签: algorithm tree graph-theory split longest-path


【解决方案1】:

由于我在 cmets 中提到的原因,我不认为您的初始算法有效。但是,我认为您可以使用修改后的 DFS 在 O(n) 时间和空间内解决这个问题。

首先遍历图表,计算总共有多少个节点;叫这个名词。现在,选择一个任意节点并将树作为根节点。我们现在将从根开始递归地探索树,并为每个子树计算每个子树中有多少个节点。这可以使用简单的递归来完成:

  • 如果当前节点为null,则返回0。
  • 否则:
    • 对于每个孩子,计算以该孩子为根的子树中的节点数。
    • 返回 1 + 所有子子树的节点总数

此时,我们知道对于每条边,通过删除该边将得到什么分割,因为如果该边下方的子树中有 k 个节点,则溢出的将是 (k, n - k)。因此,您可以通过遍历所有节点并寻找最均匀地平衡 (k, n - k) 的节点来找到最佳切割。

计算节点需要 O(n) 时间,并且运行递归最多访问每个节点和边缘 O(1) 次,因此也需要 O(n) 时间。对于 O(n) 的净运行时间,找到最佳切割需要额外的 O(n) 时间。由于我们需要存储子树节点数,所以我们也需要 O(n) 内存。

希望这会有所帮助!

【讨论】:

  • 你根本找不到任何算法来做到这一点。
  • @SaeedAmiri- 抱歉,您能详细说明一下吗?
  • 是的,这会起作用。谢谢。我正在考虑计算边缘一侧和另一侧的节点,但一个简单的方法是 O(n^2)。你的算法是线性的,这很棒。再次感谢。
  • 非常好的算法。备注:第一部分计算顶点数是不必要的,因为在第二部分完成后,我们还有树中的顶点数。
【解决方案2】:

如果您看到我对Divide-And-Conquer Algorithm for Trees 的回答,您可以看到我会找到一个将树划分为 2 个几乎相等大小的树的节点(自下而上算法),现在您只需选择该节点的一条边做你想做的事。

假设您有一棵完整的二叉树,您当前的方法不起作用,现在将长度为 3*log n 的路径添加到其中一个叶子(将其命名为 bad 叶子),您的最长路径将在其他叶子之一内到连接到此bad 叶的路径的末尾,并且您的中间边缘将在此路径内(实际上是在您通过坏叶之后),如果您在此边缘上划分基础,您将拥有O(log n) 的一部分和另一部分大小为O(n)

【讨论】:

    猜你喜欢
    • 2011-07-19
    • 2015-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-04
    • 2011-02-15
    相关资源
    最近更新 更多