Yo-Yo es un algoritmo distribuido destinado a la búsqueda del mínimo y la elección del líder en un grafo no dirigido conectado genérico . [ 1 ] [ 2 ] A diferencia de Mega-Merger , tiene una terminación y un análisis de costos triviales.
Introducción
Yo-yo fue introducido por Nicola Santoro. [ 3 ] Procede mediante eliminación consecutiva y una técnica de reducción de grafos llamada poda . El algoritmo se divide en una fase de preprocesamiento seguida de una repetición cíclica de una fase hacia adelante, llamada "Yo-", y una fase hacia atrás, llamada "-Yo".
Requisitos previos
Yo-Yo Builds elige un líder mínimo bajo las siguientes premisas:
- Fiabilidad total: No se pierde ningún mensaje durante la transmisión.
- Valores distintivos iniciales (ID): Cada nodo tiene un identificador único.
- Canales de comunicación bidireccionales: Cada extremo es bidireccional, por lo que las comunicaciones pueden viajar en ambas direcciones.
No son necesarias restricciones adicionales.
Algoritmo
Preprocesamiento
La fase de preprocesamiento se inicia con una difusión. En estado activo, cada nodo envía su ID a todos sus vecinos y orienta la arista hacia el nodo de mayor grado. Cabe destacar que, dado que se trata simplemente de un paso lógico, el canal bidireccional no se pierde durante el proceso. Mediante convergecast, se notifica al iniciador la finalización del preprocesamiento. Este proceso crea tres categorías de nodos:
- Fuentes: nodos con nodos salientes, pero sin nodos entrantes. Estos son los nodos con menor cantidad en cada vecindario.
- Nodos intermedios: nodos con aristas tanto salientes como entrantes. No son ni los nodos más pequeños ni los más grandes de cada vecindario.
- Sumideros: nodos con aristas entrantes, pero sin aristas salientes. Estos son los nodos más grandes de cada vecindario.
Yo-

La fase "Yo-" se inicia desde las fuentes. Una fuente envía su ID a través de sus aristas entrantes y espera. Los nodos intermedios esperan a recibir los ID correspondientes de cada una de sus aristas entrantes. Una vez recopilados todos los valores esperados, se realiza un cálculo mínimo y el ID mínimo se reenvía a través de las aristas salientes. Los sumideros permanecen pasivos durante esta fase.
Los mensajes se envían a través de los bordes orientados y llegan a los sumideros, que activan la fase "-Yo".
-Yo

Los sumideros inician la fase "-Yo" calculando el ID mínimo recibido y enviando un SÍ positivo o un NO negativo a través de sus aristas de entrada. Se envía un SÍ a través de las aristas que contienen el ID mínimo calculado, y un NO a través de las aristas restantes. Los mensajes ascienden por la estructura hasta las fuentes: las fuentes con al menos un NO entrante quedan inactivas y pierden su estado de candidatas.
La fase "-Yo" también comprende una fase de reestructuración donde se acomodan las fuentes, los nodos intermedios y los sumideros para las fuentes no candidatas. Los enlaces que llevan un NO se invierten y los candidatos perdedores de la etapa actual se convierten en sumideros o nodos intermedios.
Poda
La poda es una técnica de optimización aplicada en la fase "-Yo", y su mensaje generalmente se incorpora con la respuesta positiva/negativa. Elimina aristas y nodos inútiles. Las primeras son aristas que reciben el mismo valor dearistas entrantes: trivialmenteson inútiles y recortados por el nodo. Dichos bordes se vuelven muertos y se ignoran en las siguientes iteraciones. Este último, en cambio, reduce el número de nodos eliminando sumideros unarios, es decir, sumideros conborde entrante. Estos bordes se verán obligados a devolver el (único) mínimo recibido con una respuesta SÍ , por lo tanto, no realizan ningún cálculo útil para encontrar el mínimo.

Costo
La fase de preprocesamiento se compone de un intercambio a través de cada arista de los dos nodos incidentes en la arista. Por lo tanto, tenemos un costo deLas fases Yo-Yo consisten en un escaneo hacia adelante y hacia atrás de la estructura, por lo tantomensajes, dondees el número de aristas activas actuales. El número de iteraciones viene dado por el número de iteraciones necesarias para eliminar cada fuente inicial. Por hipótesis, cada fuente está vinculada a al menos otra mediante un nodo intermedio: si no fuera así, entonces sería un componente desconectado del grafo, pero por definición el grafo está conectado. En el peor de los casos, intermedioLos nodos están conectados en pares y en cada iteración se elimina como máximo la mitad de las fuentes. Al reestructurar cada uno de los supervivientesAhora las fuentes estarán conectadas en pares. Como en el caso anterior, sobrevivirá como máximo la mitad. Claramente, la terminación se alcanza cuando solo queda una fuente. La reducción a la mitad impone unanúmero de iteraciones sobre el último cálculo, es decir, el que se encuentra entre las dos fuentes supervivientes más alejadas, situado enEl coste total asciende a.
Terminación
La terminación está garantizada por el cambio de dirección realizado en la prueba SÍ / NO . La reducción de fuentes en la fase "-Yo" es monótona: según la observación previa, cada fuente se compara con al menos otra fuente, y debido a la unicidad de las fuentes, una de ellas prevalece mientras que las demás se desactivan. Dado que el número de fuentes iniciales es finito, la reducción monótona dará como resultado que quede una sola fuente.
Referencias
- ↑ Gallager, Robert (1983). "Un algoritmo distribuido para el árbol de expansión mínima" (PDF) . Instituto Tecnológico de Massachusetts .
- ↑ Awerbuch, Baruch (1987). "Algoritmo distribuido óptimo para árbol de expansión de peso mínimo, conteo, elección de líder y otros problemas" (PDF) . SIAM Journal on Computing .
- ↑ Santoro, Nicola. "Diseño y análisis de algoritmos distribuidos" . people.scs.carleton.ca . pág. 213. Consultado el 13 de marzo de 2017 .
- computación distribuida
- Algoritmos distribuidos