Jump to content

Алгоритм Дейкстры – Шолтена

(Перенаправлено из алгоритма Дейкстры-Шолтена )

Алгоритм Дейкстры-Шолтена (названный в честь Эдсгера В. Дейкстры и Карела С. Шолтена ) — это алгоритм обнаружения завершения в распределенной системе . [1] [2] Алгоритм был предложен Дейкстрой и Шолтеном в 1980 году. [3]

Сначала рассмотрим случай простого графа процесса , который представляет собой дерево . Распределенные вычисления с древовидной структурой не являются редкостью. Такой граф процесса может возникнуть, когда вычисления строго относятся к типу «разделяй и властвуй» . Узел . начинает вычисление и делит задачу на две (или более, обычно кратные 2) примерно равные части и распределяет эти части по другим процессорам Этот процесс продолжается рекурсивно до тех пор, пока проблемы не станут достаточно маленькими, чтобы их можно было решить на одном процессоре.

Алгоритм

[ редактировать ]

Алгоритм Дейкстры-Шолтена представляет собой древовидный алгоритм, который можно описать следующим образом:

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

Алгоритм Дейкстры – Шолтена для дерева

[ редактировать ]
  • Для дерева легко обнаружить завершение. Когда листовой процесс определяет, что он завершился, он отправляет сигнал своему родителю. Как правило, процесс ожидает, пока все его дочерние элементы отправят сигналы, а затем отправляет сигнал своему родителю.
  • Программа завершается, когда корень получает сигналы от всех своих дочерних элементов.

Алгоритм Дейкстры – Шолтена для ориентированных ациклических графов

[ редактировать ]
  • Алгоритм для дерева можно распространить на ациклические ориентированные графы. К каждому ребру добавляем дополнительный целочисленный атрибут Дефицит.
  • На входящем фронте Дефицит будет обозначать разницу между количеством полученных сообщений и количеством сигналов, отправленных в ответ.
  • Когда узел желает завершить работу, он ждет, пока не получит сигналы от исходящих ребер, сводя их дефицит к нулю.
  • Затем он отправляет достаточно сигналов, чтобы гарантировать, что дефицит равен нулю на каждом входящем фронте.
  • Поскольку граф является ациклическим, некоторые узлы не будут иметь исходящих ребер, и эти узлы завершатся первыми после отправки достаточного количества сигналов на свои входящие ребра. После этого узлы на более высоких уровнях завершат свою работу уровень за уровнем.

Алгоритм Дейкстры – Шолтена для циклических ориентированных графов

[ редактировать ]
  • Если циклы разрешены, предыдущий алгоритм не работает. Это связано с тем, что не может быть узла с нулевыми исходящими ребрами. Таким образом, потенциально не существует узла, который мог бы завершить работу без консультации с другими узлами.
  • Алгоритм Дейкстры-Шолтена решает эту проблему, неявно создавая остовное дерево графа. Связующее дерево — это дерево, которое включает в себя каждый узел базового графа один раз, а набор ребер является подмножеством исходного набора ребер.
  • Дерево будет направлено (т. е. каналы будут направлены) с исходным узлом (который инициирует вычисление) в качестве корня.
  • Связующее дерево создается следующим образом. переменная First_Edge К каждому узлу добавляется . Когда узел получает сообщение в первый раз, он инициализирует First_Edge ребром, через который он получил сообщение. First_Edge впоследствии никогда не изменяется. Обратите внимание, что связующее дерево не уникально и зависит от порядка сообщений в системе.
  • Завершение обрабатывается каждым узлом в три этапа:
    1. Отправьте сигналы на все входящие фронты, кроме первого. (Каждый узел будет отправлять сигналы, которые уменьшают дефицит на каждом входящем ребре до нуля.)
    2. Дождитесь сигналов со всех исходящих фронтов. (Количество сигналов, полученных на каждом исходящем фронте, должно свести каждый из их дефицитов к нулю.)
    3. Отправляйте сигналы на First_Edge . (После завершения шагов 1 и 2 узел информирует своего родителя в связующем дереве о своем намерении завершить работу.)

См. также

[ редактировать ]
  1. ^ Гош, Сукумар (2010), «9.3.1 Алгоритм Дейкстры – Шолтена», Распределенные системы: алгоритмический подход , CRC Press, стр. 140–143, ISBN  9781420010848 .
  2. ^ Фоккинк, Ван (2013), «6.1 Алгоритм Дейкстры – Шолтена», Распределенные алгоритмы: интуитивный подход , MIT Press, стр. 38–39, ISBN  9780262318952 .
  3. ^ Дейкстра, Эдсгер В.; Схолтен, К.С. (1980), «Обнаружение завершения для диффузных вычислений» (PDF) , Information Processing Letters , 11 (1): 1–4, doi : 10.1016/0020-0190(80)90021-6 , MR   0585394 .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 15fcaff7da77006f686a4822669d4710__1557168000
URL1:https://arc.ask3.ru/arc/aa/15/10/15fcaff7da77006f686a4822669d4710.html
Заголовок, (Title) документа по адресу, URL1:
Dijkstra–Scholten algorithm - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)