Un problema central en la teoría algorítmica de grafos es el problema del camino más corto . Una de las generalizaciones del problema del camino más corto se conoce como el problema de los caminos más cortos de origen único (SSSP) , que consiste en encontrar los caminos más cortos desde un vértice de origen.a todos los demás vértices del grafo. Existen algoritmos secuenciales clásicos que resuelven este problema, como el algoritmo de Dijkstra . En este artículo, sin embargo, presentamos dos algoritmos paralelos que lo resuelven.
Otra variación del problema es el problema de los caminos más cortos entre todos los pares (APSP, por sus siglas en inglés), que también tiene enfoques paralelos: Algoritmo paralelo de caminos más cortos entre todos los pares .
Definición del problema
Dejarser un grafo dirigido connodos ybordes. Dejaser un vértice distinguido (llamado "fuente") ysea una función que asigne un peso real no negativo a cada arista. El objetivo del problema de los caminos más cortos desde una única fuente es calcular, para cada vérticeaccesible desde, el peso de una ruta de peso mínimo desdea, denotado pory abreviadoEl peso de un camino es la suma de los pesos de sus aristas. Establecemossies inaccesible desde. [ 1 ]
Los algoritmos de ruta más corta secuencial suelen aplicar métodos de etiquetado iterativos basados en el mantenimiento de una distancia tentativa para todos los nodos;siempre eso el peso de algún camino desdeay por lo tanto un límite superior enLas distancias tentativas se mejoran realizando relajaciones de borde, es decir, para un borde el algoritmo establece. [ 1 ]
Para todos los algoritmos paralelos, asumiremos un modelo PRAM con lecturas y escrituras concurrentes.
algoritmo de pasos delta
El algoritmo de pasos delta es un algoritmo de corrección de etiquetas, lo que significa que la distancia tentativa de un vértice se puede corregir varias veces mediante relajaciones de aristas hasta el último paso del algoritmo, cuando todas las distancias tentativas quedan fijas.
El algoritmo mantiene nodos elegibles con distancias tentativas en una matriz de cubetas, cada una de las cuales representa un rango de distancia de tamañoDurante cada fase, el algoritmo elimina todos los nodos del primer cubo no vacío y relaja todos los bordes salientes de peso máximo. Los bordes de mayor peso solo se relajan después de que sus respectivos nodos iniciales estén firmemente establecidos. [ 1 ] El parámetro es un número real positivo que también se denomina "ancho de paso" o "ancho de cubeta". [ 1 ]
El paralelismo se obtiene eliminando simultáneamente todos los nodos del primer cubo no vacío y relajando sus bordes de luz salientes en una sola fase. Si un nodoha sido eliminado del cubo actualcon un valor de distancia no final entonces, en alguna fase posterior,eventualmente será reinsertado eny los bordes de luz salientes de se volverán a relajar. Los bordes pesados restantes que emanan de todos los nodos que se han eliminado dehasta ahora se han relajado de una vez por todas cuandofinalmente queda vacío. Posteriormente, el algoritmo busca el siguiente cubo no vacío y procede como se describió anteriormente. [ 1 ]
El peso máximo de la ruta más corta para el nodo de origense define como, abreviado. [ 1 ] Además, el tamaño de un camino se define como el número de aristas en el camino.
Distinguimos los bordes ligeros de los bordes pesados, donde los bordes ligeros tienen un peso máximo y los bordes pesados tienen un peso mayor que.
A continuación se presenta el algoritmo de pasos delta en pseudocódigo:
1 por cadahacer 2 ; (*Insertar nodo de origen con distancia 0*) 3 mientrashacer (*Fase A: Algunos nodos en cola quedaron (a)*) 4 (*Cubo no vacío más pequeño (b)*) 5 (*Aún no se han eliminado nodos para el bucket B[i]*) 6 mientrashacer (*Nueva fase (c)*) 7 (*Crear solicitudes para bordes claros (d)*) 8 (*Recuerde los nodos eliminados (e)*) 9 (*Cubo actual vacío*) 10 (*Realice relajaciones, los nodos pueden (re)entrar en B[i] (f)*) 11 (*Crear solicitudes para bordes gruesos (g)*) 12 (*Las relajaciones no recargarán B[i] (h)*) 13 14 función:conjunto de solicitud 15 regresos 16 17 procedimiento 18 por cada unohacer 19 20 procedimiento (*Insertar o mover w en B si*) 21 sientonces 22 (*Si está dentro, retírelo del cubo viejo*) 23 (*Insertar en un nuevo depósito*) 24
Ejemplo

