WikiDer > Мега-слияние

Mega-Merger

Мега-слияние является распределенным алгоритмом, направленным на решение задачи выбора в общем связном неориентированном график.[1][2]

Вступление

Mega-Merger был разработан Робертом Греем Галлагером в Массачусетский технологический институт в 1983 г. Применяется распределенная разделяй и властвуй подход, смешанный со стратегией завоевания на основе рангов. Алгоритм обычно представляет собой аналогию села-города. Каждый узел в графе обозначает деревню, а соединяющие их ребра - дороги, а корневое остовное дерево в подграфе - город. Тогда весь график - это мегаполис. Mega-Merger заставляет деревни объединяться и образовывать города в соответствии с рангом и краями друг друга. Затем города образуются путем союзов или завоевания / поглощения.

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

Mega-Merger строит минимальное остовное дерево по связанным графам:

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

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

Алгоритм

Алгоритм присваивает каждой деревне имя и звание, первое из которых обычно уникально. Последний указывает количество дружественных слияний, через которые прошел город, и чем он больше, тем более могущественным считается город. Причем каждому ребру присвоен вес: каждое село / город имеет край минимального веса также называемый ссылка слияния, то есть то ребро, обход которого имеет минимальную стоимость.

Алгоритм работает последовательно, пока не будет сформирован мегаполис. Каждый город C вычисляет свою собственную ссылку слияния и отправляет запрос на слияние через . Запрос обрабатывается следующими способами:

  1. Дружественное слияние: : Если города имеют одну и ту же ссылку слияния и имеют одинаковый ранг, дружеское слияние происходит, и два города сливаются в один. Для вновь созданного города выбирается новое имя, выбирается правящая деревня, и путь от предыдущего правителя к узлу в ссылке слияния переориентируется таким образом, что он ведет к новому лидеру. Ранг нового города также повышен на единицу. Обратите внимание, так как это единственный способ, которым два города могут повысить рейтинг друг друга.
  2. Поглощение: : Если у запрашивающего города более низкий ранг, город на принимающей стороне применяет поглощение процесс: поглощается, как при дружеском слиянии, но теряет свое название, и получившийся город имеет ранг .
  3. Приостановка: : В таких случаях замораживает запрос: он ждет, пока его не поглотит правило 2 или объединиться и повысить свой рейтинг выше одного из чтобы иметь возможность ввести правило 1 и впитывать .

Внешние сообщения

Ни у одного узла на графике нет списка деревень, принадлежащих их деревням, поэтому каждый раз, когда город хочет искать ребра, выходящие за его пределы, он должен принимать спросить-ответ протокол. Правитель города отправляет широковещательное сообщение через свое связующее дерево, и каждый узел получив его, он отправляет запросы своим соседям, за исключением ребер дочерних (ren) и родительских. Протокол ответа следующий:

  • : очевидно, что край является внутренним краем в . и обмениваться отрицательными отзывами.
  • : просит город более высокого ранга. По правилу 2 мы можем утверждать, что поглощения не происходит, и действительно принадлежит другому городу.
  • : в этом случае задержит ответ как правило 3.

Характеристики

Mega-Merger владеет несколькими объектами:

  • Монотонный ранг: Каждый город за исключением мегаполисов, со временем повысится в рейтинге. По правилу 1 может слиться по-дружески, подняв свой ранг на ; по правилу 2 и 3 будет ссылка на слияние (по гипотезе не мегаполис) либо попросит город более высокого ранга , поглощаясь и повышая свой ранг, или подождите, пока достигает своего уровня и работает дружеское слияние.
  • : у нас повышается уровень каждый раз, когда дружеское слияние эксплуатируется. Вычислим по индукции: в базовом случае , ровно одна деревня находится в . В индуктивном случае два города управлять дружественным слиянием, следовательно по индуктивному предположению.
  • : по предыдущему правилу города застраиваются экспоненциально , следовательно, обратный .
  • Предотвращение тупиковых ситуаций: Mega-Merger не заходит в тупик. Как показывает правило 3 город может подождать, пока город более низкого ранга ответит на ссылку слияния : чтобы завести в тупик такой город придется подождать , и на , и так далее, пока цикл не будет обнаружен на ожидание по ссылке слияния . Но по гипотезе это ссылка слияния , следовательно, такой цепочки не может быть. Другая ситуация, вызывающая тупик, - это запрос от к куда имеет другую ссылку слияния, чем . Тем не менее, как показывает монотонный ранг, повысит свой рейтинг, чтобы поглотить , или будет использовать все свои ссылки слияния, чтобы быть единственным городом на графике с . Тривиально в таком случае две ссылки слияния совпадают и будут вынуждены быть поглощены правилом 2.

Прекращение

Прекращение действия предоставляется предотвращение тупиковых ситуаций и полная надежность.

Расходы

Анализ затрат состоит из двух компонентов: этапных затрат и верхнего предела этапа. Город запускает этап, запрашивая ссылку слияния из своих деревень и применяя одно из вышеперечисленных правил в соответствии с желаемой ситуацией. Мы можем разделить этот этап на пять шагов:

  1. Трансляция запроса на объединение ссылки на узлы в дереве.
  2. Каждый узел пересылает сообщение для своего соседей и ждет их ответы.
  3. Затем узлы отправляют ответы обратно правителю города конвергентный в общей сложности Сообщения.
  4. Затем корень выбирает ссылку слияния и отправляет сообщение выбранному узлу. Банально это сообщение нужно будет путешествовать узлы.

Общая стоимость этих пяти этапов запроса, внешнего обнаружения, связи и доставки составляет . Что касается потерянных сообщений в между внутренними узлами, каждый узел имеет самое большее внутренние края, или если это лист, всего потраченные впустую внутренние сообщения.

Теперь о количестве этапов. Согласно ранее представленному свойству по размеру городов, каждый город уровня имеет , следовательно, наибольший достижимый ранг равен . Поскольку города могут объединяться / поглощаться только один раз за этап, у нас есть всего всего сообщений.

Правильность

Mega-Merger создает минимальное остовное дерево путем слияния поддеревьев по пути минимальной стоимости, то есть по ссылке слияния. По определению минимального остовного дерева, минимальное остовное дерево - это набор минимальных остовных деревьев, соединенных путями с минимальной стоимостью. По построению Mega-Merger пересылает запрос через ссылку слияния, и рано или поздно это ребро станет частью дерева предотвращение тупиковых ситуаций.

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

  1. ^ Галлагер, Роберт (1983). «Распределенный алгоритм для минимального остовного дерева» (PDF). Массачусетский Институт Технологий.
  2. ^ Авербух, Барух (1987). «Оптимальный распределенный алгоритм для минимального веса связующего дерева, подсчета, выбора лидера и других задач» (PDF). SIAM Журнал по вычислениям.