Problema de flujo de costo mínimo

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar

El problema de flujo de costo mínimo (MCFP) es un problema de optimización y decisión para encontrar la forma más económica posible de enviar una cierta cantidad de flujo a través de una red de flujo. Una aplicación típica de este problema implica encontrar la mejor ruta de entrega desde una fábrica a un almacén donde la red de carreteras tiene cierta capacidad y costo asociado. El problema de flujo de costo mínimo es uno de los más fundamentales entre todos los problemas de flujo y circulación porque la mayoría de los demás problemas de este tipo se pueden plantear como un problema de flujo de costo mínimo y también se puede resolver de manera eficiente utilizando el algoritmo símplex de red.

Definición

Una red de flujo es un gráfico dirigido con un vertex fuente y un vértice de fregadero , donde cada borde capacidad , flujo y gastos , con la mayoría de algoritmos de flujo de coste mínimo que soportan bordes con costos negativos. El costo de enviar este flujo a lo largo de un borde es . El problema requiere una cantidad de flujo para ser enviado desde la fuente para hundirse .

La definición del problema es minimizar el costo total del flujo en todos los bordes:

con las restricciones

Limitaciones de la capacidad:
Simetría de Skew:
Conservación del flujo:
Flujo obligatorio:

Relación con otros problemas

Una variación de este problema consiste en encontrar un flujo que sea máximo, pero que tenga el menor costo entre las soluciones de flujo máximo. Esto podría llamarse un problema de flujo máximo y costo mínimo y es útil para encontrar correspondencias máximas de costo mínimo.

Con algunas soluciones, encontrar el flujo máximo de costes mínimos es sencillo. Si no, se puede encontrar el flujo máximo realizando una búsqueda binaria en .

Un problema relacionado es el problema mínimo de circulación de costos, que se puede utilizar para resolver el flujo mínimo de costos. El problema de la circulación de costes mínimos no tiene fuente ni sumidero; en cambio tiene costos y límites inferiores y superiores en cada borde, y busca cantidades de flujo dentro de los límites dados que equilibran el flujo en cada vértice y minimizan la suma sobre los bordes del flujo de tiempos de coste. Cualquier instancia de flujo de coste mínimo se puede convertir en una instancia de circulación de costes mínimos estableciendo el límite inferior en todos los bordes a cero, y luego haciendo un borde extra del lavabo a la fuente , con capacidad y límite inferior , forzando el flujo total de a y también .

Los siguientes problemas son casos especiales del problema del flujo de costo mínimo (incluimos breves bosquejos de cada reducción aplicable, por turno):

  • Problema de ruta más corto (fuente individual). Exigir que una solución viable al problema del flujo mínimo de costos envíe una unidad de flujo de una fuente designada a un sumidero designado . Dar todos los bordes capacidad infinita.
  • Problema de flujo máximo. Elija una gran demanda ( lo suficientemente grande como para superar el flujo máximo; por ejemplo, la suma de capacidades fuera del vértice fuente) Establecer los costos de todos los bordes en la instancia de flujo máximo a cero, e introducir un nuevo borde de fuente a fregadero con costo unitario y capacidad .
  • Problema de asignación. Supongamos que cada partito establecido en la bipartición tiene vertices, y denota la bipartición por . Dar cada uno Suministro y dar cada uno demanda . Cada borde es tener capacidad unitaria.

Soluciones

El problema del flujo de costo 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. Algunos de ellos son generalizaciones de algoritmos de flujo máximo, mientras que otros utilizan enfoques completamente diferentes.

Algoritmos fundamentales conocidos (tienen muchas variantes):

  • Ciclo cancelando: un método primal general.
  • Cancelación de corte: un método dual general.
  • Ciclo mínimo medio de cancelación: un simple algoritmo polinomio fuerte.
  • Sendero más corto y ampliación de la capacidad: métodos duales, que se pueden ver como la generalización del algoritmo Ford-Fulkerson.
  • Escala de costos: un enfoque primario-dual, que se puede ver como la generalización del algoritmo de la etiqueta de empuje.
  • algoritmo de red simplex: una versión especializada del método lineal de programación simplex.
  • algoritmo fuera de kilter por D. R. Fulkerson

Aplicación

Peso mínimo bipartito que coincide

Reducción de peso mínimo bipartito que coincida con el coste mínimo max problema de flujo

Dado un grafo bipartito G = (AB, E), el objetivo es encontrar la correspondencia de cardinalidad máxima en G que tenga un costo mínimo. Sea w: ER una función de peso en los bordes de E. El problema de correspondencia bipartita de peso mínimo o problema de asignación es encontrar una correspondencia perfecta 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). Asignamos la capacidad de todas las aristas en E′ a 1. Agregamos un vértice fuente s y lo conectamos a todos los vértices en A′ y agregamos un vértice sumidero t y conectamos 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 una correspondencia bipartita perfecta de peso mínimo en G si y solo si existe un flujo de costo mínimo en G′.

Véase también

  • LEMON (C+)
  • GNU Linear Programming Kit
  • Problema de flujo de red

Referencias

  1. ^ a b c Ravindra K. Ahuja; Thomas L. Magnanti " 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 coste mínimos 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 mínimo del flujo de costes: Un enfoque unificador de los algoritmos existentes y un nuevo algoritmo de búsqueda de árboles". Programación matemática. 25: 228–239. doi:10.1007/bf02591772.
  4. ^ Thomas R. Ervolina " S. Thomas McCormick (1993). "Dos algoritmos de cancelación de corte polinomio fuerte para el flujo de red de coste mínimo". Discreta Matemáticas aplicadas. 4 (2): 133-165. doi:10.1016/0166-218x(93)90025-j.
  5. ^ Andrew V. Goldberg " Robert E. Tarjan (1989). "Encontrar circulaciones de coste mínimo cancelando ciclos negativos". Journal of the ACM. 36 (4): 873-886. doi:10.1145/76359.76368.
  6. ^ Jack Edmonds " Richard M. Karp (1972). "Mejoras teóricas en 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. " Tarjan, Robert E. (1990). "Encontrando circulaciones de coste mínimo por aproximación sucesiva". Matemáticas de Investigación de Operaciones. 15 (3): 430-466. doi:10.1287/moor.15.3.430.
  8. ^ James B. Orlin (1997). "Un algoritmo de red simple de tiempo polinomio para flujos de coste mínimo". Programación matemática. 78 (2): 109–129. doi:10.1007/bf02614365. hdl:1721.1/2584.
  • Biblioteca LEMON C++ con varios algoritmos de flujo máximo y circulación mínima
  • La biblioteca de proyectos MCFClass C++ con un flujo mínimo de costes y algoritmos de trayectoria más cortos
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save