
En algoritmos de grafos , el problema del camino más ancho consiste en encontrar un camino entre dos vértices designados en un grafo ponderado , maximizando el peso de la arista de menor peso en dicho camino. Este problema también se conoce como el problema del camino de máxima capacidad . Es posible adaptar la mayoría de los algoritmos de camino más corto para calcular los caminos más anchos, modificándolos para que utilicen la distancia del cuello de botella en lugar de la longitud del camino. [ 1 ] Sin embargo, en muchos casos, existen algoritmos aún más rápidos.
Por ejemplo, en un grafo que representa las conexiones entre enrutadores en Internet , donde el peso de una arista representa el ancho de banda de una conexión entre dos enrutadores, el problema de la ruta más ancha consiste en encontrar una ruta de extremo a extremo entre dos nodos de Internet que tenga el máximo ancho de banda posible. [ 2 ] El peso de arista más pequeño en esta ruta se conoce como la capacidad o ancho de banda de la ruta. Además de sus aplicaciones en el enrutamiento de redes, el problema de la ruta más ancha también es un componente importante del método Schulze para decidir el ganador de una elección múltiple, [ 3 ] y se ha aplicado a la composición digital , [ 4 ] el análisis de rutas metabólicas , [ 5 ] y el cálculo de flujos máximos . [ 6 ]
Un problema estrechamente relacionado, el problema del camino minimax o problema del camino más corto en un cuello de botella, busca el camino que minimice el peso máximo de cualquiera de sus aristas. Tiene aplicaciones que incluyen la planificación del transporte . [ 7 ] Cualquier algoritmo para el problema del camino más ancho puede transformarse en un algoritmo para el problema del camino minimax, o viceversa, invirtiendo el sentido de todas las comparaciones de peso realizadas por el algoritmo, o equivalentemente reemplazando cada peso de arista por su negación.
Grafos no dirigidos
In an undirected graph, a widest path may be found as the path between the two vertices in the maximum spanning tree of the graph, and a minimax path may be found as the path between the two vertices in the minimum spanning tree.[8][9][10] It follows immediately from this equivalence that all pairs widest paths in an -vertex undirected graph can be computed in time .[11]
In any graph, directed or undirected, there is a straightforward algorithm for finding a widest path once the weight of its minimum-weight edge is known: simply delete all smaller edges and search for any path among the remaining edges using breadth-first search or depth-first search. Based on this test, there also exists a linear timealgorithm for finding a widest s-t path in an undirected graph, that does not use the maximum spanning tree. The main idea of the algorithm is to apply the linear-time path-finding algorithm to the median edge weight in the graph, and then either to delete all smaller edges or contract all larger edges according to whether a path does or does not exist, and recurse in the resulting smaller graph.[9][12][13]
Fernández, Garfinkel & Arbiol (1998) use undirected bottleneck shortest paths in order to form compositeaerial photographs that combine multiple images of overlapping areas. In the subproblem to which the widest path problem applies, two images have already been transformed into a common coordinate system; the remaining task is to select a seam, a curve that passes through the region of overlap and divides one of the two images from the other. Pixels on one side of the seam will be copied from one of the images, and pixels on the other side of the seam will be copied from the other image. Unlike other compositing methods that average pixels from both images, this produces a valid photographic image of every part of the region being photographed. They weigh the edges of a grid graph by a numeric estimate of how visually apparent a seam across that edge would be, and find a bottleneck shortest path for these weights. Using this path as the seam, rather than a more conventional shortest path, causes their system to find a seam that is difficult to discern at all of its points, rather than allowing it to trade off greater visibility in one part of the image for lesser visibility elsewhere.[4]
Una solución al problema de la ruta minimax entre las dos esquinas opuestas de un grafo de cuadrícula puede utilizarse para hallar la distancia de Fréchet débil entre dos cadenas poligonales . En este caso, cada vértice del grafo de cuadrícula representa un par de segmentos de línea, uno de cada cadena, y el peso de una arista representa la distancia de Fréchet necesaria para pasar de un par de segmentos a otro. [ 14 ]
Si todos los pesos de las aristas de un grafo no dirigido son positivos , entonces las distancias minimax entre pares de puntos (los pesos máximos de las aristas de los caminos minimax) forman una ultramétrica ; recíprocamente, todo espacio ultramétrico finito proviene de distancias minimax de esta manera. [ 15 ] Una estructura de datos construida a partir del árbol de expansión mínima permite consultar la distancia minimax entre cualquier par de vértices en tiempo constante por consulta, utilizando consultas del ancestro común más bajo en un árbol cartesiano . La raíz del árbol cartesiano representa la arista más pesada del árbol de expansión mínima, y los hijos de la raíz son árboles cartesianos construidos recursivamente a partir de los subárboles del árbol de expansión mínima formados al eliminar la arista más pesada. Las hojas del árbol cartesiano representan los vértices del grafo de entrada, y la distancia minimax entre dos vértices es igual al peso del nodo del árbol cartesiano que es su ancestro común más bajo. Una vez que las aristas del árbol de expansión mínima se han ordenado, este árbol cartesiano se puede construir en tiempo lineal. [ 16 ]
Grafos dirigidos
En los grafos dirigidos , no se puede utilizar la solución del árbol de expansión máxima. En su lugar, se conocen varios algoritmos diferentes; la elección del algoritmo a utilizar depende de si el vértice de inicio o de destino de la ruta es fijo, o si se deben encontrar rutas para muchos vértices de inicio o de destino simultáneamente.
Todos los pares
El problema del camino más ancho entre todos los pares de vértices tiene aplicaciones en el método Schulze para elegir un ganador en elecciones con múltiples candidatos, donde los votantes clasifican a los candidatos por orden de preferencia . El método Schulze construye un grafo dirigido completo en el que los vértices representan a los candidatos y cada par de vértices está conectado por una arista. Cada arista va dirigida del ganador al perdedor de una contienda por pares entre los dos candidatos que conecta, y está etiquetada con el margen de victoria de dicha contienda. A continuación, el método calcula los caminos más anchos entre todos los pares de vértices, y el ganador es el candidato cuyo vértice tiene caminos más anchos hacia cada oponente que viceversa. [ 3 ] Los resultados de una elección que utiliza este método son consistentes con el método Condorcet : un candidato que gana todas las contiendas por pares gana automáticamente toda la elección; pero generalmente permite seleccionar un ganador, incluso en situaciones donde el propio método Condorcet falla. [ 17 ] El método Schulze ha sido utilizado por varias organizaciones, incluida la Fundación Wikimedia . [ 18 ]
Para calcular los anchos de camino más amplios para todos los pares de nodos en un grafo dirigido denso , como los que surgen en la aplicación de votación, el enfoque conocido asintóticamente más rápido toma un tiempo O ( n (3+ω)/2 ) donde ω es el exponente para la multiplicación rápida de matrices . Usando los mejores algoritmos conocidos para la multiplicación de matrices, este límite de tiempo se convierte en O ( n 2.688 ) . [ 19 ] En cambio, la implementación de referencia para el método Schulze usa una versión modificada del algoritmo más simple de Floyd-Warshall , que toma un tiempo O ( n 3 ) . [ 3 ] Para grafos dispersos , puede ser más eficiente aplicar repetidamente un algoritmo de camino más amplio de una sola fuente.
Fuente única
Si las aristas se ordenan según sus pesos, una versión modificada del algoritmo de Dijkstra puede calcular los cuellos de botella entre un vértice inicial designado y todos los demás vértices del grafo en tiempo lineal. La clave de la aceleración con respecto a una versión convencional del algoritmo de Dijkstra reside en que la secuencia de distancias de cuello de botella a cada vértice, en el orden en que este algoritmo considera los vértices, es una subsecuencia monótona de la secuencia ordenada de pesos de las aristas. Por lo tanto, la cola de prioridad del algoritmo de Dijkstra puede implementarse como una cola de cubetas : un array indexado por los números del 1 al m (el número de aristas en el grafo), donde la celda i del array contiene los vértices cuya distancia de cuello de botella es el peso de la arista con la posición i en el orden ordenado. Este método permite resolver el problema del camino más ancho con la misma rapidez que la ordenación ; por ejemplo, si los pesos de las aristas se representan como enteros, los límites de tiempo para la ordenación de enteros de una lista de m enteros también se aplicarían a este problema. [ 13 ]
Fuente única y destino único
Berman y Handler (1987) sugieren que los vehículos de servicio y los vehículos de emergencia deberían usar rutas minimax al regresar de una llamada de servicio a su base. En esta aplicación, el tiempo de regreso es menos importante que el tiempo de respuesta si ocurre otra llamada de servicio mientras el vehículo está en proceso de regreso. Al usar una ruta minimax, donde el peso de una arista es el tiempo máximo de viaje desde un punto en la arista hasta la llamada de servicio más lejana posible, se puede planificar una ruta que minimice el retraso máximo posible entre la recepción de una llamada de servicio y la llegada de un vehículo de respuesta. [ 7 ] Ullah, Lee y Hassoun (2009) usan rutas maximin para modelar las cadenas de reacción dominantes en redes metabólicas ; en su modelo, el peso de una arista es la energía libre de la reacción metabólica representada por la arista. [ 5 ]
Otra aplicación de los caminos más amplios surge en el algoritmo de Ford-Fulkerson para el problema del flujo máximo . Aumentar repetidamente un flujo a lo largo de un camino de capacidad máxima en la red residual del flujo conduce a una pequeña cota, O ( m log U ) , en el número de aumentos necesarios para encontrar un flujo máximo; aquí, se supone que las capacidades de las aristas son enteros que son como máximo U. Sin embargo, este análisis no depende de encontrar un camino que tenga el máximo exacto de capacidad; cualquier camino cuya capacidad esté dentro de un factor constante del máximo es suficiente. Combinar esta idea de aproximación con el método de aumento de camino más corto del algoritmo de Edmonds-Karp conduce a un algoritmo de flujo máximo con un tiempo de ejecución O ( mn log U ) . [ 6 ]
Es posible encontrar rutas de máxima capacidad y rutas minimax con un único origen y un único destino de manera muy eficiente incluso en modelos de computación que permiten solo comparaciones de los pesos de las aristas del grafo de entrada y no aritmética sobre ellos. [ 13 ] [ 20 ] El algoritmo mantiene un conjunto S de aristas que se sabe que contienen la arista de cuello de botella de la ruta óptima; inicialmente, S es solo el conjunto de todas las m aristas del grafo. En cada iteración del algoritmo, divide S en una secuencia ordenada de subconjuntos S 1 , S 2 , ... de tamaño aproximadamente igual; el número de subconjuntos en esta partición se elige de tal manera que todos los puntos de división entre subconjuntos se pueden encontrar mediante la búsqueda repetida de la mediana en tiempo O ( m ) . Luego, el algoritmo vuelve a ponderar cada arista del grafo por el índice del subconjunto que contiene la arista, y utiliza el algoritmo de Dijkstra modificado en el grafo reponderado; Basándose en los resultados de este cálculo, puede determinar en tiempo lineal cuál de los subconjuntos contiene el peso de la arista del cuello de botella. Luego reemplaza S por el subconjunto S i que ha determinado que contiene el peso del cuello de botella, y comienza la siguiente iteración con este nuevo conjunto S . El número de subconjuntos en los que se puede dividir S aumenta exponencialmente con cada paso, por lo que el número de iteraciones es proporcional a la función logaritmo iterada , O ( log * n ) , y el tiempo total es O ( m log * n ) . [ 20 ] En un modelo de cálculo donde cada peso de arista es un entero de máquina, el uso de bisección repetida en este algoritmo puede reemplazarse por una técnica de división de lista de Han y Thorup (2002) , lo que permite dividir S en O ( √ m ) conjuntos más pequeños S i en un solo paso y conduce a un límite de tiempo general lineal. [ 21 ]
conjuntos de puntos euclidianos

