在有向图中找到最小平均权重的周期

时间:2013-10-18 04:37:43

标签: algorithm average graph-theory cycle

我正在寻找一种算法,该算法采用有向加权图(具有正整数权重),并在图中找到具有最小平均权重(与总权重相对)的周期。

基于类似的问题(但总重量),我考虑应用Floyd-Warshall算法的修改,但它将依赖于以下属性,持有(谢谢Ron提供反例的出纳员表示:“对于顶点U,V,W,如果有路径p1,p2从U到V,路径p3,p4从V到W,那么这些路径的最佳组合得到从U到W是p1更好,p2后跟p3,p4越好。“

我认为哪些其他算法不依赖于此属性?

修改:在问题下方移动了以下不再相关的段落。

  

虽然这个属性看起来很直观,但似乎并不适用于同样需要两条路径的情况。例如,如果p1具有总重量2和长度2,并且p2具有总重量3和长度3,则两者都不比另一个好。但是,如果p3和p4的总重量大于长度,则p2优于p1。在我想要的应用程序中,每个边的权重是正整数,所以这个属性是强制执行的,我想我可以假设,在平局的情况下,更长的路径更好。但是,我仍然无法证明这是有效的,所以我无法验证任何依赖它的算法的正确性。

3 个答案:

答案 0 :(得分:2)

  

“虽然这个属性看起来很直观,但它似乎并不存在   两条路径同样令人满意的情况。“

实际上,当你考虑2个参数(重量,长度)时,它在任何情况下都不成立,这里是一个例子,当P1本身的平均值小于P2时,有时可能更好(例如1)最终解决方案或更糟(示例2),取决于P3和P4。

示例1:

L(P1) = 9, W(P1) = 10
L(P2) = 1, W(P2) = 1
L(P3) = 1, W(P3) = 1
L(P4) = 1, W(P4) = 1

示例2:

L(P1) = 9, W(P1) = 10
L(P2) = 1, W(P2) = 1
L(P3) = 5, W(P3) = 10
L(P4) = 5, W(P4) = 10

这两个参数对您的目标函数有影响,无法在本地确定,因此任何修改的Floyd-Warshall算法都不起作用。

由于您只考虑循环,因此您可能需要考虑一种强制算法来验证图中每个循环的平均权重。您可以在多项式时间内完成,请参阅: Finding all cycles in graph

答案 1 :(得分:1)

我可以推荐另一种算法。

让我们修复C.现在从所有权重中减去C.答案会如何改变?如果我们从所有权重中减去相同的数字,则每个周期的平均权重在相同的数字C上减少。现在让我们检查我们是否具有负平均权重的周期。负平均重量的条件等于负重量的条件。所以它足以检查我们是否有负重量的循环。我们可以使用Bellman-Ford algorithm来完成。如果我们有这样一个循环,那么答案就小于C.

现在我们可以通过二分搜索找到答案了。由此产生的复杂性将是O(VE log(MaxWeight))

答案 2 :(得分:0)

您描述的问题称为最小平均周期问题,可以有效解决。此外,还有一些非常好的优化理论来检查您是否感兴趣(从标准参考AMO93开始)。