Árbol de expansión mínimo distribuido

El problema del árbol de expansión mínima distribuida (MST) implica la construcción de un árbol de expansión mínima mediante un algoritmo distribuido, en una red donde los nodos se comunican mediante el paso de mensajes. Es radicalmente diferente del problema secuencial clásico, aunque el enfoque más básico se asemeja al algoritmo de Borůvka. Una aplicación importante de este problema es encontrar un árbol que pueda usarse para la difusión. En particular, si el costo de que un mensaje pase a través de un borde en un grafo es significativo, un MST puede minimizar el costo total de que un proceso fuente se comunique con todos los demás procesos en la red.
El problema fue sugerido y resuelto por primera vez tiempo en 1983 por Gallager et al., donde es el número de vértices en el gráfico. Posteriormente, se mejoró la solución para y finalmente Donde D es la red, o diámetro del gráfico. Un límite inferior en la complejidad del tiempo de la solución ha demostrado ser
Sinopsis
El gráfico de entrada se considera una red, donde los vértices son nodos y bordes de computación independientes son enlaces de comunicación. Los enlaces son ponderados como en el problema clásico.
Al comienzo del algoritmo, los nodos sólo conocen los pesos de los enlaces que están conectados a ellos. (Es posible considerar modelos en los que sepan más, por ejemplo, los enlaces de sus vecinos.)
Como resultado del algoritmo, cada nodo sabe cuáles de sus enlaces pertenecen al árbol de expansión mínimo y cuáles no.
MST en el modelo de paso de mensajes
El modelo de paso de mensajes es uno de los modelos más utilizados en computación distribuida. En este modelo, cada proceso se modela como un nodo de un grafo. Cada canal de comunicación entre dos procesos es un borde del grafo.
Dos algoritmos que se utilizan habitualmente para el problema clásico del árbol de expansión mínimo son el algoritmo de Prim y el algoritmo de Kruskal. Sin embargo, resulta difícil aplicar estos dos algoritmos en el modelo de paso de mensajes distribuido. Los principales desafíos son:
- Tanto el algoritmo de Prim como el algoritmo de Kruskal requieren procesar un nodo o un vértice a la vez, lo que dificulta hacer que funcionen en paralelo. Por ejemplo, el algoritmo de Kruskal procesa los bordes a su vez, decidiendo si incluir el borde en el MST basado en si formaría un ciclo con todos los bordes previamente elegidos.
- Tanto el algoritmo de Prim como el algoritmo de Kruskal requieren procesos para conocer el estado de todo el gráfico, que es muy difícil de descubrir en el modelo de paso de mensajes.
Debido a estas dificultades, se necesitaban nuevas técnicas para algoritmos MST distribuidos en el modelo de paso de mensajes. Algunas tienen similitudes con el algoritmo de Borůvka para el problema MST clásico.
GHS algoritmo
El algoritmo GHS de Gallager, Humblet y Spira es uno de los algoritmos más conocidos en la teoría de la computación distribuida. Este algoritmo construye un MST en el modelo de paso de mensajes asíncrono.
Sumas
El algoritmo GHS requiere varias suposiciones.
- El gráfico de entrada está conectado y no dirigido.
- Cada borde del gráfico de entrada tiene diferentes pesos finitos. Esta suposición no es necesaria si hay un método consistente para romper los lazos entre los pesos del borde.
- Cada nodo conoce inicialmente el peso de cada incidente de borde a ese nodo.
- Inicialmente, cada nodo está en un estado inactivo. Cada nodo despierta espontáneamente o se despierta mediante la recepción de cualquier mensaje de otro nodo.
- Los mensajes se pueden transmitir independientemente en ambas direcciones en un borde y llegar después de un retraso impredecible pero finito, sin error.
- Cada borde entrega mensajes en orden FIFO.
Propiedades de los MST
Definir un fragmento de un MST ser un sub-árbol . Es decir, un fragmento es un conjunto conectado de nodos y bordes de . Los MST tienen dos propiedades importantes en relación con los fragmentos:
- Dado un fragmento de un MST , vamos ser un borde de salida de peso mínimo del fragmento. Entonces únete y su nodo adyacente al fragmento produce otro fragmento de un MST.
- Si todos los bordes de un gráfico conectado tienen diferentes pesos, entonces el MST del gráfico es único.
Estas dos propiedades forman la base para demostrar la exactitud del algoritmo GHS. En general, el algoritmo GHS es un algoritmo ascendente en el sentido de que comienza permitiendo que cada nodo individual sea un fragmento y luego une fragmentos hasta que queda un solo fragmento. Las propiedades anteriores implican que el fragmento restante debe ser un MST.
Descripción del algoritmo
El algoritmo GHS asigna un nivel a cada fragmento, que es un número entero no decreciente con valor inicial 0. Además, cada fragmento con un nivel distinto de cero tiene un ID, que es el ID de la arista central del fragmento, que se selecciona cuando se construye el fragmento. Durante la ejecución del algoritmo, cada nodo puede clasificar cada una de sus aristas incidentes en tres categorías:
- Subdivisión Los bordes son los que se han determinado ser parte del MST.
- Rechazado Los bordes son los que se han determinado no ser parte del MST.
- Básica Los bordes son todos los bordes que no son bordes de rama ni bordes rechazados.
En los fragmentos de nivel 0, cada nodo despertado hará lo siguiente:
- Elija su borde de incidencia mínimo y marque ese borde como borde de rama.
- Enviar un mensaje a través del borde de la rama para notificar al nodo en el otro lado.
- Espera un mensaje del otro extremo del borde.
El borde elegido por los dos nodos que conecta se convierte en el borde central y se le asigna el nivel 1.
En fragmentos de nivel distinto de cero, se ejecuta un algoritmo independiente en cada nivel. Este algoritmo se puede dividir en tres etapas: difusión, convergencia y cambio de núcleo.
Radiodifusión
Los dos nodos adyacentes al núcleo transmiten mensajes al resto de los nodos del fragmento. Los mensajes se envían a través del borde de la rama, pero no a través del núcleo. Cada mensaje de difusión contiene el ID y el nivel del fragmento. Al final de esta etapa, cada nodo ha recibido el nuevo ID y nivel del fragmento.
Convergecast
En esta etapa, todos los nodos del fragmento cooperan para encontrar el límite mínimo de peso saliente del fragmento. Los bordes salientes son bordes que se conectan a otros fragmentos. Los mensajes enviados en esta etapa están en la dirección opuesta de la etapa de emisión. Iniciado por todas las hojas (los nodos que tienen sólo un borde de rama), se envía un mensaje a través del borde de rama. El mensaje contiene el peso mínimo del borde saliente del incidente que encontró (o el infinito si no se encontró tal borde). La manera de encontrar el límite mínimo saliente será discutida más adelante. Para cada nodo de hoja, dado el número de sus bordes de rama como , después de recibir mensajes convergentes, se recogerá el peso mínimo de los mensajes y se comparará con los pesos de sus bordes salientes de incidentes. El peso más pequeño será enviado hacia la rama de la que recibió la emisión.
núcleo del cambio
Después de completar la etapa anterior, los dos nodos conectados por el núcleo pueden informarse entre sí de los mejores bordes que recibieron. Luego pueden identificar el borde saliente mínimo de todo el fragmento. Se enviará un mensaje desde el núcleo al borde saliente mínimo a través de una ruta de bordes de ramificación. Finalmente, se enviará un mensaje a través del borde saliente elegido para solicitar la combinación de los dos fragmentos que el borde conecta. Dependiendo de los niveles de esos dos fragmentos, se realiza una de dos operaciones combinadas para formar un nuevo fragmento; los detalles se analizan a continuación.
Encontrar el límite de salida de incidentes de peso mínimo
Como se mencionó anteriormente, cada nodo necesita encontrar su peso mínimo que sale del borde del incidente después de la recepción de un mensaje de transmisión desde el núcleo. Si no recibe una emisión, elegirá su límite mínimo de peso básico y enviará un mensaje al nodo en el otro lado con la identificación y nivel de su fragmento. Entonces, nodo decidirá si el borde es un borde saliente y enviar un mensaje para notificar el nodo del resultado. La decisión se toma de acuerdo con lo siguiente:
- . Es decir, nodos y pertenecen al mismo fragmento, por lo que el borde no está saliendo.
- y . Es decir, nodos y pertenecen a los diferentes fragmentos, por lo que el borde está saliendo.
- y . No podemos hacer ninguna conclusión. La razón es que los dos nodos pueden pertenecer al mismo fragmento ya, pero nodo no ha descubierto este hecho todavía debido a la demora de un mensaje de transmisión. En este caso, el algoritmo permite nodo posponer la respuesta hasta que su nivel sea superior o igual al nivel que recibió del nodo .
Combinando dos fragmentos
Vamos. y sean los dos fragmentos que necesitan ser combinados. Hay dos maneras de hacer esto:
- Merge: Esta operación ocurre si ambos y compartir un peso mínimo común borde saliente, y . El nivel del fragmento combinado será .
- Absorb: Esta operación ocurre si . El fragmento combinado tendrá el mismo nivel que el .
Además, cuando se produce una operación "Absorb", debe estar en la etapa de cambiar el núcleo, mientras puede estar en una etapa arbitraria. Por lo tanto, las operaciones "Absorb" pueden realizarse de manera diferente dependiendo del estado de . Vamos. ser el borde que y querer combinar con, y dejar y los dos nodos conectados dentro y , respectivamente. Hay dos casos a considerar:
- Node ha recibido mensaje de transmisión pero no ha enviado un mensaje convergente de vuelta al núcleo. En este caso, fragmento puede simplemente unirse al proceso de emisión . Específicamente, imagen y ya se han combinado para formar un nuevo fragmento , así que queremos encontrar el límite mínimo de peso saliente . Para hacer eso, nodo puede iniciar una transmisión para actualizar el fragmento de identificación de cada nodo en y recoger el peso mínimo saliente en .
- Node ya ha enviado un mensaje convergente de vuelta al núcleo. Antes del nodo envió un mensaje convergente, debe haber elegido un peso mínimo de salida. Como hemos discutido anteriormente, lo hace eligiendo su límite mínimo de peso básico, enviando un mensaje de prueba al otro lado del borde elegido, y esperando la respuesta. Suppose es el borde elegido, podemos concluir lo siguiente:
La segunda declaración sigue si la primera sostiene. Para la primera declaración, supongamos eligió el borde y envió un mensaje de prueba via borde . Entonces, nodo retrasará la respuesta (según el caso 3 de "Encontrar el límite de salida de peso mínimo"). Entonces, es imposible que ya ha enviado su mensaje convergente. En las conclusiones 1 y 2, podemos concluir que es seguro absorber en desde entonces sigue siendo el límite mínimo de salida para informar después es absorbido.
Número máximo de niveles
Como se mencionó anteriormente, los fragmentos se combinan ya sea mediante operación "Merge" o "Absorb". La operación "Absorb" no cambia el nivel máximo entre todos los fragmentos. La operación "Merge" puede aumentar el nivel máximo en 1. En el peor de los casos, todos los fragmentos se combinan con operaciones "Merge", por lo que el número de fragmentos disminuye en la mitad de cada nivel. Por lo tanto, el número máximo de niveles es , donde es el número de nodos.
Bienes inmuebles avanzados
El algoritmo GHS tiene una propiedad muy interesante: los fragmentos de nivel más bajo no se bloquearán, aunque algunas operaciones en fragmentos de nivel inferior pueden estar bloqueadas. Esta propiedad implica que el algoritmo terminará eventualmente con un árbol de expansión mínimo.
algoritmos de aproximación
An - algoritmo de aproximación fue desarrollado por Maleq Khan y Gopal Pandurangan. Este algoritmo funciona tiempo, donde es el diámetro del camino más corto local del gráfico.
Referencias
- ^ a b c d e Robert G. Gallager, Pierre A. Humblet, y P. M. Spira, "Un algoritmo distribuido para los árboles con un peso mínimo", Transacciones ACM en la programación de idiomas y sistemas, vol. 5, no. 1, págs. 66 a 77, enero de 1983.
- ^ Baruch Awerbuch. “Optimal Distributed Algorithms for Minimum Weight Spanning Tree, Counting, Leader Election, and Related Problems”, Proceedings of the 19th ACM Symposium on Theory of Computing (STOC), Nueva York, Nueva York, mayo de 1987.
- ^ Juan Garay, Shay Kutten y David Peleg, “Un Algoritmo Sub-Linear distribuido para árboles de recambio de peso mínimo (Extended Abstract),” Proceedings of the IEEE Symposium on Foundations of Computer Science (FOCS), 1993.
- ^ Shay Kutten y David Peleg, “Fast Distributed Construction of Smallk-Dominating Sets and Applications”, Journal of Algorithms, Volumen 28, Cuestión 1, julio de 1998, Páginas 40 a 66.
- ^ David Peleg y Vitaly Rubinovich “Un límite más bajo cerca de la complejidad del tiempo de Construcción de árboles mínimos distribuidos”, SIAM Journal on Computing, 2000, y Simposio IEEE sobre Fundaciones de Ciencias de la Computación (FOCS), 1999.
- ^ a b Nancy A. Lynch. Algoritmos distribuidos. Morgan Kaufmann, 1996.
- ^ a b Maleq Khan y Gopal Pandurangan. "Un Algoritmo de Aproximación Distribuida Rápido para Árboles de Aglomeración Mínima", " Computación distribuida, vol. 20, no. 6, págs. 391 a 402, abril de 2008.