如何在图表中获得将某个节点彼此断开连接的最低成本

时间:2012-04-25 12:43:28

标签: java algorithm graph

在给定的图表中,我想计算在图表中断开某个节点彼此之间的最低成本。示例:
enter image description here在此图表中,假设我想通过删除这些节点中的某些边缘来相互断开node Anode Cnode F。即,通过删除edge A-Bedge F-E,节点ACF将会断开连接。这里的成本是指被移除的边缘的长度。在此示例中,将Node ANode CNode F彼此断开连接的总最低费用为2 + 1 = 3。
有人可以提供一些提示。我无法对此问题进行分类,这是shortest path problem还是minimum spanning tree problem

1 个答案:

答案 0 :(得分:2)

这称为多端切割问题。不幸的是,似乎没有维基百科条目。问题是,给定加权图和称为终端的顶点子集,计算边缘的最小权重集,其去除断开每对终端。坏消息是这个问题是NP难的,所以如果你真的需要一个不能强制执行的实例的最优解决方案,你可能不得不转向整数编程。好消息是有一个简单的2近似算法(不是已知的最佳因素,但你可能不得不深入研究线性规划并阅读研究文献以使用“更好”的算法),这可以通过采取将每个终端与其他终端分开的st cut的结合。