
En la teoría de la optimización , los problemas de flujo máximo implican encontrar un flujo factible a través de una red de flujo que obtenga el máximo caudal posible.
El problema del flujo máximo puede considerarse un caso especial de problemas de flujo en redes más complejos, como el problema de la circulación . El valor máximo de un flujo st (es decir, el flujo desde la fuente s hasta el sumidero t) es igual a la capacidad mínima de un corte st (es decir, el corte que separa s de t) en la red, como se establece en el teorema del flujo máximo y el corte mínimo .
Historia
El problema del flujo máximo fue formulado por primera vez en 1954 por TE Harris y FS Ross como un modelo simplificado del flujo de tráfico ferroviario soviético. [ 1 ] [ 2 ] [ 3 ]
En 1955, Lester R. Ford, Jr. y Delbert R. Fulkerson crearon el primer algoritmo conocido, el algoritmo de Ford-Fulkerson . [ 4 ] [ 5 ] En su artículo de 1955, [ 4 ] Ford y Fulkerson escribieron que el problema de Harris y Ross se formula de la siguiente manera (véase [ 1 ] pág. 5):
Consideremos una red ferroviaria que conecta dos ciudades a través de varias ciudades intermedias, donde cada enlace de la red tiene asignado un número que representa su capacidad. Suponiendo una condición de estado estacionario, calcule el flujo máximo entre las dos ciudades.
En su libro Flujos en redes , [ 5 ] en 1962, Ford y Fulkerson escribieron:
Fue planteado a los autores en la primavera de 1955 por TE Harris, quien, junto con el general FS Ross (retirado), había formulado un modelo simplificado del flujo del tráfico ferroviario, e identificó este problema en particular como el central sugerido por el modelo [11].
donde [11] se refiere al informe secreto de 1955 Fundamentos de un método para evaluar las capacidades de la red ferroviaria de Harris y Ross [ 3 ] (véase [ 1 ] pág. 5).
A lo largo de los años, se descubrieron diversas soluciones mejoradas al problema del flujo máximo, en particular el algoritmo de camino de aumento más corto de Edmonds y Karp, y de forma independiente Dinitz; el algoritmo de flujo de bloqueo de Dinitz; el algoritmo de reetiquetado de Goldberg y Tarjan ; y el algoritmo de flujo de bloqueo binario de Goldberg y Rao. Los algoritmos de Sherman [ 6 ] y Kelner, Lee, Orecchia y Sidford [ 7 ] [ 8 ] , respectivamente, encuentran un flujo máximo aproximadamente óptimo, pero solo funcionan en grafos no dirigidos.
En 2013, James B. Orlin publicó un artículo que describía unalgoritmo. [ 9 ]
En 2022, Li Chen, Rasmus Kyng, Yang P. Liu, Richard Peng, Maximilian Probst Gutenberg y Sushant Sachdeva publicaron un algoritmo de tiempo casi lineal que se ejecuta enpara el problema de flujo de costo mínimo del cual el problema de flujo máximo es un caso particular. [ 10 ] [ 11 ] Para el problema de camino más corto de origen único (SSSP) con pesos negativos – otro caso particular de un problema de flujo de costo mínimo – también se ha informado un algoritmo que se ejecuta en tiempo casi lineal. [ 12 ] [ 13 ] Ambos algoritmos fueron considerados los mejores artículos en el Simposio de 2022 sobre Fundamentos de la Informática . [ 14 ] [ 15 ] Una versión desaleatorizada del algoritmo de 2022 de Chen et al. fue presentada en el Simposio de 2023 sobre Fundamentos de la Informática [ 16 ] , estableciendo que el flujo de costo mínimo podría resolverse de forma determinista en tiempo casi lineal.
Definición

