WikiDer > Йо-йо (алгоритм)

Yo-yo (algorithm)

Йо Йо представляет собой распределенный алгоритм, направленный на минимальное нахождение и выборы лидера в общих связанных неориентированных график.[1][2] В отличие от Мега-слияние у него банальное прекращение и анализ затрат.

Вступление

Йо-йо представил Никола Санторо.[3] Он продолжается путем последовательного исключения и техники сокращения графа, называемой обрезка. Алгоритм разделен на фазу предварительной обработки, за которой следует циклическое повторение прямой фазы, называемой «Yo-», и обратной, называемой «-Yo».

Предварительные условия

Yo-Yo builds выбирает минимальный лидер под следующие помещения:

  • Полная надежность: сообщение не теряется при передаче.
  • Начальные отличительные значения (ID): каждый узел имеет уникальный идентификатор.
  • Двунаправленные каналы связи: каждый край является двунаправленным, связь может передаваться в обоих направлениях.

Никаких дополнительных ограничений не требуется.

Алгоритм

Предварительная обработка

Фаза предварительной обработки начинается с трансляции. В активном состоянии каждый узел отправляет свой идентификатор всем своим соседям и ориентирует край в сторону узла более высокого уровня. Обратите внимание, поскольку это всего лишь логический шаг, двунаправленный канал не теряется в процедуре. С помощью конвергентной передачи инициатор уведомляется о завершении предварительной обработки. Этот процесс создает три категории узлов:

  • Источники: узлы с исходящими узлами, но без входящих узлов. Это наименьшее количество узлов в каждом районе.
  • Промежуточные узлы: узлы с исходящими и входящими ребрами. Это ни наименьшие, ни наибольшие узлы в каждой окрестности.
  • Стоки: узлы с входящими ребрами, но без исходящих ребер. Это самые большие узлы в каждом районе.

Эй-

Эй- На фазе, значения источников опускаются в сторону поглотителя (ов).

Фаза «Йо-» инициируется источниками. Источник отправляет свой идентификатор через входящие ребра и ждет. Промежуточные узлы ждут получения соответствующих идентификаторов от каждого из своих входящих ребер. После того, как все ожидаемые значения собраны, выполняется минимальное вычисление, и минимальный идентификатор передается через исходящие ребра. Раковины на этом этапе пассивны.

Сообщения отправляются через ориентированные края и достигают приемников, которые запускают фазу «-Yo».

-Эй

В -Эй фаза подтягивает положительные / отрицательные ответы.

Приемники инициируют фазу "-Yo", вычисляя минимальный полученный идентификатор и отправляя положительный ДА или отрицательный НЕТ через их входящие края. А ДА отправляется через края, несущие минимальный вычисленный идентификатор, a НЕТ через оставшиеся края. Сообщения идут вверх по структуре к источникам: источникам, по крайней мере, с одним входящим НЕТ становиться мертвых и теряют статус кандидата.

Фаза «-Yo» также включает в себя фазу реструктуризации, на которой источники-промежуточные продукты-приемники размещаются для источников, не являющихся кандидатами. Края, несущие НЕТ меняются местами, и проигравшие кандидаты на текущей стадии становятся либо приемниками, либо промежуточными узлами.

Обрезка

Сокращение - это метод оптимизации, применяемый на этапе «-Yo», и его сообщение обычно включается в положительный / отрицательный ответ. Удаляет бесполезные ребра и узлы. Первые - это ребра, которые получают одинаковое значение от входящие ребра: тривиально бесполезны и обрезаны узлом. Такие края становятся мертвых и игнорируются в следующих итерациях. Последний вместо этого уменьшает количество узлов за счет удаления унарных приемников, то есть приемников с входящий край. Эти ребра будут вынуждены отправить обратно (единственный) полученный минимум с ДА ответ, следовательно, они не выполняют никаких вычислений, полезных для минимального результата.

Структура до и после обрезки. Сначала самый верхний правый узел становится приемником после получения НЕТ. Поскольку мойка имеет только одну входящую кромку, она отделана. То же самое касается его родительской и центральной ветви.

Расходы

Фаза предварительной обработки состоит из обмена через каждый край двух узлов, падающих на край. Таким образом, у нас есть стоимость . В Йо Йо фазы состоят из прямого и обратного сканирования структуры, следовательно сообщения, где количество текущих активных ребер. Количество итераций определяется количеством итераций, используемых для удаления каждого исходного источника. По гипотезе каждый источник связан по крайней мере с другим промежуточным узлом: если это не так, то это несвязный компонент графа, но по определению граф связан. В худшем случае промежуточный узлы соединены попарно, и на каждой итерации удаляется не более половины источников. Путем реструктуризации каждого из уцелевших источники теперь будут подключены попарно. Как и в предыдущем случае, выживет максимум половина. Ясно, что прекращение происходит, когда остается только один источник. Уменьшение вдвое накладывает количество итераций по последнему вычислению, то есть между двумя наиболее удаленными уцелевшими источниками, помещенными в . Общая стоимость составляет .

Прекращение

Прерывание гарантируется переключением в направлениях, выполняемых в ДА/НЕТ тянуть. Редукция источников в фазе «-Yo» является монотонной: по предыдущему наблюдению каждый источник сравнивается хотя бы с одним другим источником, и по уникальности источников один из них преобладает, а другие становятся мертвыми. Поскольку количество исходных источников конечно, монотонное сокращение приведет к тому, что останется один источник.

Рекомендации

  1. ^ Галлагер, Роберт (1983). «Распределенный алгоритм для минимального остовного дерева» (PDF). Массачусетский Институт Технологий.
  2. ^ Авербух, Барух (1987). «Оптимальный распределенный алгоритм для минимального веса связующего дерева, подсчета, выбора лидера и других задач» (PDF). SIAM Журнал по вычислениям.
  3. ^ Санторо, Никола. «Дизайн и анализ распределенных алгоритмов». people.scs.carleton.ca. п. 213. Получено 2017-03-13.