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

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

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

Каждое листовое ребро передает два сообщения <vis> и два сообщения <ack>. Каждое ребро в дереве передает два сообщения <tok>, одно <vis> (посылаемое от родителя потомку), и одно <ack> (от потомка родителю). Следовательно, передается 4|E| сообщений.

var usedp[q] : boolean init false для всех q  Neighp ;

(* Признак того, отправил ли p сообщение q *)

fatherp : process init udef ;

Для инициатора (выполняется один раз):

begin fatherp := p ; выбор q  Neighp ;

forall r  Neighp do send <vis> to r ;

forall r  Neighp do receive <ack> from r ;

usedp[q] := true ; send <tok> to q ;

end

Для каждого процесса при получении <tok> от q0:

begin if fatherp = udef then

begin fatherp := q0 ;

forall r  Neighp\ {fatherp} do send <vis> to r ;

forall r  Neighp\ {fatherp} do receive <ack> from r ;

end ;

if p - инициатор and q  Neighp : usedp[q]

then decide

else if q  Neighp : (q  fatherp & usedp[q])

then begin if fatherp  q0 & usedp[q0]

then q := q0

else выбор q  Neighp \ {fatherp}

с usedp[q] ;

usedp[q] := true ; send <tok> to q

end

else begin usedp[fatherp] := true ;

send <tok> to fatherp

end

end

Для каждого процесса при получении <vis> от q0:

begin usedp[q0] := true ; send <ack> to q0 end

Алгоритм 6.15 Алгоритм поиска в глубину Авербаха.

Передачу сообщения <vis> соседу, которому процесс передает маркер, можно опустить. Это усовершенствование (не выполняемое в Алгоритме 6.15) сберегает по два сообщения для каждого ребра дерева и, следовательно, уменьшает сложность сообщений на 2N-2 сообщения.

Решение Сайдона. Алгоритм Сайдона [Cidon; Cid88] улучшает временную сложность алгоритма Авербаха, не посылая сообщения <ack>. В модификации Сайдона маркер передается немедленно, т.е. без задержки на 2 единицы времени, внесенной в алгоритм Авербаха ожиданием подтверждения. Этот же алгоритм был предложен Лакшмананом и др. [Lakshmanan; LMT87]. В алгоритме Сайдона может возникнуть следующая ситуация. Процесс p получил маркер и послал сообщение <vis> своему соседу r. Маркер позже попадает в r, но в момент, когда r получает маркер, сообщение <vis> процесса p еще не достигло r. В этом случае r может передать маркер p, фактически посылая его через листовое ребро. (Заметим, что сообщения <ack> в алгоритме Авербаха предотвращают возникновение такой ситуации.)

Чтобы обойти эту ситуацию процесс p запоминает (в переменной mrsp), какому соседу он переслал маркер в последний раз. Когда маркер проходит только по ребрам дерева, p получает его в следующий раз от того же соседа mrsp. В ситуации, описанной выше, p получает сообщение <tok> от другого соседа, а именно, от r; в этом случае маркер игнорируется, но p помечает ребро rp, как пройденное, как если бы от r было получено сообщение <vis>. Процесс r получает сообщение <vis> от p после пересылки маркера p, т.е. r получает сообщение <vis> от соседа mrsr. В этом случае r действует так, как если бы он еще не послал маркер p; r выбирает следующего соседа и передает маркер; см. Алгоритм 6.16/6.17.

Теорема 6.35 Алгоритм Сайдона (Алгоритм 6.16/6.17) вычисляет DFS-дерево за 2N-2 единиц времени, используя 4|E| сообщений.

Доказательство. Маршрут маркера подобен маршруту в Алгоритме 6.14. Прохождение по листовым ребрам либо пропускается (как в Алгоритме 6.15), либо в ответ на маркер через листовое ребро посылается сообщение <vis>. В последнем случае, процесс, получая сообщение <vis>, продолжает передавать маркер, как если бы маркер был возвращен через листовое ребро немедленно.

Время между двумя успешными передачами маркера по дереву ограничено одной единицей времени. Если маркер послали по ребру дерева процессу p в момент времени t, то в момент t все сообщения <vis> ранее посещенных соседей q процесса p были посланы, и, следовательно, эти сообщения прибудут не позднее момента времени t+1. Итак, хотя p мог несколько раз послать маркер по листовым ребрам до t+1, не позднее t+1 p восстановился после всех этих ошибок и передал маркер по ребру, принадлежащему дереву. Т.к. должны быть пройдены 2N-2 ребра дерева, алгоритм завершается за 2N-2 единиц времени.

Через каждый канал передается не более двух сообщений <vis> и двух <tok>, откуда граница сложности сообщений равна 4|E|.

var usedp[q] : boolean init false для всех q  Neighp ;

fatherp : process init udef ;

mrsp : process init udef ;

Для инициатора (выполняется один раз):

begin fatherp := p ; выбор q  Neighp ;

forall r  Neighp do send <vis> to r ;

usedp[q] := true ; mrsp := q ; send <tok> to q ;

end

Для каждого процесса при получении <vis> от q0:

begin usedp[q0] := true ;

if q0 = mrsp then (* интерпретировать, как <tok> *)

передать сообщение <tok> как при получении <tok>

end

Алгоритм 6.16 Алгоритм поиска в глубину Сайдона (Часть 1).

Для каждого процесса при получении <tok> от q0:

begin if mrspudef and mrsp  q0

(* это листовое ребро, интерпретируем как сообщение <vis>*)

then usedp[q0] := true

else (* действовать, как в предыдущем алгоритме *)

begin if fatherp = udef then

begin fatherp := q0 ;

forall r  Neighp\ {fatherp}

do send <vis> to r ;

