ref (664672), страница 33

Файл №664672 ref (Распределенные алгоритмы) 33 страницаref (664672) страница 332016-07-31СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 33)

8.2 Деревья Вычислений и Леса

Решения, описанные в этом разделе основаны на динамическом поддержании направленных графов, называемых графом вычисления, узлы которого включают все активные процессы и все основные сообщения, находящиеся впроцессе пердачи. Завершение считается обнаруженным, если граф вычисления становится пустым. Решения этого раздела требуют, чтобы сеть была ненаправлена, то есть, сообщения могут передаваться в двух направлениях через каждый канал. Подраздел 8.2.1 описывает решение для централизованного основным вычисления, для которого граф вычисления является деревом с инициатором в качестве корня. Подраздел 8.2.2 обобщает это решение для децентрализованных основных вычислений и использует лес, в котором каждый инициатор основного вычисления является корнем дерева.

8.2.1 Dijkstra-Scholten Алгоритм

Алгоритм Dijkstra и Scholten [DS80] обнаруживает завершение централизованного основного вычисления (называемого диффузийным вычислением в [DS80]). Инициатор основного вычисления (называемого окружением в [DS80]), также играет специальную роль в алгоритме обнаружения и обозначается p0.

Алгоритм обнаружения динамически поддерживает дерево вычислений T = (VT, ET) со следующими двумя свойствами.

(1) T пусто или T - направленное дерево с корнем p0.

(2) Множество VT включает все активные процессы и все основные сообщения, находящиеся в процессе передачи.

Инициатор p0 вызывает алгоритм объявления когда p0 VT согласно первому свойству, T пусто в этом случае, и согласно второму свойству, предикат term принимает значение истина .

Для сохранения свойств дерева вычислений во время выполнения основного вычисления, T должно расширятся при отправке основного сообщения или при переходе процесса, не принадлежащего дереву, в активное состояние. Когда p посылает основное сообщение (mes), (mes) вставляется в дерево, и отцом (mes) является p. Когда процесс p, не принадлежащий дереву, становится активным получая сообщения от q, q становится отцом p. Для того, чтобы представить отправителя сообщения явно, основное сообщение (mes) послаемой q будем обозначать (mes, q).

Удаление узлов из T также необходимо по двум причинам. Во первых, основное сообщение удаляется после его получения. Во вторых, для того чтобы гарантировать продвижение алгоритма обнаружения дерево должно быть опустошено за конечное число шагов после завершения.

var statep : (active, passive) init if p = p0 then active else passive;

p : integer init 0;

fatherp : P init if p == p0 then p else udef;

Sp: { statep = active }

begin send (mes, p) ; scp := scp + 1 end

Rp: { сообщение (mes, q) прибывает в p }

begin receive (mes, q);, statep := active;,

if fatherp = udef then fatherp := q else send ( sig, q ) to q

end

Ip: { statep = active }

begin statep := passive ;

if scp = 0 then (* Удаляем p из T *)

begin if fatherp = p then Announce else send (sig , fatherp) to fatherp ;

fatherp := udef

end

end

Ap: { Сигнал (sig ,p) прибывает в p }

begin receive (sig,p) ; scp := scp -1 ;

if scp = 0 and statep = passive then

begin if fatherp = p then Announce else send ( sig, fatherp ) to fatherp ;

fatherp := udef

end

end

Алгоритм 8.3 dijkstra-scholten алгоритм.

Сообщения - листья T; процессы поддерживают переменную, которая считает число их сыновей в T. Удаление сына процесса p происходит в другом процессе q; это происходит при получении сообщения сына или удалении сына процесса q. Для того, чтобы предотвратить искажение данных счетчика сына p, процессу p посылается сигнальное сообщение (sig, p) об удалении его сына. Это сообщение заменяет удаленного сына p, и его удаление, т.е. получение, происходит в процессе p и p при получении сигнала уменьшает на единицу счетчик сыновей.

Алгоритм описан как Алгоритм 8.3. Каждый процесс p имеет переменную fatherp, которая не определена если pVT , равна p если p является корнем, и является отцом p, если p - не корень в T. Переменная scp содержит число сыновей p в T.

Доказательство правильности строго устанавливает, что граф T, как определено, является деревом и что он становится пустым только после завершения основного вычисления. Для любой конфигурации  Алгоритма 8.3, определено

VT = {p : fatherp udef}  {передается (mes,p) }  {передается ( sig,p) }

И

ET = {(p, fatherp) : fatherp udef fatherp p}

 { ((mes, p), p) : (mes, p) передается }{((sig,p), p) : (sig, p) передается }.

Безопасность алгоритма следует из утверждения P, определенного следующим образом

Pstatep = active  p  Vp (1)

(u, v) ET u VTv VT  P (2)

scp = #{v : (v, p) ET } (3)

 VT    T дерево с корнем p0 (4)

(statep = passivescp = 0) p  VT (5)

Значение этого инварианта следующие. По определению, множество узлов T включает все сообщения (основные и управляющие), и согласно пункту (1) оно также включает все активные процессы. Пункт (2) скорее технический; он заявляет, что T - действительно граф, и все ребра направлены к процессам. Пункт (3) выражает правильность счетчика сыновей каждого процесса, и пункт (4) заявляет, что T - дерево, и p0 - корень. Пункт (5) используется, чтобы показать, что дерево действительно разрушается, если основное вычисление заканчивается. Для доказательства правильности, обратите внимание, что из P следует, что fatherp = p только для p = p0.

Lemma 8.4 P - инвариант Dijkstra-Scholten алгоритма.