Primero establecemos algunas notaciones:
- Dejarser una red de flujo conser la fuente y el sumidero derespectivamente.
- Sies una función en los bordes deentonces su valor ense denota poro
Definición. La capacidad de una arista es la cantidad máxima de flujo que puede pasar a través de una arista. Formalmente es un mapa.
Definición. Un flujo es un mapa.que cumpla con lo siguiente:
- Restricción de capacidad . El flujo de una arista no puede exceder su capacidad, en otras palabras:a pesar de
- Conservación de flujos. La suma de los flujos que entran a un nodo debe ser igual a la suma de los flujos que salen de ese nodo, excepto en el origen y el destino. O bien:
Nota : Los flujos son asimétricos.a pesar de
Definición. El valor del flujo es la cantidad de flujo que pasa desde la fuente hasta el sumidero. Formalmente, para un flujoes dado por:
Definición. El problema del flujo máximo consiste en dirigir la mayor cantidad de flujo posible desde la fuente hasta el sumidero, en otras palabras, encontrar el flujo.con valor máximo.
Nótese que pueden existir varios flujos máximos, y si se permiten valores reales arbitrarios (o incluso racionales arbitrarios) de flujo (en lugar de solo enteros), existe exactamente un flujo máximo, o infinitos, ya que hay infinitas combinaciones lineales de los flujos máximos base. En otras palabras, si enviamosunidades de flujo en el bordeen un flujo máximo, yunidades de flujo enen otro flujo máximo, entonces para cadapodemos enviarunidades eny enrutar el flujo en los bordes restantes en consecuencia, para obtener otro flujo máximo. Si los valores de flujo pueden ser cualquier número real o racional, entonces hay infinitos talesvalores para cada par.
Algoritmos
Las siguientes tablas muestran el desarrollo histórico de los algoritmos para resolver el problema del flujo máximo. Muchas de las publicaciones citadas incluyen tablas similares que comparan sus resultados con trabajos anteriores.
Fuertemente polinómico
Un algoritmo de tiempo fuertemente polinomial tiene límites de tiempo polinomiales que dependen solo del número de entradas, pero no de la magnitud de estos números. Aquí, las entradas son los vértices (numerados a continuación como) y bordes (numerados como). La complejidad de cada algoritmo se expresa utilizando la notación O grande .
Pseudopolinomio y polinomio débil
Paralelamente al desarrollo de algoritmos de flujo fuertemente polinomiales, ha habido una larga línea de límites de tiempo pseudopolinomiales y débilmente polinomiales, cuyo tiempo de ejecución depende de la magnitud de las capacidades de entrada. Aquí, el valorSe refiere a la mayor capacidad de arista después de reescalar todas las capacidades a valores enteros . (Si la red contiene capacidades irracionales , este reescalado puede no ser posible y estos algoritmos pueden no producir soluciones exactas o pueden no converger incluso a una solución aproximada). La diferencia entre pseudopolinomio y débilmente polinomial es que una cota pseudopolinomial puede ser polinomial en , pero para una cota débilmente polinómica puede ser polinómica solo en.
Teorema del flujo integral
El teorema del flujo integral establece que
- Si cada arista en una red de flujo tiene capacidad entera, entonces existe un flujo máximo entero.
La afirmación no solo sostiene que el valor del flujo es un número entero, lo cual se deduce directamente del teorema del flujo máximo y el corte mínimo , sino que el flujo en cada arista es entero. Esto es crucial para muchas aplicaciones combinatorias (véase más adelante), donde el flujo a través de una arista puede indicar si el elemento correspondiente a dicha arista debe incluirse o no en el conjunto buscado.
Solicitud
Problema de flujo máximo con múltiples fuentes y múltiples sumideros

Dada una redcon un conjunto de fuentesy un conjunto de lavabosen lugar de una sola fuente y un solo sumidero, debemos encontrar el flujo máximo a través dePodemos transformar el problema de múltiples fuentes y múltiples sumideros en un problema de flujo máximo agregando una fuente consolidada que conecta con cada vértice eny un sumidero consolidado conectado por cada vértice en(también conocido como superfuente y supersumidero ) con capacidad infinita en cada borde (véase la figura 4.1.1).
Emparejamiento bipartito de cardinalidad máxima

