4

For the maximum flow problem, there seem to be a number of very sophisticated algorithms, with at least one developed as recently as last year. Orlin's Max flows in O(mn) time or better gives an algorithm that runs in O(VE).

On the other hand, the algorithms I most commonly see implemented are (I don't claim to have done an exhaustive search; this is just from casual observation):

  • Edmonds-Karp, O(VE^2)
  • Push-relabel, O(V^2 E), or O(V^3) using FIFO vertex selection
  • Dinic's Algorithm, O(V^2 E)

Are the algorithms with better asymptotic running time just not practical for the problem sizes in the real world? Also, I see "Dynamic Trees" are involved in quite a few algorithms; are these ever used in practice?

Rob Lachlan
  • 14,289
  • 5
  • 49
  • 99
  • 1
    This is probably a better fit at CS or CSTheory. It's a cool question, though! – templatetypedef Feb 02 '13 at 23:21
  • 1
    @templatetypedef: I disagree. I'm interested in what algorithms can or have been implemented for practical use. IMHO, "What are the best practical algorithms?" is very much a stackoverflow question. – Rob Lachlan Feb 02 '13 at 23:41
  • I think it's an interesting question and relevant because it's about practicality and implementation. If I needed to solve instances of max flow, I would probably start with whatever was already implemented and easy to use before worrying about speed. I might have a different opinion if I was trying to build software for someone else to use, and they could throw any ridiculous instance at it. – user327301 Feb 03 '13 at 01:22
  • @RobLachlan, It is sometimes hard to draw the line, but stackoverflow is flooded with questions asking for help on bugs, or search for unknown functions, or help in fine tuning their algorithm etc. Your question would be more properly answered in CS. – Shahbaz Feb 03 '13 at 19:20
  • @denis, that's a question you could ask in meta. It's not always a clear distinction, but I'd say questions that are rather specific, usually involving code or pseudo-code belong here, while questions that are more about the science of the algorithm belong to CS. But again, ask meta. – Shahbaz Feb 04 '13 at 14:22
  • Thanks everyone; it's attracted a fair amount of interest on cstheory, but no answers yet. I may ask on cs, which I didn't even know existed, as well. – Rob Lachlan Feb 04 '13 at 17:00

0 Answers0