El problema del flujo de costo mínimo ( MCFP , por sus siglas en inglés ) es un problema de optimización y decisión que busca la forma más económica de enviar una determinada cantidad de flujo a través de una red de transporte . Una aplicación típica de este problema consiste en encontrar la mejor ruta de entrega desde una fábrica a un almacén, donde la red vial tiene cierta capacidad y un costo asociado. El problema del flujo de costo mínimo es uno de los más fundamentales entre todos los problemas de flujo y circulación, ya que la mayoría de los demás problemas de este tipo pueden formularse como un problema de flujo de costo mínimo y, además, puede resolverse de manera eficiente utilizando el algoritmo simplex de red .
Definición
Una red de flujo es un grafo dirigido.con un vértice de origeny un vértice de sumiderodonde cada bordetiene capacidad, fluiry costo, con la mayoría de los algoritmos de flujo de costo mínimo admitiendo bordes con costos negativos. El costo de enviar este flujo a lo largo de un bordeesEl problema requiere una cantidad de flujoser enviado desde la fuentehundirse.
La definición del problema consiste en minimizar el coste total del flujo a través de todas las aristas:
con las restricciones
Relación con otros problemas
Una variante de este problema consiste en encontrar un flujo máximo, pero con el menor coste entre las soluciones de flujo máximo. Esto podría denominarse problema de flujo máximo de coste mínimo y resulta útil para encontrar emparejamientos máximos de coste mínimo .
Con algunas soluciones, encontrar el flujo máximo de costo mínimo es sencillo. Si no, se puede encontrar el flujo máximo realizando una búsqueda binaria en.
Un problema relacionado es el problema de circulación de costo mínimo , que puede utilizarse para resolver el problema de flujo de costo mínimo. El problema de circulación de costo mínimo no tiene origen ni destino; en su lugar, tiene costos y límites inferiores y superiores en cada arista, y busca cantidades de flujo dentro de los límites dados que equilibren el flujo en cada vértice y minimicen la suma sobre las aristas del costo multiplicado por el flujo. Cualquier instancia de flujo de costo mínimo puede convertirse en una instancia de circulación de costo mínimo estableciendo el límite inferior de todas las aristas a cero y luego agregando una arista desde el destino.a la fuente, con capacidady límite inferior, forzando el flujo total deatambién ser.
Los siguientes problemas son casos especiales del problema del flujo de costo mínimo (proporcionamos breves esbozos de cada reducción aplicable, por turno): [ 1 ]
- Problema de la ruta más corta (fuente única). Se requiere que una solución factible al problema del flujo de costo mínimo envíe una unidad de flujo desde una fuente designada.a un fregadero designado. Otorgar capacidad infinita a todas las aristas.
- Problema de flujo máximo . Elija una demanda grande.(lo suficientemente grande como para exceder el flujo máximo; por ejemplo, la suma de las capacidades que salen del vértice de origen) Establezca los costos de todas las aristas en la instancia de flujo máximo en cero e introduzca una nueva arista desde el origen hasta el sumidero con costo unitario y capacidad.
- Problema de asignación . Supongamos que cada conjunto de partición en la bipartición tienevértices, y denotamos la bipartición por. Dar cada unosuministrary dar cada unodemandaCada arista debe tener capacidad unitaria.
Soluciones
El problema del flujo de coste mínimo se puede resolver mediante programación lineal , ya que optimizamos una función lineal y todas las restricciones son lineales.
Aparte de eso, existen muchos algoritmos combinatorios. [ 1 ] Algunos de ellos son generalizaciones de algoritmos de flujo máximo , otros utilizan enfoques completamente diferentes.
Algoritmos fundamentales bien conocidos (tienen muchas variaciones):
- Cancelación de ciclos : un método primal general. [ 2 ]
- Cancelación de corte : un método dual general. [ 3 ] [ 4 ]
- Cancelación de ciclo medio mínimo : un algoritmo simple fuertemente polinomial . [ 5 ]
- Ruta más corta sucesiva y escalado de capacidad : métodos duales, que pueden considerarse como la generalización del algoritmo de Ford-Fulkerson . [ 6 ]
- Escalado de costos : un enfoque primal-dual, que puede considerarse como la generalización del algoritmo push-relabel . [ 7 ]
- Algoritmo simplex de red : una versión especializada del método simplex de programación lineal . [ 8 ]
- Algoritmo desequilibrado por DR Fulkerson
Algoritmos de cancelación de ciclo
Estos algoritmos son iterativos y, al igual que el algoritmo de Ford-Fulkerson, definen un grafo residual. Si hay flujoen arco, entonces su capacidad residual se define comoy su costo residual esEl arco inverso (que tiene un valor de flujo negativo) tiene un costo negativo.Los algoritmos comienzan con un flujo factible arbitrario y mejoran iterativamente el costo de la solución desplazando el flujo alrededor de ciclos de costo negativo. En el ciclo de cancelación de costo medio mínimo , el algoritmo selecciona un ciclo que tiene el costo medio mínimo (la relación entre el costo total del ciclo y el número de arcos). Dicho ciclo se puede encontrar en tiempo polinomial (mediante búsqueda binaria utilizando el algoritmo de Bellman-Ford ) y se ha demostrado que el número total de iteraciones es polinomial [ 5 ] .
Solicitud
Emparejamiento bipartito de peso mínimo