Dado un grafo bipartito, debemos encontrar un emparejamiento de cardinalidad máxima en, es decir, un emparejamiento que contiene el mayor número posible de aristas. Este problema se puede transformar en un problema de flujo máximo mediante la construcción de una red., dónde
- contiene los bordes endirigido desdea.
- para cadaypara cada.
- para cada(Véase la figura 4.3.1).
Entonces el valor del flujo máximo enes igual al tamaño del emparejamiento máximo eny se puede encontrar una coincidencia de cardinalidad máxima tomando aquellos bordes que tienen flujoen un flujo máximo integral.
Cobertura mínima de caminos en un grafo acíclico dirigido
Dado un grafo dirigido acíclico, debemos encontrar el número mínimo de caminos disjuntos en vértices para cubrir cada vértice enPodemos construir un grafo bipartito.de, dónde
- .
Entonces se puede demostrar quetiene un juegode tamañosi y solo sitiene una cobertura de caminos disjuntos en vérticesque contienebordes ysenderos, dondees el número de vértices enPor lo tanto, el problema se puede resolver encontrando el emparejamiento de cardinalidad máxima enen cambio.
Supongamos que hemos encontrado una coincidenciadey construyó la portadade ello. Intuitivamente, si dos vérticesse emparejan en, luego el bordeestá contenido en. Claramente el número de aristas enesPara ver esoSi son disjuntos en vértices, considere lo siguiente:
- Cada vérticeenpuede no coincidir en, en cuyo caso no quedan bordes que salganen; o puede coincidir , en cuyo caso queda exactamente una arista.enEn cualquier caso, no más de una arista sale de ningún vértice.en.
- De manera similar para cada vérticeen– si coincide, hay un único borde entranteen; de lo contrariono tiene aristas entrantes en.
Por lo tanto, ningún vértice tiene dos aristas entrantes o dos salientes en, lo que significa todos los caminos enson disjuntos en vértices.
Para demostrar que la portadatiene tamaño, comenzamos con una cubierta vacía y la construimos incrementalmente. Para agregar un vérticePara la cubierta, podemos agregarla a una ruta existente o crear una nueva ruta de longitud cero que comience en ese vértice. El primer caso es aplicable siempre quey algún camino en la portada comienza en, oy algún camino termina en. Este último caso siempre es aplicable. En el primer caso, el número total de aristas en la cobertura aumenta en 1 y el número de caminos permanece igual; en el segundo caso, el número de caminos aumenta y el número de aristas permanece igual. Ahora está claro que después de cubrir todovértices, la suma del número de caminos y aristas en la cubierta es. Por lo tanto, si el número de aristas en la cubierta es, el número de caminos es.
Caudal máximo con capacidades de vértice

DejarSea una red. Supongamos que hay capacidad en cada nodo además de la capacidad de la arista, es decir, una asignación.de tal manera que el flujodebe satisfacer no solo la restricción de capacidad y la conservación de flujos, sino también la restricción de capacidad del vértice.
En otras palabras, la cantidad de flujo que pasa por un vértice no puede exceder su capacidad. Para encontrar el flujo máximo a través de, podemos transformar el problema en el problema de flujo máximo en el sentido original mediante la expansión. Primero, cadaes reemplazado pory, dóndeestá conectado por aristas que entranyestá conectado a los bordes que salen deluego asignar capacidadal borde que conectay(véase la figura 4.4.1). En esta red ampliada, se elimina la restricción de capacidad de los vértices y, por lo tanto, el problema puede tratarse como el problema original de flujo máximo.
Número máximo de caminos de s a t
Dado un grafo dirigidoy dos vérticesy, debemos encontrar el número máximo de caminos desdeaEste problema tiene varias variantes:
1. Los caminos deben ser disjuntos en aristas. Este problema se puede transformar en un problema de flujo máximo mediante la construcción de una red.de, conyser la fuente y el sumidero derespectivamente, y asignando a cada arista una capacidad deEn esta red, el flujo máximo essi haycaminos disjuntos en aristas.
2. Los caminos deben ser independientes, es decir, disjuntos en vértices (excepto pory). Podemos construir una reddecon capacidades de vértice, donde las capacidades de todos los vértices y todas las aristas sonEntonces, el valor del flujo máximo es igual al número máximo de caminos independientes desdea.
3. Además de que los caminos sean disjuntos en aristas y/o vértices, también tienen una restricción de longitud: solo contamos los caminos cuya longitud es exactamenteo como máximoLa mayoría de las variantes de este problema son NP-completas , excepto para valores pequeños de. [ 43 ]
Problema de cierre
El cierre de un grafo dirigido es un conjunto de vértices C tal que ninguna arista sale de C. El problema del cierre consiste en encontrar el cierre de peso máximo o mínimo en un grafo dirigido ponderado por vértices. Puede resolverse en tiempo polinomial mediante una reducción al problema del flujo máximo.
Aplicaciones en el mundo real
eliminación de béisbol

