对于最大流量问题,似乎有许多非常复杂的算法,最近至少有一种算法是在去年开发的。Orlin的最大流量为O(mn)或更佳时间,给出的算法以O(VE)运行。
另一方面,我最常看到的算法是(我不声称已经进行了详尽的搜索;这只是从偶然的观察中得出的):
- Edmonds-Karp:,
- 推入重贴标签:使用FIFO顶点选择的或O (V 3),
- Dinic算法:。
渐近运行时间更好的算法对现实世界中的问题大小不切实际吗?另外,我看到“动态树”涉及许多算法。这些在实践中曾经使用过吗?
注意:此问题最初是在此处的堆栈溢出时提出的,但有人告诉我在这里更合适。
编辑:我在cs.stackexchange上询问了一个相关的问题,特别是关于使用动态树(又名链接剪切树)的算法的问题,追随此问题的人们可能会感兴趣。