我想实现一种在至少包括一个无限容量的任何图中计算“最大流量”的方法。我曾经在有图形处理时导入NetworkX库,但是不幸的是,根据maximum_flow的描述,它尚未考虑无限容量:
...如果图具有无限容量的路径,则图上的可行流的值在上方是无界的,并且该函数将引发NetworkXUnbounded。
所以,我的问题:
欢迎其他任何建议。
谢谢
答案 0 :(得分:0)
假设您有一个流动网络,其中某些边具有无限的容量。有两种可能的选择:
从源到无限容量边缘的接收器之间存在一条路径。在这种情况下,可以通过在该路径上推动无限流量来找到最大流量。由于您已经拥有无限的流量,因此无法通过跨其他边缘推动更多的流量来改善流量!
网络中不存在无限容量路径。然后在网络中可以推送多少总流量有一个上限(一个快速证明:将通过将起始节点和无限容量边缘可到达的所有内容作为切口的一部分而形成的切口,以及将其他所有内容作为切口的一部分)作为考虑。其他部分;则最大流量受该切割能力的限制)。在这种情况下,无限容量边缘的作用本质上是“您可以根据需要在边缘上推动尽可能多的流量”,但是实际上没有流动路径可以无限流动。因此,取每个无限容量的边,并用具有巨大但有限容量的边(例如,有限容量边的所有容量之和)代替。现在,此修改后的图中的最大流量为您提供了原始网络中的最大流量。
希望这会有所帮助!