En el problema de eliminación de béisbol hay n equipos compitiendo en una liga. En una etapa específica de la temporada de la liga, w i es el número de victorias y r i es el número de juegos que quedan por jugar para el equipo i y r ij es el número de juegos que quedan contra el equipo j . Un equipo es eliminado si no tiene ninguna posibilidad de terminar la temporada en primer lugar. La tarea del problema de eliminación de béisbol es determinar qué equipos son eliminados en cada punto durante la temporada. Schwartz [ 44 ] propuso un método que reduce este problema a un flujo máximo de red. En este método se crea una red para determinar si el equipo k es eliminado.
Sea G = ( V , E ) una red donde s , t ∈ V son la fuente y el sumidero respectivamente. Se agrega un nodo de juego ij , que representa el número de jugadas entre estos dos equipos. También agregamos un nodo de equipo para cada equipo y conectamos cada nodo de juego { i , j } con i < j a V , y conectamos cada uno de ellos desde s mediante una arista con capacidad r ij , que representa el número de jugadas entre estos dos equipos. También agregamos un nodo de equipo para cada equipo y conectamos cada nodo de juego { i , j } con dos nodos de equipo i y j para asegurar que uno de ellos gane. No es necesario restringir el valor de flujo en estas aristas. Finalmente, se crean aristas desde el nodo de equipo i al nodo sumidero t y se establece la capacidad de w k + r k – w i para evitar que el equipo i gane más que w k + r k . Sea S el conjunto de todos los equipos que participan en la liga y sea
- .
En este método se afirma que el equipo k no se elimina si y solo si existe un valor de flujo de tamaño r ( S − { k }) en la red G . En el artículo mencionado se demuestra que este valor de flujo es el valor de flujo máximo de s a t .
Programación de vuelos de aerolíneas
En la industria aérea, un problema importante es la programación de las tripulaciones de vuelo. Este problema puede considerarse una aplicación del flujo máximo de red extendido. La entrada de este problema es un conjunto de vuelos F que contiene información sobre dónde y cuándo sale y llega cada vuelo. En una versión de la programación aérea, el objetivo es generar un horario factible con un máximo de k tripulaciones.
Para resolver este problema se utiliza una variación del problema de circulación denominada circulación acotada, que es la generalización de los problemas de flujo en redes , con la restricción adicional de un límite inferior en los flujos de arista.
Sea G = ( V , E ) una red con s , t ∈ V como nodos de origen y destino. Para el origen y el destino de cada vuelo i , se añaden dos nodos a V , el nodo s i como origen y el nodo d i como destino del vuelo i . También se añaden las siguientes aristas a E :
- Una arista con capacidad [0, 1] entre s y cada s i .
- Una arista con capacidad [0, 1] entre cada d i y t .
- Una arista con capacidad [1, 1] entre cada par de s i y d i .
- Una arista con capacidad [0, 1] entre cada d i y s j , si la fuente s j es alcanzable con una cantidad razonable de tiempo y costo desde el destino del vuelo i .
- Una arista con capacidad [0, ∞ ] entre s y t .
En el método mencionado, se afirma y se demuestra que encontrar un valor de flujo k en G entre s y t es igual a encontrar un programa factible para el conjunto de vuelos F con como máximo k tripulaciones. [ 45 ]
Otra versión de la programación de aerolíneas es encontrar las tripulaciones mínimas necesarias para realizar todos los vuelos. Para encontrar una respuesta a este problema, se crea un grafo bipartito G' = ( A ∪ B , E ) donde cada vuelo tiene una copia en el conjunto A y en el conjunto B . Si el mismo avión puede realizar el vuelo j después del vuelo i , i ∈ A está conectado a j ∈ B . Un emparejamiento en G' induce una programación para F y obviamente el emparejamiento bipartito máximo en este grafo produce una programación de aerolínea con el número mínimo de tripulaciones. [ 45 ] Como se menciona en la parte de Aplicación de este artículo, el emparejamiento bipartito de cardinalidad máxima es una aplicación del problema del flujo máximo.
Problema de circulación-demanda
Existen fábricas que producen bienes y pueblos a los que se deben entregar. Están conectados por una red de carreteras, cada una con una capacidad c para el flujo máximo de mercancías. El problema consiste en determinar si existe una circulación que satisfaga la demanda. Este problema puede transformarse en un problema de flujo máximo.
- Agregue un nodo fuente s y agregue aristas desde él a cada nodo de fábrica f i con capacidad p i donde p i es la tasa de producción de la fábrica f i .
- Agregue un nodo sumidero t y agregue aristas desde todas las aldeas v i a t con capacidad d i donde d i es la tasa de demanda de la aldea v i .
Sea G = ( V , E ) esta nueva red. Existe una circulación que satisface la demanda si y solo si :
- Valor máximo de flujo ( G ).
Si existe circulación, analizar la solución de flujo máximo daría la respuesta sobre cuántos bienes deben enviarse por una ruta determinada para satisfacer la demanda.
El problema se puede extender agregando un límite inferior al flujo en algunos bordes. [ 46 ]
Segmentación de imágenes


