Graças ao teorema min-cut de fluxo máximo, sabemos que podemos usar qualquer algoritmo para calcular um fluxo máximo em um gráfico de rede para calcular um -min-cut. Portanto, a complexidade de calcular um corte mínimo ( s , t ) não é mais do que a complexidade de calcular um fluxo máximo ( s , t ) .
Poderia ser menos? Poderia haver um algoritmo para calcular um corte mínimo mais rápido do que qualquer algoritmo de fluxo máximo?
Tentei encontrar uma redução para reduzir o problema de ) -max-flow para o problema de ( s , t ) -min-cut, mas não consegui encontrar um. Meu primeiro pensamento foi usar um algoritmo de dividir e conquistar: primeiro encontre um min-cut, que separa o gráfico em duas partes; Agora encontre recursivamente um fluxo máximo para a parte esquerda e um fluxo máximo para a parte direita e combine-os com todas as arestas que cruzam o corte. Isso realmente funcionaria para produzir um fluxo máximo, mas seu pior caso de execução pode ser até O ( | V | ) vezes maior que o tempo de execução do algoritmo min-cut. Existe uma redução melhor?
Percebo que o teorema do corte mínimo de fluxo máximo mostra que a complexidade de calcular o valor de um fluxo máximo é a mesma que a complexidade de calcular a capacidade de um corte mínimo, mas não é disso que estou perguntando. Estou perguntando sobre o problema de encontrar um fluxo máximo e um min-cut (explicitamente).
Isso está intimamente relacionado ao cálculo de um fluxo máximo a partir de um corte mínimo , exceto: (1) estou disposto a permitir reduções de Cook (reduções de Turing), não apenas reduções de Karp (reduções de uma a uma) e (2) talvez, dado , possamos encontrar algum gráfico modo que o min-cut de facilite a computação do fluxo máximo de , que é algo que está fora do escopo dessa outra questão.G ′ G