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.
fonte
Respostas:
Eu sou um dos autores do artigo acima.
Só quero mencionar que usamos `` estado da arte '' para significar algoritmos (com implementações disponíveis ao público) que apresentam bom desempenho em instâncias de fluxo máximo que surgem na visão por computador.
Eu também gostaria de acrescentar que, dentro desse contexto restrito (mas prático), geralmente os algoritmos com bom desempenho são aqueles com más garantias teóricas. Por exemplo, ref [5] do nosso artigo (algoritmo de Boykov-Kolmogorov) é amplamente utilizado na comunidade de visão computacional, mas não possui um limite de tempo de execução fortemente polimejado.
Finalmente, caso alguém esteja interessado, os dados de nossas experiências estão disponíveis aqui: http://ttic.uchicago.edu/~dbatra/research/mfcomp/index.html
O código também estará disponível em breve também.
fonte
existem várias maneiras de responder a essa pergunta, mas não necessariamente uma resposta de consenso. geralmente algoritmos que foram implementados e liberados para distribuição pública são "práticos". no entanto, alguns algoritmos que foram criados, mas ainda não foram implementados, podem ser práticos, mas "o júri está fora" deles, por assim dizer. **
uma boa estratégia para fins práticos é procurar uma pesquisa. também para os interessados em algoritmos práticos, os benchmarks em relação aos dados do mundo real podem ser uma excelente diretriz quanto ao comportamento esperado do "mundo real".
uma pesquisa de benchmarking pode ser suficiente, mas irá errar ao lado de algoritmos viáveis. é uma análise empírica recente e completa de 14 algoritmos de fluxo máximo "avançados" comparados empiricamente em relação a instâncias de processamento de visão, em que o fluxo máximo tem muitas aplicações. "estado da arte" é utilizado para se referir a algoritmos "implementados".
[1] MaxFlow Revisited: Uma comparação empírica dos algoritmos Maxflow para problemas de visão densa por Verma e Batra, 2012
** alguns algoritmos teóricos estão cada vez mais em uma categoria na comunidade do TCS, sendo informalmente referidos como "galácticos", mas infelizmente, os autores do TCS atualmente não rotulam seus algoritmos nesta categoria e não há critérios publicados ou geralmente aceitos para algoritmos "galácticos", embora exista referência em blogs .
a praticidade nesse sentido é possivelmente uma nova dimensão emergente para o estudo teórico. idealmente, haveria uma pesquisa de algoritmos de fluxo máximo especificamente sobre esse eixo / critério "prático", mas provavelmente isso não existe até o momento da escrita. é um conceito mais recentemente reconhecido / reconhecido no TCS que ainda não foi completamente formalizado (ao contrário de, por exemplo, a ampla aceitação dos algoritmos P como "eficientes").
fonte
Você pode estar interessado em Fluxos Máximos por Largura - Primeira Pesquisa Incremental por Goldberg, Hed, Kaplan, Tarjan e Werneck
http://research.microsoft.com/pubs/150437/ibfs-proc.pdf http://www.cs.tau.ac.il/~sagihed/ibfs/
fonte