En su libro, Kleinberg y Tardos presentan un algoritmo para segmentar una imagen. [ 48 ] Presentan un algoritmo para encontrar el fondo y el primer plano en una imagen. Más precisamente, el algoritmo toma como entrada un mapa de bits modelado de la siguiente manera: a i ≥ 0 es la probabilidad de que el píxel i pertenezca al primer plano, b i ≥ 0 es la probabilidad de que el píxel i pertenezca al fondo, y p ij es la penalización si dos píxeles adyacentes i y j se colocan uno en el primer plano y el otro en el fondo. El objetivo es encontrar una partición ( A , B ) del conjunto de píxeles que maximice la siguiente cantidad
- ,
En efecto, para los píxeles en A (considerados como primer plano), ganamos a i ; para todos los píxeles en B (considerados como fondo), ganamos b i . En el borde, entre dos píxeles adyacentes i y j , perdemos p ij . Esto equivale a minimizar la cantidad
porque

Ahora construimos la red cuyos nodos son el píxel, más una fuente y un sumidero (véase la figura de la derecha). Conectamos la fuente con el píxel i mediante una arista de peso a i . Conectamos el píxel i con el sumidero mediante una arista de peso b i . Conectamos el píxel i con el píxel j con un peso p ij . Ahora, queda calcular un corte mínimo en esa red (o, equivalentemente, un flujo máximo). La última figura muestra un corte mínimo.
Extensiones
1. En el problema del flujo de costo mínimo , cada arista ( u ,v) tiene un coeficiente de costo a uv además de su capacidad. Si el flujo a través de la arista es f uv , entonces el costo total es a uv f uv . Se requiere encontrar un flujo de tamaño d dado con el menor costo. En la mayoría de las variantes, los coeficientes de costo pueden ser positivos o negativos. Existen varios algoritmos de tiempo polinomial para este problema.
2. El problema del flujo máximo puede ampliarse mediante restricciones disyuntivas : una restricción disyuntiva negativa indica que un par de aristas no puede tener simultáneamente un flujo distinto de cero; una restricción disyuntiva positiva indica que, en un par de aristas, al menos una debe tener un flujo distinto de cero. Con restricciones negativas, el problema se vuelve fuertemente NP-difícil incluso para redes simples. Con restricciones positivas, el problema es polinomial si se permiten flujos fraccionarios, pero puede ser fuertemente NP-difícil cuando los flujos deben ser enteros. [ 49 ]
Referencias
- 1 2 3 Schrijver, A. (2002). "Sobre la historia de los problemas de transporte y flujo máximo". Programación matemática . 91 (3): 437– 445. CiteSeerX 10.1.1.23.5134 . doi : 10.1007/s101070100259 . S2CID 10210675 .
- ↑ Gass, Saul I.; Assad, Arjang A. (2005). «Desarrollos matemáticos, algorítmicos y profesionales de la investigación operativa de 1951 a 1956». Cronología anotada de la investigación operativa . Serie internacional en investigación operativa y ciencias de la gestión. Vol. 75. pp. 79–110 . doi : 10.1007/0-387-25837-X_5 (inactivo el 1 de julio de 2025). ISBN 978-1-4020-8116-3.
{{cite book}}: CS1 maint: DOI inactivo desde julio de 2025 ( enlace ) - 1 2 Harris, TE ; Ross, FS (1955). "Fundamentos de un método para evaluar las capacidades de la red ferroviaria" (PDF) . Memorando de investigación . Archivado del original (PDF) el 8 de enero de 2014.
- 1 2 Ford, LR ; Fulkerson, DR (1956). "Flujo máximo a través de una red" . Revista Canadiense de Matemáticas . 8 : 399–404 . doi : 10.4153/CJM-1956-045-5 .
- 1 2 Ford, LR, Jr.; Fulkerson, DR, Flujos en redes , Princeton University Press (1962).
- ↑ Sherman, Jonah (2013). «Flujos casi máximos en tiempo casi lineal». Actas del 54.º Simposio Anual del IEEE sobre Fundamentos de la Informática . págs. 263–269 . arXiv : 1304.2077 . doi : 10.1109/FOCS.2013.36 . ISBN 978-0-7695-5135-7. S2CID 14681906 .
- ↑ Kelner, JA; Lee, YT; Orecchia, L.; Sidford, A. (2014). "Un algoritmo de tiempo casi lineal para el flujo máximo aproximado en grafos no dirigidos y sus generalizaciones multicommodity" (PDF) . Actas del vigésimo quinto simposio anual ACM-SIAM sobre algoritmos discretos . pág. 217. arXiv : 1304.2338 . doi : 10.1137/1.9781611973402.16 . ISBN 978-1-61197-338-9. S2CID 10733914 . Archivado del original (PDF) el 3 de marzo de 2016.
- ↑ Knight, Helen (7 de enero de 2014). "Un nuevo algoritmo puede simplificar drásticamente las soluciones al problema del 'flujo máximo'" . Noticias del MIT. Archivado del original el 26 de febrero de 2014. Consultado el 8 de enero de 2014 .
- 1 2 Orlin, James B. (2013). "Flujos máximos en tiempo O(nm), o mejor". Actas del cuadragésimo quinto simposio anual de la ACM sobre Teoría de la Computación . págs. 765–774 . CiteSeerX 10.1.1.259.5759 . doi : 10.1145/2488608.2488705 . ISBN 9781450320290. S2CID 207205207 .
- 1 2 Chen, L.; Kyng, R.; Liu, YP; Gutenberg, MP; Sachdeva, S. (2022). "Flujo máximo y flujo de costo mínimo en tiempo casi lineal". arXiv : 2203.00671 [ cs.DS ].
- ↑ Klarreich, Erica (8 de junio de 2022). "Investigadores logran un algoritmo 'absurdamente rápido' para el flujo de red" . Quanta Magazine . Consultado el 8 de junio de 2022 .
- ↑ Bernstein, Aaron; Nanongkai, Danupon; Wulff-Nilsen, Christian (30 de octubre de 2022). "Caminos más cortos de una sola fuente con peso negativo en tiempo casi lineal". arXiv : 2203.03456 [ cs.DS ].
- ↑ Brubaker, Ben (18 de enero de 2023). "Finalmente, un algoritmo rápido para caminos más cortos en grafos negativos" . Quanta Magazine . Consultado el 25 de enero de 2023 .
- ↑ "FOCS 2022" . focs2022.eecs.berkeley.edu . Consultado el 25 de enero de 2023 .
- ↑ Santosh, Nagarakatte. "FOCS 2022 Best Paper Award for Prof. Aaron Bernstein's Paper" . www.cs.rutgers.edu . Consultado el 25 de enero de 2023 .
- ↑ Brand, Jan Van Den; Chen, Li; Kyng, Rasmus; Liu, Yang P.; Peng, Richard; Gutenberg, Maximilian Probst; Sachdeva, Sushant; Sidford, Aaron (2023-11). "Un algoritmo determinista de tiempo casi lineal para flujo de costo mínimo" . 2023 IEEE 64th Annual Symposium on Foundations of Computer Science (FOCS) : 503–514 . doi : 10.1109/FOCS57990.2023.00037 .
{{cite journal}}: Compruebe los valores de fecha en:|date=( ayuda ) - ↑ Edmonds, Jack; Karp, Richard M. (abril de 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 .Anunciado previamente en la Conferencia Internacional sobre Estructuras Combinatorias y sus Aplicaciones, Calgary, Alberta, 1969, MR 0266680 .
- ↑ Dinic, EA (1970). "Un algoritmo para la solución del problema del flujo máximo en una red con estimación de potencia". Doklady Akademii Nauk SSSR . 194 : 754– 757. MR 0287976 .
- ↑ Karzanov, AV (1974). "El problema de encontrar el flujo máximo en una red mediante el método de preflujos". Doklady Akademii Nauk SSSR . 215 : 49– 52. MR 0343879 .
- ↑ Čerkasskiĭ, BV (1977). "Un algoritmo para la construcción del flujo máximo en una red con un gasto laboral deacciones". Métodos matemáticos para la solución de problemas económicos . 7 : 117–126 . MR 0503654 .
- ↑ Malhotra, VM; Kumar, M. Pramodh; Maheshwari, SN (1978). "Unalgoritmo para encontrar flujos máximos en redes" (PDF) . Information Processing Letters . 7 (6): 277– 278. doi : 10.1016/0020-0190(78)90016-9 .
- ↑ Galil, Zvi (1980). "Unalgoritmo para el problema del flujo máximo". Acta Informatica . 14 (3): 221– 242. doi : 10.1007/BF00264254 . MR 0587133 . Versión preliminar, "Un nuevo algoritmo para el problema del flujo máximo", XIX Simposio Anual sobre Fundamentos de la Informática (FOCS) , 1978.
- ↑ Galil, Zvi ; Naamad, Amnón (1980). "Unalgoritmo para el problema del flujo máximo". Journal of Computer and System Sciences . 21 (2): 203– 217. doi : 10.1016/0022-0000(80)90035-5 .Circuló como manuscrito inédito en 1978 y se publicó en forma preliminar como "Network flow and generalized path compression", 20th Annual Symposium on Foundations of Computer Science (FOCS) , 1979, doi : 10.1145/800135.804394 .
- ↑ Shiloach, Yossi. UnAlgoritmo de flujo máximo (Informe técnico STAN-CS-78-802). Departamento de Ciencias de la Computación de la Universidad de Stanford.Según lo citado por Galil y Naamad (1980)
- ↑ Sleator, Daniel D. ; Tarjan, Robert Endre (1983). "Una estructura de datos para árboles dinámicos". Journal of Computer and System Sciences . 26 (3): 362– 391. doi : 10.1016/0022-0000(83)90006-5 . MR 0710253 . Versión preliminar, 13.º Simposio ACM sobre Teoría de la Computación (STOC) , 1981, doi : 10.1145/800076.802464
- ↑ Goldberg, AV ; Tarjan, RE (1988). "Un nuevo enfoque al problema del flujo máximo" . Journal of the ACM . 35 (4): 921. doi : 10.1145/48014.61051 . S2CID 52152408 . Versión preliminar, 18.º Simposio Anual de la ACM sobre Teoría de la Computación (STOC) , 1986, doi : 10.1145/12130.12144
- ↑ Cheriyan, Joseph; Hagerup, Torben (1995). "Un algoritmo de flujo máximo aleatorio". SIAM Journal on Computing . 24 (2): 203– 226. doi : 10.1137/S0097539791221529 . MR 1320205 . Versión preliminar en el 30.º Simposio Anual sobre Fundamentos de la Informática (FOCS) , 1989, doi : 10.1109/SFCS.1989.63465
- ↑ Alon, Noga (1990). "Generación de permutaciones pseudoaleatorias y algoritmos de flujo máximo" (PDF) . Information Processing Letters . 35 (4): 201– 204. doi : 10.1016/0020-0190(90)90024-R . MR 1066123 . Citado como manuscrito de 1989 por Cheriyan, Hagerup y Mehlhorn en 1990.
- ^ Cheriyan, José; Hagerup, Torben; Mehlhorn, Kurt (1996). "Un-algoritmo de flujo máximo en tiempo". SIAM Journal on Computing . 25 (6): 1144– 1170. doi : 10.1137/S0097539791278376 . hdl : 11858/00-001M-0000-0014-B08A-3 . MR 1417893 . Versión preliminar, "¿Se puede calcular un flujo máximo entiempo?", XVII Coloquio Internacional sobre Autómatas, Lenguajes y Programación (ICALP), 1990, doi : 10.1007/BFb0032035
- ↑ King, Valerie ; Rao, S.; Tarjan, Robert Endre (1992). "Un algoritmo de flujo máximo determinista más rápido" . En Frederickson, Greg N. (ed.). Actas del Tercer Simposio Anual ACM/SIGACT-SIAM sobre Algoritmos Discretos, 27-29 de enero de 1992, Orlando, Florida, EE . UU . pp. 157–164 .
- ↑ Phillips, Steven J. ; Westbrook, Jeffery R. (1998). "On-line load balance and network flow". Algorithmica . 21 (3): 245– 261. doi : 10.1007/PL00009214 .Versión preliminar, 25º Simposio ACM sobre Teoría de la Computación (STOC) , 1993, doi : 10.1145/167088.167201 .
- ↑ King, V. ; Rao, S. ; Tarjan, R. (1994). "Un algoritmo de flujo máximo determinista más rápido". Journal of Algorithms . 17 (3): 447– 474. doi : 10.1006/jagm.1994.1044 . MR 1300259 .
- ↑ Orlin, James B.; Gong, Xiao-yue (2021). "Un algoritmo rápido de flujo máximo". Networks . 77 (2): 287– 321. doi : 10.1002/net.22001 . hdl : 1721.1/134021 . MR 4264487 .
- ↑ Ford, LR Jr. ; Fulkerson, DR (1956). "Flujo máximo a través de una red". Revista Canadiense de Matemáticas . 8 : 399– 404. doi : 10.4153/CJM-1956-045-5 . MR 0079251 .
- ↑ Goldberg, AV ; Rao, S. (1998). "Más allá de la barrera de descomposición del flujo" . Journal of the ACM . 45 (5): 783. doi : 10.1145/290179.290181 . S2CID 96030 .
- ↑ Kathuria, T.; Liu, YP; Sidford, A. (16–19 de noviembre de 2020). Capacidad unitaria de flujo máximo en casiTiempo . Durham, Carolina del Norte, EE. UU.: IEEE. págs. 119–130 .
- ↑ Madry, Aleksander (9–11 de octubre de 2016). Cálculo del flujo máximo con flujos eléctricos aumentados . New Brunswick, Nueva Jersey: IEEE. págs. 593–602 .
- ^ Marca, J. vd; Lee, YT; Nanongkai, D.; Peng, R.; Saranurak, T.; Sidford, A.; Canción, Z.; Wang, D. (16 a 19 de noviembre de 2020). "Emparejamiento bipartito en tiempo casi lineal en gráficos moderadamente densos" . Durham, Carolina del Norte, Estados Unidos: IEEE. págs. 919-930 .
- ↑ Brand, J. vd; Lee, YT; Liu, YP; Saranurak, T.; Sidford, A; Song, Z.; Wang, D. (2021). "Flujos de costo mínimo, MDP y regresión ℓ1 en tiempo casi lineal para instancias densas". arXiv : 2101.05719 [ cs.DS ].
- ↑ Gao, Y.; Liu, YP; Peng, R. (2021). "Flujos eléctricos totalmente dinámicos: flujo máximo disperso más rápido que Goldberg-Rao". arXiv : 2101.07233 [ cs.DS ].
- ↑ Brand, Jan Van Den; Chen, Li; Kyng, Rasmus; Liu, Yang P.; Peng, Richard; Gutenberg, Maximilian Probst; Sachdeva, Sushant; Sidford, Aaron (2023-11). "Un algoritmo determinista de tiempo casi lineal para flujo de costo mínimo" . 2023 IEEE 64th Annual Symposium on Foundations of Computer Science (FOCS) : 503–514 . doi : 10.1109/FOCS57990.2023.00037 .
{{cite journal}}: Compruebe los valores de fecha en:|date=( ayuda ) - ^ Bernstein, A.; Blikstad, J.; Saranurak, T.; Tu, T. (2024). "Flujo máximo mediante el aumento de rutas enTiempo". arXiv : 2406.03648 [ cs.DS ].
- ↑ Itai, A.; Perl, Y.; Shiloach, Y. (1982). "La complejidad de encontrar caminos disjuntos máximos con restricciones de longitud". Networks . 12 (3): 277– 286. doi : 10.1002/net.3230120306 . ISSN 1097-0037 .
- ↑ Schwartz, BL (1966). "Posibles ganadores en torneos parcialmente completados". SIAM Review . 8 (3): 302– 308. Bibcode : 1966SIAMR...8..302S . doi : 10.1137/1008062 . JSTOR 2028206 .
- 1 2 Thomas H. Cormen , Charles E. Leiserson , Ronald L. Rivest y Clifford Stein (2001). «26. Flujo máximo». Introducción a los algoritmos, segunda edición . MIT Press y McGraw-Hill. págs. 643–668 . ISBN 978-0-262-03293-3.
{{cite book}}: CS1 maint: varios nombres: lista de autores ( enlace ) - ↑ Carl Kingsford. "Extensiones de caudal máximo: circulaciones con demandas" (PDF) .
- ↑ "Proyecto imagesegmentationwithmaxflow, que contiene el código fuente para producir estas ilustraciones" . GitLab . Archivado del original el 22 de diciembre de 2019. Recuperado el 22 de diciembre de 2019 .
- ↑ "Diseño de algoritmos" . pearson.com . Consultado el 21 de diciembre de 2019 .
- ↑ Schauer, Joachim; Pferschy, Ulrich (1 de julio de 2013). "El problema del flujo máximo con restricciones disyuntivas". Journal of Combinatorial Optimization . 26 (1): 109– 119. CiteSeerX 10.1.1.414.4496 . doi : 10.1007/s10878-011-9438-7 . ISSN 1382-6905 . S2CID 6598669 .
Lecturas adicionales
- Joseph Cheriyan y Kurt Mehlhorn (1999). "Análisis de la regla de selección de nivel más alto en el algoritmo de flujo máximo con empuje de preflujo". Information Processing Letters . 69 (5): 239– 242. CiteSeerX 10.1.1.42.8563 . doi : 10.1016/S0020-0190(99)00019-8 .
- Daniel D. Sleator y Robert E. Tarjan (1983). "Una estructura de datos para árboles dinámicos" (PDF) . Journal of Computer and System Sciences . 26 (3): 362– 391. doi : 10.1016/0022-0000(83)90006-5 . ISSN 0022-0000 .
- Eugene Lawler (2001). «4. Flujos de red». Optimización combinatoria: redes y matroides . Dover. págs. 109–177 . ISBN 978-0-486-41453-9.
- Problema de flujo de red
- Problemas computacionales en la teoría de grafos