gpt4 book ai didi

algorithm - 寻找不包含负环的强连通子图

转载 作者:行者123 更新时间:2023-12-02 22:21:53 27 4
gpt4 key购买 nike

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

给定一个由其转移矩阵定义的强连通加权有向图 G,是否存在没有负循环的强连通生成子图 G?

G 的强连通生成子图是与 G 共享相同顶点的 G 的强连通子图。你可以看看这个paper强连通生成子图的定义。在本文中,他们提出了最小强连通子图问题的近似。

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

我希望在这里找到专家,他们可以告诉我这个决策问题是否可以在多项式时间内解决,以及什么算法可以解决。非常感谢。

最佳答案

这是一个简单的解决方案,它有合理的机会找到在多项式时间内没有负循环的强连接跨越子图。但显然不能保证一定能找到。

将所有权重转为负数。现在使用 Ford-Bellman 或 Floyd-Warshall 来查找负循环。这实际上是原始图中的一个循环。

现在我们在循环中选择一个顶点,并将其他顶点收缩到它。 连接到/从删除的顶点连接的边将被代表沿着该边并围绕循环移动到我们保留的顶点的边所替换。如果两个顶点之间有多个边,则只保留最好的一条。

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

该算法在保证的多项式时间内运行(每次迭代在多项式时间内运行并删除至少一个顶点)。如果它成功地将你的图缩小到一个点,那么你只需向后走这个过程,就会发现你实际上已经找到了一个没有负循环的强连通生成图。

但是,如果它没有这样做,则不能保证不存在。只是你没找到而已。

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

关于algorithm - 寻找不包含负环的强连通子图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59534880/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com