Dado un grafo bipartito G = ( A ∪ B , E ) , el objetivo es encontrar el emparejamiento de cardinalidad máxima en G que tenga el costo mínimo. Sea w : E → R una función de peso en las aristas de E . El problema de emparejamiento bipartito de peso mínimo o problema de asignación consiste en encontrar un emparejamiento perfecto M ⊆ E cuyo peso total se minimice. La idea es reducir este problema a un problema de flujo de red.
Sea G ′ = ( V ′ = A ∪ B , E ′ = E ) . Asigne la capacidad de todas las aristas en E ′ a 1. Agregue un vértice fuente s y conéctelo a todos los vértices en A ′ y agregue un vértice sumidero t y conecte todos los vértices dentro del grupo B ′ a este vértice. La capacidad de todas las nuevas aristas es 1 y sus costos son 0. Se demuestra que existe un emparejamiento bipartito perfecto de peso mínimo en G si y solo si existe un flujo de costo mínimo en G ′ . [ 1 ]
Véase también
Referencias
- 1 2 3 Ravindra K. Ahuja ; Thomas L. Magnanti y James B. Orlin (1993). Flujos de red: teoría, algoritmos y aplicaciones . Prentice-Hall, Inc. ISBN 978-0-13-617549-0.
- ↑ Morton Klein (1967). "Un método primal para flujos de costo mínimo con aplicaciones a los problemas de asignación y transporte". Management Science . 14 (3): 205– 220. CiteSeerX 10.1.1.228.7696 . doi : 10.1287/mnsc.14.3.205 .
- ↑ Refael Hassin (1983). "El problema del flujo de costo mínimo: un enfoque unificador de los algoritmos existentes y un nuevo algoritmo de búsqueda en árbol". Mathematical Programming . 25 : 228–239 . doi : 10.1007/bf02591772 .
- ↑ Thomas R. Ervolina y S. Thomas McCormick (1993). "Dos algoritmos de cancelación de cortes fuertemente polinomiales para flujo de red de costo mínimo" . Matemáticas Aplicadas Discretas . 4 (2): 133– 165. doi : 10.1016/0166-218x(93)90025-j .
- 1 2 Andrew V. Goldberg y Robert E. Tarjan (1989). "Encontrar circulaciones de costo mínimo cancelando ciclos negativos". Journal of the ACM . 36 (4): 873– 886. doi : 10.1145/76359.76368 . hdl : 1721.1/149134 .
- ↑ Jack Edmonds y Richard M. Karp (1972). "Mejoras teóricas en la eficiencia algorítmica para problemas de flujo de red" . Journal of the ACM . 19 (2): 248– 264. doi : 10.1145/321694.321699 .
- ↑ Goldberg, Andrew V. y Tarjan, Robert E. (1990). "Encontrar circulaciones de costo mínimo mediante aproximación sucesiva". Matemáticas de la Investigación Operativa . 15 (3): 430– 466. doi : 10.1287/moor.15.3.430 . hdl : 1721.1/149133 .
- ↑ James B. Orlin (1997). "Un algoritmo simplex de red primal de tiempo polinomial para flujos de costo mínimo". Mathematical Programming . 78 (2): 109– 129. doi : 10.1007/bf02614365 . hdl : 1721.1/2584 .
Enlaces externos
- Librería LEMON C++ con varios algoritmos de circulación de flujo máximo y coste mínimo.
- La biblioteca del proyecto MCFClass C++ con algunos algoritmos de flujo de costo mínimo y de ruta más corta.
- Problema de flujo de red
- Problemas matemáticos