Muitos algoritmos de fluxo máximo que eu normalmente vejo implementados, o algoritmo de Dinic, push relabel e outros, podem ter seu custo de tempo assintótico aprimorado através do uso de árvores dinâmicas (também conhecidas como árvores de corte de link).
- O reencaminhamento por push é executado em ou O ( V 3 ) ou O ( V 2 √normalmente, mas com árvores dinâmicasO(VElog(V2/E))
- O algoritmo de Dinic é executado em , mas com árvores dinâmicas O ( V E log ( V ) )
No entanto, implementações práticas de algoritmos de fluxo máximo na maioria das bibliotecas não parecem fazer uso dessa estrutura de dados. As árvores dinâmicas são usadas na prática para o cálculo do fluxo máximo? Ou eles carregam muita sobrecarga para serem úteis para tamanhos de problemas do mundo real?
Existem outros domínios problemáticos em que as árvores cortadas por link são usadas?
Esta pergunta está relacionada a uma pergunta que eu fiz na história: Algum dos algoritmos de fluxo máximo de última geração é prático?