One Billion Shades of Grey
Asumo que ya
- oíste hablar de dualidad de programación lineal
- leíste las partes del editorial que mencionan flujo de costo mínimo
Esta explicación busca aclarar cómo se deriva el grafo de flujo de costo mínimo.
Esencialmente, queremos hallar la mejor cota inferior posible de la respuesta, que resulta ser igual a la respuesta por dualidad.
Como menciona el editorial, queremos minimizar sujeto a algunas desigualdades de la forma
Cada , y algunos están fijos (para las baldosas del borde) mientras que los demás no están acotados (si ignoramos la restricción de que cada ). Esencialmente, queremos una combinación lineal de estas ecuaciones
tal que se cumplan las siguientes condiciones.
- Cada corresponde al flujo en una arista del grafo de flujo de costo mínimo, así que deben ser no negativos.
- En el lado izquierdo de , ningún tiene coeficiente mayor que uno. Esto corresponde a , es decir que el flujo en cada arista del grafo de flujo de costo mínimo es a lo sumo .
- Los coeficientes de cada no constante en el lado derecho de son cero. Esto significa que en el grafo de flujo de costo mínimo, cada vértice (salvo la fuente y el sumidero) tiene el mismo flujo de entrada que de salida.
- La constante del lado derecho se maximiza (queremos la mejor cota inferior posible).
Ejemplo: (debería aclarar lo de arriba)
Supongamos que
y que para cada mientras que no está acotado. ¿Cuál es el menor valor posible de
Solución: En este caso, la respuesta es . Podemos mostrar que esto es una cota inferior eligiendo
Entonces obtenemos la combinación lineal
Se sigue que
Esto corresponde a un grafo de flujo de costo mínimo con vértices más una fuente y un sumidero donde todas las aristas tienen capacidad .
- Dibujar aristas de a , de a , de a y de a con costo .
- Dibujar aristas de la fuente al vértice con costo y de la fuente al vértice con costo .
- Dibujar aristas del vértice al sumidero con costo y del vértice al sumidero con costo .
- Hallar el flujo de costo máximo de la fuente al sumidero. En este caso, enviamos una unidad de flujo por
En el problema original las aristas van en ambos sentidos (no solo en uno), pero la idea es similar.