También se ha considerado una variante del problema de la ruta minimax para conjuntos de puntos en el plano euclidiano . Al igual que en el problema del grafo no dirigido, este problema de la ruta minimax euclidiana se puede resolver eficientemente encontrando un árbol de expansión mínima euclidiana : cada ruta en el árbol es una ruta minimax. Sin embargo, el problema se complica cuando se desea una ruta que no solo minimice la longitud de salto, sino que también, entre rutas con la misma longitud de salto, minimice o aproxime la longitud total de la ruta. La solución se puede aproximar utilizando expansores geométricos . [ 22 ]
En teoría de números , el problema sin resolver del foso gaussiano plantea si las trayectorias minimax en los números primos gaussianos tienen una longitud minimax acotada o no acotada. Es decir, ¿existe una constante B tal que, para cada par de puntos p y q en el conjunto infinito de puntos euclidianos definido por los primos gaussianos, la trayectoria minimax en los primos gaussianos entre p y q tenga una longitud de arista minimax como máximo B ? [ 23 ]
Referencias
- ↑ Pollack, Maurice (1960), "La capacidad máxima a través de una red", Operations Research , 8 (5): 733–736 , doi : 10.1287/opre.8.5.733 , JSTOR 167387
- ↑ Shacham, N. (1992), "Enrutamiento multicast de datos jerárquicos", Conferencia Internacional IEEE sobre Comunicaciones (ICC '92) , vol. 3, pp. 1217–1221 , doi : 10.1109/ICC.1992.268047 , hdl : 2060/19990017646 , ISBN 978-0-7803-0599-1, S2CID 60475077 Wang , Zheng; Crowcroft, J. (1995), "Algoritmos de enrutamiento basados en el retardo de banda", Conferencia Global de Telecomunicaciones del IEEE (GLOBECOM '95) , vol. 3, pp. 2129–2133 , doi : 10.1109/GLOCOM.1995.502780 , ISBN 978-0-7803-2509-8, S2CID 9117583
- 1 2 3 Schulze, Markus (2011), "Un nuevo método de elección de un solo ganador monótono, independiente de clones, simétrico de reversión y consistente con Condorcet", Social Choice and Welfare , 36 (2): 267–303 , doi : 10.1007/s00355-010-0475-4 , S2CID 1927244
- 1 2 Fernández, Elena ; Garfinkel, Robert; Arbiol, Roman (1998), "Mosaicking of aerial photographic maps via seams defined by bottleneck shortest paths", Operations Research , 46 (3): 293–304 , doi : 10.1287/opre.46.3.293 , JSTOR 222823
- 1 2 Ullah, E.; Lee, Kyongbum; Hassoun, S. (2009), "Un algoritmo para identificar vías metabólicas de borde dominante", Conferencia Internacional IEEE/ACM sobre Diseño Asistido por Computadora (ICCAD 2009) , págs. 144–150
- 1 2 Ahuja, Ravindra K. ; Magnanti, Thomas L. ; Orlin, James B. (1993), "7.3 Algoritmo de escalado de capacidad", Flujos de red: teoría, algoritmos y aplicaciones , Prentice Hall, pp. 210– 212, ISBN 978-0-13-617549-0
- 1 2 Berman, Oded; Handler, Gabriel Y. (1987), "Ruta óptima minimax de una sola unidad de servicio en una red hacia destinos que no son de servicio", Transportation Science , 21 (2): 115–122 , doi : 10.1287/trsc.21.2.115
- ↑ Hu, TC (1961), "El problema de la ruta de máxima capacidad", Operations Research , 9 (6): 898–900 , doi : 10.1287/opre.9.6.898 , JSTOR 167055
- 1 2 Punnen, Abraham P. (1991), "Un algoritmo de tiempo lineal para el problema de la ruta de máxima capacidad", European Journal of Operational Research , 53 (3): 402– 404, doi : 10.1016/0377-2217(91)90073-5
- ↑ Malpani, Navneet; Chen, Jianer (2002), "Una nota sobre la construcción práctica de rutas de ancho de banda máximo", Information Processing Letters , 83 (3): 175–180 , doi : 10.1016/S0020-0190(01)00323-4 , MR 1904226
- ↑ Shapira, Asaf; Yuster, Raphael ; Zwick, Uri (2011), "All-pairs bottleneck paths in vertex weighted graphs", Algorithmica , 59 (4): 621–633 , doi : 10.1007/s00453-009-9328-x , MR 2771114 ; véase la reivindicación 4.1, pág. 630
- ↑ Camerini, PM (1978), "El problema del árbol de expansión min-max y algunas extensiones", Information Processing Letters , 7 (1): 10– 14, doi : 10.1016/0020-0190(78)90030-3
- 1 2 3 Kaibel, Volker; Peinhardt, Matthias AF (2006), Sobre el problema del cuello de botella, el camino más corto (PDF) , Informe ZIB 06-22, Konrad-Zuse-Zentrum für Informationstechnik Berlin
- ↑ Alt, Helmut ; Godau, Michael (1995), "Cálculo de la distancia de Fréchet entre dos curvas poligonales" (PDF) , International Journal of Computational Geometry and Applications , 5 ( 1–2 ): 75–91 , doi : 10.1142/S0218195995000064.
- ^ Leclerc, Bruno (1981), "Descripción combinatoria de ultramétriques", Centre de Mathématique Sociale. École Pratique des Hautes Études. Mathématiques et Sciences Humaines (en francés) (73): 5– 37, 127, MR 0623034
- ↑ Demaine, Erik D. ; Landau, Gad M. ; Weimann, Oren (2009), "Sobre árboles cartesianos y consultas de mínimo de rango", Autómatas, lenguajes y programación, 36.º Coloquio Internacional, ICALP 2009, Rodas, Grecia, 5-12 de julio de 2009 , Lecture Notes in Computer Science, vol. 5555, pp. 341–353 , doi : 10.1007/978-3-642-02927-1_29 , hdl : 1721.1/61963 , ISBN 978-3-642-02926-4
- ↑ Más específicamente, el único tipo de empate que el método Schulze no logra romper es entre dos candidatos que tienen caminos igualmente amplios entre sí.
- ↑ Véase Jesse Plamondon-Willard, Elección de la Junta Directiva mediante votación preferencial , mayo de 2008; Mark Ryan, Resultados de las elecciones de la Junta Directiva de Wikimedia de 2008 , junio de 2008 ; Elecciones de la Junta Directiva de 2008 , junio de 2008; y Elecciones de la Junta Directiva de 2009 , agosto de 2009.
- ↑ Duan, Ran; Pettie, Seth (2009), "Algoritmos rápidos para la multiplicación de matrices (máx, min) y rutas más cortas con cuello de botella" , Actas del 20.º Simposio Anual ACM-SIAM sobre Algoritmos Discretos (SODA '09) , págs. 384–391 Para un algoritmo anterior que también utilizaba la multiplicación rápida de matrices para acelerar todos los caminos más amplios entre pares, véase Vassilevska, Virginia ; Williams, Ryan ; Yuster, Raphael (2007), "All-pairs bottleneck paths for general graphs in truly sub-cubic time", Proceedings of the 39th Annual ACM Symposium on Theory of Computing (STOC '07) , Nueva York: ACM, pp. 585–589 , CiteSeerX 10.1.1.164.9808 , doi : 10.1145/1250790.1250876 , ISBN 9781595936318, MR 2402484 , S2CID 9353065 y el capítulo 5 de Vassilevska, Virginia (2008), Algoritmos eficientes para problemas de caminos en grafos ponderados (PDF) , tesis doctoral, informe CMU-CS-08-147, Escuela de Informática de la Universidad Carnegie Mellon.
- 1 2 Gabow, Harold N. ; Tarjan, Robert E. (1988), "Algoritmos para dos problemas de optimización de cuello de botella" , Journal of Algorithms , 9 (3): 411– 417, doi : 10.1016/0196-6774(88)90031-4 , MR 0955149
- ↑ Han, Yijie; Thorup, M. (2002), "Ordenación de enteros en tiempo esperado O( n √ log log n ) y espacio lineal", Actas del 43.º Simposio Anual sobre Fundamentos de la Informática (FOCS 2002) , págs. 135–144 , doi : 10.1109/SFCS.2002.1181890 , ISBN 978-0-7695-1822-0, S2CID 5245628 .
- ↑ Bose, Prosenjit ; Maheshwari, Anil; Narasimhan, Giri; Smid, Michiel; Zeh, Norbert (2004), "Aproximación de rutas más cortas de cuellos de botella geométricos", Geometría Computacional. Teoría y Aplicaciones , 29 (3): 233–249 , doi : 10.1016/j.comgeo.2004.04.003 , MR 2095376
- ↑ Gethner, Ellen; Wagon, Stan ; Wick, Brian (1998), "Un paseo por los primos gaussianos", American Mathematical Monthly , 105 (4): 327–337 , doi : 10.2307/2589708 , JSTOR 2589708 , MR 1614871 .
- teoría de redes
- Problemas de tiempo polinomial
- Algoritmos de grafos
- Problemas computacionales en la teoría de grafos