En informática y teoría de optimización , el teorema de flujo máximo y corte mínimo establece que en una red de flujo , la cantidad máxima de flujo que pasa desde la fuente al sumidero es igual al peso total de los bordes en un corte mínimo , es decir, el peso total más pequeño de los bordes que, si se quitaran, desconectarían la fuente del fregadero.
Este es un caso especial del teorema de dualidad para programas lineales y puede usarse para derivar el teorema de Menger y el teorema de Kőnig-Egerváry . [1]
El teorema equipara dos cantidades: el caudal máximo a través de una red y la capacidad mínima de un corte de la red. Para enunciar el teorema, primero se debe definir cada una de estas nociones.
Una red consta de
Un flujo a través de una red es un mapeo denotado por o , sujeto a las dos restricciones siguientes:
Un flujo se puede visualizar como un flujo físico de un fluido a través de la red, siguiendo la dirección de cada borde. La restricción de capacidad dice entonces que el volumen que fluye a través de cada borde por unidad de tiempo es menor o igual a la capacidad máxima del borde, y la restricción de conservación dice que la cantidad que fluye hacia cada vértice es igual a la cantidad que fluye hacia fuera de cada vértice, aparte de los vértices fuente y sumidero.
El valor de un flujo está definido por
donde como arriba es la fuente y es el sumidero de la red. En la analogía del fluido, representa la cantidad de fluido que ingresa a la red en la fuente. Debido al axioma de conservación de los flujos, esto es lo mismo que la cantidad de flujo que sale de la red en el sumidero.
El problema del flujo máximo requiere el flujo más grande en una red determinada.
Problema de flujo máximo. Maximizar, es decir, encaminar la mayor cantidad de flujo posible desdehacia.
La otra mitad del teorema de flujo máximo y corte mínimo se refiere a un aspecto diferente de una red: el conjunto de cortes. Un st corte C = ( S , T ) es una partición de V tal que s ∈ S y t ∈ T . Es decir, un corte s - t es una división de los vértices de la red en dos partes, con la fuente en una parte y el sumidero en la otra. El conjunto de corte de un corte C es el conjunto de aristas que conectan la parte fuente del corte con la parte sumidero:
Por lo tanto, si se eliminan todos los bordes en el conjunto de corte de C , entonces no es posible un flujo positivo, porque no hay un camino en el gráfico resultante desde la fuente hasta el sumidero.
La capacidad de un corte st es la suma de las capacidades de los bordes en su conjunto de cortes,
donde si y , en caso contrario.
Generalmente hay muchos cortes en un gráfico, pero los cortes con pesos más pequeños suelen ser más difíciles de encontrar.
En la situación anterior, se puede demostrar que el valor de cualquier flujo a través de una red es menor o igual a la capacidad de cualquier corte , y que además existe un flujo con valor máximo y un corte con capacidad mínima. El teorema principal vincula el valor máximo del caudal con la capacidad mínima de corte de la red.
La figura de la derecha muestra un flujo en una red. La anotación numérica en cada flecha, en la forma f / c , indica el flujo ( f ) y la capacidad ( c ) de la flecha. Los flujos que emanan de la fuente suman cinco (2+3=5), al igual que los flujos hacia el sumidero (2+3=5), estableciendo que el valor del flujo es 5.
Un corte s - t con valor 5 viene dado por S ={ s , p } y T ={ o , q , r , t }. Las capacidades de las aristas que atraviesan este corte son 3 y 2, dando una capacidad de corte de 3+2=5. (La flecha de o a p no se considera, ya que apunta de T a S ).
El valor del caudal es igual a la capacidad del corte, mostrando que el caudal es un caudal máximo y el corte es un corte mínimo.
Tenga en cuenta que el flujo a través de cada una de las dos flechas que conectan S con T está a plena capacidad; siempre es así: un recorte mínimo representa un "cuello de botella" del sistema.
El problema de flujo máximo y el problema de corte mínimo se pueden formular como dos programas lineales duales primarios . [2]
El LP de flujo máximo es sencillo. El LP dual se obtiene utilizando el algoritmo descrito en el programa lineal dual : las variables y restricciones de signo del dual corresponden a las restricciones del primal, y las restricciones del dual corresponden a las variables y restricciones de signo del primal. El LP resultante requiere alguna explicación. La interpretación de las variables en el LP de corte mínimo es:
El objetivo de minimización suma la capacidad de todos los bordes contenidos en el corte.
Las restricciones garantizan que las variables efectivamente representen un corte legal: [3]
Tenga en cuenta que, dado que se trata de un problema de minimización, no tenemos que garantizar que un borde no esté en el corte; solo tenemos que garantizar que cada borde que debería estar en el corte se sume en la función objetivo.
La igualdad en el teorema de flujo máximo y corte mínimo se deriva del teorema de dualidad fuerte en programación lineal , que establece que si el programa primario tiene una solución óptima, x *, entonces el programa dual también tiene una solución óptima, y *, tal que los valores óptimos formados por las dos soluciones son iguales.
El problema del flujo máximo se puede formular como la maximización de la corriente eléctrica a través de una red compuesta de elementos resistivos no lineales. [4] En esta formulación, el límite de la corriente I entre los terminales de entrada de la red eléctrica a medida que se acerca el voltaje de entrada V in , es igual al peso del conjunto de corte de peso mínimo.
Además de la capacidad del borde, considere que hay capacidad en cada vértice, es decir, un mapeo denotado por c ( v ) , tal que el flujo f tiene que satisfacer no solo la restricción de capacidad y la conservación de los flujos, sino también la capacidad del vértice. restricción
En otras palabras, la cantidad de flujo que pasa por un vértice no puede exceder su capacidad. Defina un corte st como el conjunto de vértices y aristas de manera que para cualquier ruta de s a t , la ruta contenga un miembro del corte. En este caso, la capacidad del corte es la suma de la capacidad de cada arista y vértice del mismo.
En esta nueva definición, el teorema generalizado de flujo máximo y corte mínimo establece que el valor máximo de un flujo st es igual a la capacidad mínima de un corte st en el nuevo sentido.
En el problema de caminos no dirigidos de bordes disjuntos, se nos da un gráfico no dirigido G = ( V , E ) y dos vértices s y t , y tenemos que encontrar el número máximo de caminos st de bordes disjuntos en G.
El teorema de Menger establece que el número máximo de caminos st con aristas disjuntas en un gráfico no dirigido es igual al número mínimo de aristas en un conjunto de corte st.
En el problema de selección de proyectos, hay n proyectos y m máquinas. Cada proyecto p i produce ingresos r ( p i ) y cada máquina q j cuesta c ( q j ) comprar. Cada proyecto requiere una cantidad de máquinas y cada máquina puede ser compartida por varios proyectos. El problema es determinar qué proyectos y máquinas deben seleccionarse y comprarse respectivamente, para maximizar el beneficio.
Sea P el conjunto de proyectos no seleccionados y Q el conjunto de máquinas compradas, entonces el problema se puede formular como,
Dado que el primer término no depende de la elección de P y Q , este problema de maximización se puede formular como un problema de minimización, es decir,
El problema de minimización anterior puede entonces formularse como un problema de corte mínimo mediante la construcción de una red, donde la fuente está conectada a los proyectos con capacidad r ( pi ) y el sumidero está conectado mediante las máquinas con capacidad c ( q j ) . . Se agrega una arista ( p i , q j ) con capacidad infinita si el proyecto p i requiere una máquina q j . El primer conjunto de cortes representa los proyectos y máquinas en P y Q respectivamente. Según el teorema del corte mínimo del flujo máximo, se puede resolver el problema como un problema de flujo máximo .
La figura de la derecha ofrece una formulación de red del siguiente problema de selección de proyectos:
La capacidad mínima de un corte es de 250 y la suma de los ingresos de cada proyecto es de 450; por lo tanto el beneficio máximo g es 450 − 250 = 200, seleccionando los proyectos p 2 y p 3 .
La idea aquí es hacer "fluir" las ganancias de cada proyecto a través de las "tuberías" de sus máquinas. Si no podemos llenar la tubería con una máquina, el rendimiento de la máquina es menor que su costo, y al algoritmo de corte mínimo le resultará más barato reducir la ventaja de ganancias del proyecto en lugar de la ventaja de costos de la máquina.
En el problema de segmentación de imágenes, hay n píxeles. A cada píxel i se le puede asignar un valor de primer plano f i o un valor de fondo b i . Hay una penalización de p ij si los píxeles i, j son adyacentes y tienen asignaciones diferentes. El problema es asignar píxeles al primer plano o al fondo de modo que la suma de sus valores menos las penalizaciones sea máxima.
Sea P el conjunto de píxeles asignados al primer plano y Q el conjunto de puntos asignados al fondo, entonces el problema se puede formular como,
Este problema de maximización se puede formular como un problema de minimización, es decir,
El problema de minimización anterior se puede formular como un problema de corte mínimo construyendo una red donde la fuente (nodo naranja) está conectada a todos los píxeles con capacidad f i y el sumidero (nodo morado) está conectado por todos los píxeles con capacidad. b i . Se agregan dos bordes ( i, j ) y ( j, i ) con capacidad p ij entre dos píxeles adyacentes. El st cut-set representa los píxeles asignados al primer plano en P y los píxeles asignados al fondo en Q.
Ford y Fulkerson dieron un relato del descubrimiento del teorema en 1962: [5]
"La determinación de un flujo máximo en estado estacionario de un punto a otro en una red sujeta a limitaciones de capacidad en los arcos... fue planteada a los autores en la primavera de 1955 por TE Harris, quien, junto con el General FS Ross (Ret.) había formulado un modelo simplificado de flujo de tráfico ferroviario y señaló este problema particular como el central sugerido por el modelo. No pasó mucho tiempo hasta que se obtuvo el resultado principal, el teorema 5.1, al que llamamos teorema de flujo máximo y corte mínimo. fue conjeturado y establecido [6] Desde entonces han aparecido varias pruebas ". [7] [8] [9]
Sea G = ( V , E ) una red (gráfico dirigido) donde s y t son la fuente y el sumidero de G respectivamente.
Considere el flujo f calculado para G mediante el algoritmo de Ford-Fulkerson . En el gráfico residual ( G f ) obtenido para G (después de la asignación de flujo final mediante el algoritmo Ford-Fulkerson ), defina dos subconjuntos de vértices de la siguiente manera:
Afirmar. valor ( f ) = c ( A , A c ) , donde la capacidad de un corte st está definida por
Ahora sabemos que, para cualquier subconjunto de vértices, A . Por lo tanto, para valor( f ) = c ( A , A c ) necesitamos:
Para probar la afirmación anterior consideramos dos casos:
Ambas afirmaciones anteriores prueban que la capacidad de corte obtenida de la forma descrita anteriormente es igual al caudal obtenido en la red. Además, el flujo se obtuvo mediante el algoritmo Ford-Fulkerson , por lo que también es el flujo máximo de la red.
Además, dado que cualquier flujo en la red es siempre menor o igual a la capacidad de cada corte posible en una red, el corte descrito anteriormente es también el corte mínimo que obtiene el flujo máximo .
Un corolario de esta prueba es que el flujo máximo a través de cualquier conjunto de aristas en un corte de un gráfico es igual a la capacidad mínima de todos los cortes anteriores.