Articulo de referencia

Problema de flujo de costo mínimo

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 ca...

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.GRAMO=(V,mi){\displaystyle G=(V,E)}con un vértice de origensV{\displaystyle s\in V}y un vértice de sumiderotV{\displaystyle t\in V}donde cada borde(,v)mi{\displaystyle (u,v)\in E}tiene capacidaddo(,v)>0{\displaystyle c(u,v)>0}, fluirF(,v){\displaystyle f(u,v)}y costoa(,v){\displaystyle a(u,v)}, 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 borde(,v){\displaystyle (u,v)}esF(,v)a(,v){\displaystyle f(u,v)\cdot a(u,v)}El problema requiere una cantidad de flujod{\displaystyle d}ser enviado desde la fuentes{\displaystyle s}hundirset{\displaystyle t}.

La definición del problema consiste en minimizar el coste total del flujo a través de todas las aristas:

(,v)mia(,v)F(,v){\displaystyle \sum _{(u,v)\in E}a(u,v)\cdot f(u,v)}

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 end{\displaystyle d}.

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.t{\displaystyle t}a la fuentes{\displaystyle s}, con capacidaddo(t,s)=d{\displaystyle c(t,s)=d}y límite inferiorl(t,s)=d{\displaystyle l(t,s)=d}, forzando el flujo total des{\displaystyle s}at{\displaystyle t}también serd{\displaystyle d}.

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.s{\displaystyle s}a un fregadero designadot{\displaystyle t}. Otorgar capacidad infinita a todas las aristas.
  • Problema de flujo máximo . Elija una demanda grande.d{\displaystyle d}(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 capacidadd{\displaystyle d}.
  • Problema de asignación . Supongamos que cada conjunto de partición en la bipartición tienenorte{\displaystyle n}vértices, y denotamos la bipartición por(incógnita,Y){\displaystyle (X,Y)}. Dar cada unoincógnitaincógnita{\displaystyle x\in X}suministrar1/norte{\displaystyle 1/n}y dar cada unoyY{\displaystyle y\in Y}demanda1/norte{\displaystyle 1/n}Cada 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):

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 flujoF(,v){\displaystyle f(u,v)}en arcomi=(,v){\displaystyle e=(u,v)}, entonces su capacidad residual se define comodo(mi)F(mi){\displaystyle c(e)-f(e)}y su costo residual esa(mi){\displaystyle a(e)}El arco inverso (que tiene un valor de flujo negativo) tiene un costo negativo.a(mi){\displaystyle -a(e)}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

Reducción del problema de emparejamiento bipartito de peso mínimo al problema de flujo máximo de costo mínimo.

Dado un grafo bipartito G = ( AB , E ) , el objetivo es encontrar el emparejamiento de cardinalidad máxima en G que tenga el costo mínimo. Sea w : ER 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 ME cuyo peso total se minimice. La idea es reducir este problema a un problema de flujo de red.

Sea G = ( V = AB , 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. 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.
  2. 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 . 
  3. 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 .
  4. 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 .
  5. 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 .
  6. 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 .
  7. 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 .
  8. 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 .
  • 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.