Доказательство. Первоначально statep = passive для всех p p0 и fatherp0 udef, который доказывает пункт (1). Также, ET = , что доказывает (2). Так как scp = 0 для каждого p, удовлетворяется (3). VT = {po} и ET = , таким образом T - дерево с корнем p0, что доказывает (4). Единственный процесс в VT - p0, и p0 активен.

Sp: Никакой процесс не становится активным в Sp, и никакой процесс не удаляется из VT, так что (1) сохраняется.

Применимость действия означает, что p, отец нового узла (mes, p), находится в VT, что доказывает, что (2) сохраняется. В результате действия, VT дополняется узлом (mes, p) и ET дугой ((mes, p), p), что означает, что T остается деревом, и scp правильно увеличивается, чтобы представить нового сына p, следовательно (3) и (4) сохраняются.

Никакой процесс не становится пассивным листом, и никакой процесс не вставлен в VT , таким образом (5) сохраняется.

Rp: Или p уже был в VT (fatherp udef) или p вставлен в VT после действия, таким образом (1) сохраняется.

Если значение fatherp определено, его новое значение - q, и если сигнал послан процессом p, его отец - также q, и q находится в VT, таким образом (2) сохраняется. Число сыновей q не изменяется, потому что сын (mes, q) процесса q заменяется сыном p или сыном (sig, q), так что scq остается правильным, который сохраняет (3).

Структура графа не изменяется, таким образом (4) сохраняется. Процесс p находится в VT после действия в любом случае, таким образом (5) сохраняется.

Ip: Переход p в пассивное состояние сохраняют (1), (2), (3) и (4). Из того, что p был прежде активен следует, что p был в VT. Если scp = 0, p удаляется из VT, таким образом (5) сохраняется.

Затем мы рассматриваем что случится при удалении p из T, то есть, если p окажется пассивным листом T.

Если сигнал посылается процессом p, отец сигнала - последний отец p, который находится в VT, следовательно (2) сохраняется. В этом случае, сигнал заменяет p как сын процесса fatherp, следовательно fatherfather p остается правильным, и (3) сохраняется. Структура графа не изменилась, следовательно (4) сохраняется.

Иначе, то есть, если fatherp = p, p = p0 и p, являющийся листом, означает, что p был единственным узелом T, так что удаление опустошает T , что сохраняет (4).

Ap: Получение сигнала уменьшает число сыновей p на единицу, и присваивание значения на scp гарантируетсохранение (3). То, что p был отецом сигнала, означает, что p был в VT. Если statep = passive и после получения scp присваивается 0, p удаляется, таким образом сохраняется (5). Если p удаляется из VT, инвариант сохраняется по тем же причинам, что и для действия Ip. 

Теорема 8.5 Dijkstra-Scholten алгоритм (Алгоритм 8.3) - правильный алгоритм обнаружения завершения и использует М управляющих сообщений.

Доказательство. Пусть S сумма всех счетчиков сыновей, то есть, S = p P sc p . Первоначально S = 0, S увеличивается на единицу при посылке основного сообщения (в Sp), S - уменьшается на единицу, когда получается управляющее сообщение (в Ap), и S никогда не становится отрицательным (из (3)). Это означает, что число управляющих сообщений никогда не превышает число основных сообщений в любом вычислении.

Чтобы доказать живость алгоритма, предположим, что основное вычисление закончилось. После завершения только действия Ap может иметь место и т.к. S уменьшается на единицу при каждом таком переходе, алгоритм достигает конечной конфигурации. Заметьте, что в этой конфигурации, VT не содержит никакие сообщения. Также, из (5), VT не содержит никаких пассивных листьев. Следовательно, T не имеет никаких листьев, что означает, что T пусто. Дерево стало пустым, когда p0 удалил себя, и программа такова, что p0 на этом шаге вызывает алгоритм объявления.

Чтобы доказать безопасность, обратите внимание, что только p0 вызывает алгоритм объявления, и делает это после того, как удаляет себя из VT. Из (4), T пусто, когда это случается,что заключает в себе term.

Dijkstra-Scholten алгоритм достигает привлекательного баланса между передачей основных и управляющих сообщений; для каждого основного сообщения, посланного от p в q алгоритм посылает точно одно управляющее сообщение от q в p. Передача управляющих сообщений имеет нижнюю границу представленную в Теореме 8.2, так что алгоритм является оптимальным алгоритмом обнаружения завершения централизованных вычислений для худшего случая.

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

8.2.2 Алгоритм Shavit-Francez

Dijkstra-Scholten алгоритм был обобщен для децентрализованных основных вычислений Shavit и Francez [SF86]. В их алгоритме, граф вычисления - лес, каждое дерево которого имеет в качестве корня инициатора основного вычисления. Дерево с корнем p обозначается Tp.

Алгоритм поддерживает граф F = (Vp , Ep), такой что (1) F является пустым или F - лес, каждое дерево которого имеет в качестве корня инициатора; (2) Vp включает все активные процессы и все основные сообщения. Как в алгоритме Dijkstra-Scholten завершении обнаруживается, когда граф становится пустым. К сожалению, в случае леса не так просто выяснить,является ли граф пустым. Действительно, свойство дерева вычислений иметь в качестве корня инициатора означает, что пустота дерева замечается корнем, который и вызывает алгоритм объявления. В случае леса, каждый инициатор замечает пустоту только собственного дерева, но это не означает, что весь леса пуст.

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

Тип файла
Документ
Размер
5,45 Mb
Тип материала
Учебное заведение
Неизвестно

Список файлов реферата

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6513
Авторов
на СтудИзбе
302
Средний доход
с одного платного файла
Обучение Подробнее