end ;

if p - инициатор and q  Neighp : usedp[q]

then decide

else if q  Neighp : (q  fatherp & usedp[q])

then begin if fatherp  q0 & usedp[q0]

then q := q0

else выбор q  Neighp\ {fatherp}

с usedp[q] ;

usedp[q] := true ; mrsp := q ;

send <tok> to q

end

else begin usedp[fatherp] := true ;

send <tok> to fatherp

end

end

end

Алгоритм 6.17 Алгоритм поиска в глубину Сайдона (Часть 2).

Во многих случаях этот алгоритм будет пересылать меньше сообщений, чем алгоритм Авербаха. Оценка количества сообщений в алгоритме Сайдона предполагает наихудший случай, а именно, когда маркер пересылается через каждое листовое ребро в обоих направлениях. Можно ожидать, что сообщения <vis> помогут избежать многих нежелательных пересылок, тогда через каждый канал будет передано только два или три сообщения.

Сайдон замечает, что хотя алгоритм может передать маркер в уже посещенную вершину, он обладает лучшей временной сложностью (и сложностью сообщений), чем Алгоритм 6.15, который предотвращает такие нежелательные передачи. Это означает, что на восстановление после ненужных действий может быть затрачено меньше времени и сообщений, чем на их предотвращение. Сайдон оставляет открытым вопрос о том, существует ли DFS-алгоритм, который достигает сложности сообщений классического алгоритма, т.е. 2|E|, и который затрачивает O(N) единиц времени.

6.4.3 Поиск в глубину со знанием соседей

Если процессам известны идентификаторы их соседей, проход листовых ребер можно предотвратить, включив в маркер список посещенных процессов. Процесс p, получая маркер с включенным в него списком L, не передает маркер процессам из L. Переменная usedp[q] не нужна, т.к. если p ранее передал маркер q, то q  L; см. Алгоритм 6.18.

Теорема 6.36 DFS-алгоритм со знанием соседей является алгоритмом обхода и вычисляет дерево поиска в глубину, используя 2N-2 сообщений за 2N-2 единиц времени.

У этого алгоритма высокая битовая сложность; если w - количество бит, необходимых для представления одного идентификатора, список L может занять до Nw бит; см. Упражнение 6.14.

var fatherp : process init udef ;

Для инициатора (выполняется один раз):

begin fatherp := p ; выбор q  Neighp ;

send <tlist, {p}> to q

end

Для каждого процесса при получении <tlist, L> от q0:

begin if fatherp = udef then fatherp := q0 ;

if q  Neighp \ L

then begin выбор q  Neighp \ L ;

send < tlist, L{p} > to q

end

else if p - инициатор

then decide

else send < tlist, L{p} > to fatherp

end

Алгоритм 6.18 Алгоритм поиска в глубину со знанием соседей.

6.5 Остальные вопросы

6.5.1 Обзор волновых алгоритмов

В Таблице 6.19 дан список волновых алгоритмов, рассмотренных в этой главе. В столбце «Номер» дана нумерация алгоритмов в главе; в столбце «C/D» отмечено, является ли алгоритм централизованным (C) или децентрализованным (D); столбец «T» определяет, является ли алгоритм алгоритмом обхода; в столбце «Сообщения» дана сложность сообщений; в столбце «Время» дана временная сложность. В этих столбцах N - количество процессов, |E| - количество каналов, D - диаметр сети (в переходах).

Алгоритм

Номер

Топология

C/D

T

Сообщения

Время

Раздел 6.2: Общие алгоритмы

Кольцевой

6.2

кольцо

C

да

N

N

Древовидный

6.3

дерево

D

нет

N

O(D)

Эхо-алгоритм

6.5

произвольная

C

нет

2|E|

O(N)

Алгоритм опроса

6.6

клика

C

нет

2N-2

2

Фазовый

6.7

произвольная

D

нет

2D|E|

2D

Фазовый на кликах

6.8

клика

D

нет

N(N-1)

2

Финна

6.9

произвольная

D

нет

4N|E|

O(D)

Раздел 6.3: Алгоритмы обхода

Последовательный опрос

6.10

клика

C

да

2N-2

2N-2

Для торов

6.11

тор

C

да

N

N

Для гиперкубов

6.12

гиперкуб

C

да

N

N

Тарри

6.13

произвольная

C

да

2|E|

2|E|

Раздел 6.4: Алгоритмы поиска в глубину

Классический

6.14

произвольная

C

да

2|E|

2|E|

Авербаха

6.15

произвольная

C

нет

4|E|

4N-2

Сайдона

6.16/6.17

произвольная

C

нет

4|E|

2N-2

Со знанием соседей

6.18

произвольная

C

да

2N-2

2N-2

Замечание: фазовый алгоритм (6.7) и алгоритм Финна (6.9) подходят для ориентированных сетей.

Таблица 6.19 Волновые алгоритмы этой главы.

Сложность распространения волн в сетях большинства топологий значительно зависит от того, централизованный алгоритм или нет. В Таблице 6.20 приведена сложность сообщений централизованных и децентрализованных волновых алгоритмов для колец, произвольных сетей и деревьев. Таким же образом можно проанализировать зависимость сложности от других параметров, таких как знание соседей или чувство направления (Раздел B.3).

Топология

C/D

Сложность

Ссылка

Кольцо

C

N

Алгоритм 6.2

D

O(N logN)

Алгоритм 7.7

Произвольная

C

2|E|

Алгоритм 6.5

D

O(N logN + |E|)

Раздел 7.3

Дерево

C

2(N-1)

Алгоритм 6.5

D

O(N)

Алгоритм 6.3

Таблица 6.20 Влияние централизации на сложность сообщений.

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

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

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

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