Para o problema de vazão máxima , parece haver um número de algoritmos muito sofisticados, com pelo menos um desenvolvido recentemente no ano passado. O fluxo máximo de Orlin no tempo O (mn) ou melhor fornece um algoritmo que roda em O (VE).
Por outro lado, os algoritmos que eu normalmente vejo implementados são (não pretendo ter feito uma pesquisa exaustiva; isso é apenas por observação casual):
- Edmonds-Karp: ,
- Re-rotular push: ou O ( V 3 ) usando a seleção de vértice FIFO,
- Algoritmo de Dinic: .
Os algoritmos com melhor tempo de execução assintótico não são práticos para os tamanhos de problemas no mundo real? Além disso, vejo que "Árvores dinâmicas" estão envolvidas em alguns algoritmos; estes são usados na prática?
Nota: esta pergunta foi originalmente feita no estouro de pilha aqui , mas me disseram que seria um ajuste melhor aqui.
EDIT : Fiz uma pergunta relacionada no cs.stackexchange , especificamente sobre os algoritmos que usam árvores dinâmicas (também conhecidas como árvores cortadas por link), que podem ser de interesse para as pessoas que seguem esta pergunta.