Gracias al teorema de corte mínimo de flujo máximo, sabemos que podemos usar cualquier algoritmo para calcular un flujo máximo en un gráfico de red para calcular un corte -min. Por lo tanto, la complejidad de calcular un corte mínimo ( s , t ) no es más que la complejidad de calcular un flujo máximo ( s , t ) .
¿Podría ser menos? ¿Podría haber un algoritmo para calcular un corte mínimo que sea más rápido que cualquier algoritmo de flujo máximo?
Traté de encontrar una reducción para reducir el problema ) -max-flow al problema ( s , t ) -min-cut, pero no pude encontrar una. Lo primero que pensé fue usar un algoritmo de divide y vencerás: primero busca un corte mínimo, que separa el gráfico en dos partes; ahora encuentre recursivamente un flujo máximo para la parte izquierda y un flujo máximo para la parte derecha, y combínelos con todos los bordes que cruzan el corte. De hecho, esto funcionaría para producir un flujo máximo, pero su peor tiempo de ejecución podría ser tanto como O ( | V | ) veces mayor que el tiempo de ejecución del algoritmo de corte mínimo. ¿Hay una mejor reducción?
Me doy cuenta de que el teorema de corte mínimo de flujo máximo muestra que la complejidad de calcular el valor de un flujo máximo es la misma que la complejidad de calcular la capacidad de un corte mínimo, pero eso no es lo que estoy preguntando. Estoy preguntando sobre el problema de encontrar un flujo máximo y encontrar un corte mínimo (explícitamente).
Esto está muy relacionado con Calcular un flujo máximo a partir de un corte mínimo , excepto: (1) Estoy dispuesto a permitir reducciones de Cook (reducciones de Turing), no solo reducciones de Karp (reducciones de muchos) y (2) quizás dado podemos encontrar algún gráfico G ' tal que el corte mínimo de G ' facilite el cálculo del flujo máximo de G , que es algo que está fuera del alcance de esa otra pregunta.