【问题标题】:How to split a graph to minimise the length of the longest path如何拆分图以最小化最长路径的长度
【发布时间】:2015-12-30 10:06:22
【问题描述】:

给定一个图和一个数字 n,是否有一种算法可以通过删除n 边来分割图,以最小化最长路径/直径的长度?

例如,如果我有以下图表:

A - B - C - D 
      \ E - F

而 n = 2,你会想要在以下之间切割图表:

  • B 和 C
  • B 和 E

所以没有路径会长于 2。如果图是树/无环无向图,这是否也会有所不同?

EDIT1:通过树/非循环无向图改变重组图

【问题讨论】:

  • 什么是非重组图?
  • 您首先必须检查图形是否可以通过将其切割 n 次来拆分。这取决于它的边缘连接程度。假设它不大于​​n,这意味着可以通过删除n条边将图拆分为至少两个分量。
  • 你的意思是,为了得到最小长度最长的路径,需要去除哪 n 条边?
  • 你说得对,我编辑了问题,如果我的措辞不正确,请随时编辑
  • 计算机科学领域的same question

标签: algorithm graph-algorithm


【解决方案1】:

对于无环图的特定情况(我假设这就是您所说的“非重组”),您可以执行以下操作:

  1. 运行Topological Sorting算法对节点进行排序。

  2. 运行动态规划来解决您的问题。递归将是最小化(美国英语!)从节点 0 到节点 i 的最长分支,使用 j 切割。

【讨论】:

  • 酷让我尝试实现这一点,从来没有这样做过。
  • 进行递归时,存储结果会占用大量空间,因为在每个节点上,我应该选择放置一个切割并使用j-1 切割运行递归,或者不使用用 j 切割切割。对吗?
  • 所需空间与节点数乘以n成正比。这是因为,从概念上讲,您需要填写一个矩阵来描述直到每个节点的某些东西(最大路径长度),因为您已经使用了 n 个切割(DP 只是一种有效的方法填写此矩阵)。那是“很多”吗?
  • 如果我错了,请纠正我,但每当你将问题划分为子问题时,你必须确保削减的总数等于输入,因此你需要存储多个案例。例如,这与确定最长路径不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-02
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 2021-09-21
  • 1970-01-01
相关资源
最近更新 更多