给定具有源s和接收器t的流网络。对于每两个节点u,v,假设从u到v的容量与从v到u的容量相同。给定两个顶点x,y,设计一个多项式时间算法,找到从x到y的单个路径,您可以沿该路径发送尽可能多的流。 简要证明算法的正确性并分析运行时间。
非常感谢
答案 0 :(得分:2)
您遇到的问题称为最大流算法,它有多个solutions,并且所有这些都是多项式的。
您可以使用Ford–Fulkerson algorithm,因为它很容易理解,因为您可以看到维基页面包含您对该算法所需的所有内容。
编辑:之前我提供的答案,没有给你单一的路径,而是给你最大的流量。
要找到单一路径,您只需在x和y之间的每条路径中找到瓶颈。瓶颈是指路径中容量最小的边缘,因为路径的容量是该边缘的容量。
为了找到每个路径中的最低容量,您可以简单地开始从最低容量到最高容量去除图形中的边缘,并且从图形中移除每个边缘只检查x和y是否连接。使x和y断开连接的第一条边是您想要的边缘,其容量是您想要的容量。因为x和y之间的每条路径要么具有此边缘,要么具有较低容量的边缘。
算法的时间复杂度:
因此算法的复杂性为:O(E log E)+ O(EV + E 2 )= O(EV + E 2 )< /强>