【问题标题】:How to minimize total cost of shortest path tree如何最小化最短路径树的总成本
【发布时间】:2010-05-08 03:43:22
【问题描述】:

我有一个具有正边权重的有向无环图。它有一个源和一组目标(离源最远的顶点)。我找到从源到每个目标的最短路径。其中一些路径重叠。我想要的是一个最短路径树,它可以最小化所有边的权重总和。

例如,考虑两个目标。在所有边权重相等的情况下,如果它们在大部分长度上共享一条最短路径,那么这比两条大多不重叠的最短路径更可取(树中的边越少,总成本就越低)。

另一个例子:两条路径在它们的一小部分长度上不重叠,非重叠路径的成本高,但长共享路径的成本低(组合成本低)。另一方面,两条路径在其大部分长度上不重叠,非重叠路径的成本低,但短共享路径的成本高(组合成本也低)。有很多组合。考虑到从源到目标的所有最短路径,我想找到总成本最低的解决方案。

换句话说,我想要最短的路径树。

这是否与任何人敲响了警钟?谁能指点我相关的算法或类似的应用程序?

干杯!

【问题讨论】:

  • 嗯...尝试分区我不确定。进入与其他没有共同点的集合的路径。也许反转每条边并解决补码问题...
  • 只需删除那些不在从源到目标的任何路径上的节点和边,并计算生成的 DAG 的最小权重生成树。似乎它会起作用。其中一个答案也提到了。
  • 似乎这是 NP-Complete 而 MST 只是一个红鲱鱼。我已经发布了答案。

标签: graph-theory shortest-path


【解决方案1】:

这个问题 (Steiner Tree) 是 NP-hard 和 max SNP-complete,因此,除非 P = NP,否则既没有多项式时间算法也没有 PTAS(任意接近的近似值)。

除非您知道图形的某些特殊特征(例如图形是平面的,或者至少权重服从三角不等式),否则 MST 可以任意给出比最优值更差的权重。例如,如果您有 K_1,000,000,001 的所有边权重为 1 且只有一个目标,则最优解的权重为 1,而 MST 的权重为 1,000,000,000。

如果您假设目标之间的所有边以及源与每个目标之间的所有边都存在,您仍然可以通过任意因子超调。考虑上面的示例,但将目标和源之间的边权重更改为 2,000,000,000,000,000,000(您仍然与最优值相差十亿倍)。

当然,您可以通过遍历图形将图形转换为“移除”时间为 O(E) 左右的边权重。这加上一组目标和源的 MST 得出的近似比为 2。

存在更好的近似比率。 Robins & Zelikovsky 有一个多项式时间算法,它比最优算法差不超过 54.94%: http://www.cs.virginia.edu/~robins/papers/soda2000_camera.pdf

Chlebik 和 Chlebikova 表明,接近 1.05% 的近似值是 NP 难的:The Steiner tree problem on graphs: Inapproximability results (doi 10.1.1.4.1339)

如果您的图表是平面的,情况会更好。由于 Borradaile、Kenyon-Mathieu 和 Klein(基于 Erickson、Monma 和 Veinott),有一种快速算法可以给出任意接近的近似值:An O(nlogn) approximation scheme for Steiner tree in planar graphs (doi 10.1.1.133.4154)

【讨论】:

  • 好吧,我并没有说所有情况(我只是说参考维基)。无论如何,我删除了那部分。谢谢。无论如何+1所有参考。我建议您首先添加一个链接,说明这是什么问题。
  • 已编辑以删除对您声明的引用。我不是在指责,只是想让读者明白。感谢您的链接。
【解决方案2】:

如果您只有正成本并且正在最小化,只需使用Dijkstra's algorithm

【讨论】:

  • 如何使用它并不明显。请详细说明。 -1 到那时。此外,为了澄清问题是关于 total 权重(重叠计数一次),因此仅使用所有最短路径可能不起作用。
  • 对不起,我误解了这个问题。您可以使用此算法的唯一目的是使用权重找到近似值,例如新权重是初始权重除以可到达接收器的数量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-19
  • 2015-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多