Per il problema del flusso massimo , sembrano esserci una serie di algoritmi molto sofisticati, con almeno uno sviluppato fino allo scorso anno. Il flusso massimo di Orlin nel tempo O (mn) o meglio fornisce un algoritmo che gira in O (VE).
D'altra parte, gli algoritmi che più comunemente vedo implementati sono (non pretendo di aver fatto una ricerca esaustiva; questo è solo per osservazione casuale):
- Edmonds-Karp: ,
- Push-relabel: o utilizzando la selezione vertice FIFO,
- Algoritmo di Dinic: .
Gli algoritmi con un tempo di esecuzione asintotico migliore non sono pratici per le dimensioni del problema nel mondo reale? Inoltre, vedo che "alberi dinamici" sono coinvolti in alcuni algoritmi; sono mai usati in pratica?
Nota: questa domanda è stata originariamente posta sullo overflow dello stack, qui , ma mi è stato detto che qui si adatterebbe meglio.
EDIT : ho fatto una domanda correlata su cs.stackexchange , in particolare sugli algoritmi che usano alberi dinamici (aka alberi tagliati a link), che potrebbero essere di interesse per le persone che seguono questa domanda.