Algorithm 在O(E)时间内,在网络流图的残差图中找到从源到目标的路径
给我一个流网络G和它们的(边)容量和(边)流经每条边,还有一个流F。我想检查残差图中是否存在从源到目标的路径,以确定F是否为最大流 有可能在O(E)时间内完成吗 有没有人能帮我一把,也许让我看看我该怎么做Algorithm 在O(E)时间内,在网络流图的残差图中找到从源到目标的路径,algorithm,graph,network-flow,Algorithm,Graph,Network Flow,给我一个流网络G和它们的(边)容量和(边)流经每条边,还有一个流F。我想检查残差图中是否存在从源到目标的路径,以确定F是否为最大流 有可能在O(E)时间内完成吗 有没有人能帮我一把,也许让我看看我该怎么做 已编辑 给我一个流网络G和它们的(边)容量,以及(边)流经每条边的流。我想检查是否存在从源到目标的路径 如果只想检查从源到目标是否存在路径,则不需要残差图 如果我有残差图,那么我会对BFS算法做一些调整,以检查是否有这样的路径,很简单。我发现这可以在O(| E |)中完成 BFS算法的时间
- 已编辑
O(V+E)
,而不是O(E)
但是我没有残差图,所以我的问题是,是否应该先计算它,然后继续,如果是,它会增加我的总体时间复杂度O(| E |)
计算残差图所需的时间应大于O(V+E)
如果你想解决这个问题,为什么不使用时间复杂度为O(E max | f |)的标准算法呢
更新 我想检查残差图中是否存在从源到目标的路径,以确定F是否为最大流。有可能在O(E)时间内完成吗
要检查有向图中两个节点之间是否存在路径,您应该需要
O(V+E)
time。您可以使用BFS或DFS,如您之前在问题中所述。BFS可用于在残差图中查找路径。运行BFS需要O(| E |+| V |)运行时间。在流动网络中,所有顶点都是连通的,因此,顶点的数目不大于边数目的两倍。有了这些信息,运行BFS在残差图中查找路径的复杂性是O(| E |)真的很抱歉这么糟糕的问题@Wasi Ahmad,我编辑过它我相信BFS在连通图中是O(| E |)@瓦西Ahmad@J.doe不,对于BFS,它是O(V+E)
。请从网络上的任何来源查看算法。如果图形未连接,无论如何,您不能在该图形中应用BFS!关于我可以采取什么方法来确定残差图中是否存在从源到目标的路径,以确定给定的流是否最大,有什么建议吗?考虑到它可以在O(| E)中完成?Wasi Ahmad坦率地说,我不知道最大流量问题是否可以在O(E)中解决!!!但我的建议是使用fordfulkerson
算法。