A continuación se describe paso a paso la ejecución del algoritmo para un pequeño ejemplo de grafo. El vértice de origen es el vértice A yes igual a 3.
Al inicio del algoritmo, todos los vértices, excepto el vértice de origen A, tienen distancias tentativas infinitas.
Baldetiene rango, baldetiene rangoy cubotiene rango.
El cuboContiene el vértice A. Todos los demás cubos están vacíos.
El algoritmo relaja todos los bordes de luz incidentes a, que son las aristas que conectan A con B, G y E.
Los vértices B, G y E se insertan en el cubo.. DesdeTodavía está vacío, el borde grueso que conecta A con D también está relajado.
Ahora los bordes de luz incidentes aestán relajados. El vértice C se inserta en el cuboDesde ahoraSi está vacío, el borde grueso que conecta E con F puede relajarse.
En el siguiente paso, el cuboSe examina, pero no conlleva ninguna modificación de las distancias tentativas.
El algoritmo finaliza.
Tiempo de ejecución
Como se mencionó anteriormente,es el peso máximo del camino más corto.
Llamemos a un camino con un peso total como máximoy sin repeticiones de bordes a-camino.
Dejardenota el conjunto de todos los pares de nodosconectados por algún-camino y dejar. De manera similar, definacomo el conjunto de tríosde tal manera queyes un borde ligero y deja.
El algoritmo de pasos delta secuenciales necesita como máximooperaciones. Una paralelización simple se ejecuta en tiempo. [ 1 ]
Si tomamospara gráficos con grado máximoy pesos de borde aleatorios distribuidos uniformemente en, la versión secuencial del algoritmo necesitatiempo promedio total y una paralelización simple toma en promedio. [ 1 ]
Gráfico 500
El tercer núcleo computacional del benchmark Graph 500 ejecuta un cálculo de ruta más corta desde un único origen. [ 2 ] La implementación de referencia del benchmark Graph 500 utiliza el algoritmo de pasos delta para este cálculo.
Algoritmo de pasos de radio
Para el algoritmo de pasos de radio, debemos asumir que nuestro gráficono tiene dirección.
La entrada al algoritmo es un grafo no dirigido ponderado, un vértice de origen y un valor de radio de destino para cada vértice, dado como una función.. [ 3 ] El algoritmo visita los vértices en distancia creciente desde la fuenteEn cada paso, el incremento de radio aumenta el radio centrado endeay resuelve todos los vérticesen el anillo. [ 3 ]
A continuación se muestra el algoritmo de incremento de radio en pseudocódigo:
Entrada : Un gráficoradios de vérticey un nodo fuenteSalida : Las distancias del gráficode. 1 , 2 por cada unohacer,, 3 mientrashacer 4 5 repetir 6 para cada unocallehacer 7 por cadahacer 8 9 hasta que nofue actualizado 10 11 12 regresos
A pesar de, definirser el conjunto de vecinos de S. Durante la ejecución de la búsqueda en anchura estándar o el algoritmo de Dijkstra , la frontera es el conjunto de vecinos de todos los vértices visitados. [ 3 ]
En el algoritmo de pasos de radio, una nueva distancia de rondase decide en cada ronda con el objetivo de limitar el número de subpasos. El algoritmo toma un radiopara cada vértice y selecciona unen el pasotomando el mínimoen generalen la frontera (Línea 4).
Las líneas 5-9 luego ejecutan los subpasos de Bellman-Ford hasta que todos los vértices con radio menor queestán establecidos. Vértices dentroLuego se añaden al conjunto visitado.. [ 3 ]
Ejemplo

A continuación se describe paso a paso la ejecución del algoritmo para un pequeño ejemplo de grafo. El vértice de origen es el vértice A y el radio de cada vértice es igual a 1.
Al comienzo del algoritmo, todos los vértices, excepto el vértice de origen A, tienen distancias tentativas infinitas, denotadas poren el pseudocódigo.
Todos los vecinos de A están relajados y.
La variablese elige que sea igual a 4 y los vecinos de los vértices B, E y G se relajan.
La variablese elige que sea igual a 6 y no se modifican los valores..
La variablese elige que sea igual a 9 y no se modifican los valores..
El algoritmo finaliza.
Tiempo de ejecución
Después de una fase de preprocesamiento, el algoritmo de pasos de radio puede resolver el problema SSSP entrabajo y profundidad, para. Además, la fase de preprocesamiento lleva trabajo y profundidad otrabajo y profundidad. [ 3 ]
Referencias
- 1 2 3 4 5 6 7 8 Meyer, U.; Sanders, P. (2003-10-01). "Δ-stepping: un algoritmo de ruta más corta paralelizable" . Journal of Algorithms . Simposio Europeo de Algoritmos de 1998. 49 (1): 114– 152. doi : 10.1016/S0196-6774(03)00076-2 . ISSN 0196-6774 .
- ↑ "Gráfico 500" . 9 de marzo de 2017.
- 1 2 3 4 5 Blelloch, Guy E.; Gu, Yan; Sun, Yihan; Tangwongsan, Kanat (2016). "Parallel Shortest Paths Using Radius Stepping". Actas del 28.º Simposio ACM sobre Paralelismo en Algoritmos y Arquitecturas . Nueva York, Nueva York, EE. UU.: ACM Press. págs. 443–454 . doi : 10.1145/2935764.2935765 . ISBN 978-1-4503-4210-0.
- Algoritmos de grafos