查找不包含负循环的强连通子图

时间:2019-12-30 17:53:20

标签: algorithm complexity-theory graph-theory computation-theory operations-research

是否有一种算法可以解决以下决策问题:

给定一个由其转移矩阵定义的强连通加权有向图G,是否存在一个G的强连通跨越子图,且没有负周期?

G的一个强连通子图是G的一个强连通子图,它与G共享相同的顶点。您可以参考此paper来了解强连通子图的定义。在本文中,他们为最小强连通子图问题提供了一个近似值。

解决此问题的一种幼稚方法是使用Ford-Bellman或Floyd-Warshall算法找到图的负循环,从该循环中删除边,并在图仍然牢固连接时重复进行。但是这种幼稚的方法的时间复杂度很差,因为我们可能会运行福特贝尔曼算法并多次检查强连通性-而且我无法证明该算法在所有情况下都是正确的。

我希望在这里找到专家,他们可以告诉我该决策问题是否可以在多项式时间内解决,以及采用哪种算法可以解决。预先非常感谢。

2 个答案:

答案 0 :(得分:0)

这是一个幼稚的解决方案,它有合理的机会找到在多项式时间内没有负循环的强连通生成子图。但显然不能保证找到一个。

将所有权重设置为负数。现在,使用福特·贝尔曼或弗洛伊德·沃歇尔来寻找一个负周期。实际上,这是原始图中的一个循环。

现在,我们在循环中选择一个顶点,然后将其他顶点收缩到该顶点。  连接到/来自已移除顶点的边被表示沿该边并围绕循环行进至我们保留的边的边替换。如果您在两个顶点之间具有多个边,则只保留最佳的一个。

在新的较小的图形上重复练习。

此算法在保证的多项式时间内运行(每次迭代均在多项式时间内运行,并删除至少一个顶点)。如果它设法将图形缩小到一个点,那么您只需向后走,发现实际上找到了一个没有负周期的强连通生成图。

但是,如果这样做失败,则不能保证没有一个。您只是没有找到它。

(我怀疑有保证的算法将是NP完整的。)

答案 1 :(得分:0)

这个问题通常是NP难题,这可以通过减少哈密顿周期来证明。