Рефераты. Распределенные алгоритмы

Маркер (q, l) вводится в режиме annexing и в этом режиме он начинает исполнять алгоритм обхода (в случае IV Алгоритма 7.13) пока не произойдет одна из следующих ситуаций.

(1) Алгоритм обхода заканчивается: q становится лидером в этом случае (см. Случай IV в Алгоритме 7.13).

(2) Маркер достигает узла p уровня levp > l: маркер убит в этом случае, (Этот случай неявен в Алгоритме 7.13; все условия в том алгоритме требуют l> levp или l = levp.)

(3) Маркер прибывает в узел, где ожидает маркер уровня l: два маркера убиты в этом случае, и новый обход начинается  с того узла (см. Случай II в Алгоритме 7.13).

(4) Маркер достигает узла с уровнем l, который был наиболее недавно посещен маркером с идентификатором catp > q (см. Случай VI) или маркером chasing (см. Случай III): маркер ожидает в том узле.

(5) Маркер достигает узла уровня l, который был наиболее недавно посещен маркером annexing с идентификатором catp < q: маркер становится маркером chasing в этом случае и посылается через тот же самый канал что и  предыдущий маркер (см. Случай V).

Маркер chasing (g, l) отправляется в каждом узле через канал, через который наиболее недавно переданный маркер был послан, пока одна из следующих ситуаций не происходит.

(1) Маркер прибывает в процесс уровня levp > l: маркер убит в этом случае.

(2) Маркер прибывает в процесс с маркером waiting уровня l:  два маркера удалены, и новый обход начат этим процессом (см. Случай II ).

(3) Маркер достигает процесса уровня l, где наиболее недавно передан маркер chasing: маркер становится waiting (см. Случай III).

Маркер waiting  находится в процессе, пока одна из следующих ситуаций не происходит.

(1) Маркер более высокого уровня достигает того же самого процесса: маркер waiting убит (см. Случай 1).

(2) Маркер равного уровня прибывает: два маркера удалены, и обход более высокого уровня начат (см. Случай II).

В Алгоритме 7.13 переменные и информация маркеров, используемая алгоритмом обхода игнорируются. Заметьте, что если p получает маркер уровня выше чем levp, это маркер annexing, инициатор которого не p . Если обход заканчивается в p, p становится лидером и отправляет сообщение всем процессам, заставляя их закончиться.

Правильность и сложность. Для того чтобы продемонстрировать правильность Korach-Kutten-Moran алгоритма,   покажем, что число маркеров, произведенных на каждом уровне уменьшается до одного, на некотором уровне чей инициатор будет избран.

Lemma 7.22 Если произведены k> 1 маркеров на уровне l, по крайней мере один и не более k/2 маркеров произведены на уровне l + 1.

var levp            : integer     init – 1;

     catp , waitp  : P              init udef',

     lastp            : Neighp     init udef:

begin if p is initiator then

             begin levp := levp + 1 ; lastp := trav(p. levp) ;

                       catp := p ; send (annex, p, levp ) to lastp

             end ;

          while . . . (* Условие завершения, смотри текст *) do

               begin receive token (q,l) ;

                          if token is annexing then t := A else t := C ;

                          if l > levp then (* Case I *)

                              begin levp := l ; catp := q ;

                                        waitp := udef ; lastp := trav(q, l) ;

                                        send ( annex, q, l ) to lastp

                                             end

  else if l == levp and waitp ¹udef then (* Случай II *)

      begin waitp := udef ; levp := levp + 1 ;

                lastp := trav(p, levp) ; catp := p ;

                send ( annex, p, levp ) to lastp

      end

  else if l = levp and lastp = udef then (* Случай III *)

waitp := q

                         else if l = levp and t = A and q = catp then (* Случай IV *)

                             begin lastp := trav(q, t);

                                       if lastp = decide then p объявляет себя лидером

                                                                  else send ( annex, q,l) to lastp

                             end

                         else if l = levp and ((t = A and q > catp) or t = C) then (* Cлучай V *)

                            begin send ( chase, q, t ) to lastp ; lastp := udef end

                         else if l = levp then (* Cлучай VI *)

waitp := q

             end

end

Алгоритм 7.13 korach-kutten-moran алгоритм.

Доказательство. Не более k/2 маркеров произведены на уровне l + 1, потому что, когда такой маркер произведен, два маркера уровня l убиты в то же самое время.

Предположим, что имеется уровень l такой, что k> l маркеров произведены на уровне l, но никаком маркер не  произведен на уровне l + 1. Пусть q процесс с максимальным идентификатором, который производит маркер на уровне l.Маркер (q, l) не заканчивает обход, потому что он будет получен процессом p, который уже отправил другой маркер уровня l.Когда это случается впервые (q, l) становится chasing или, если p уже отправил маркер chasing, (q, l) становится waiting. В любом случае, уровне l есть маркеры chasing .

Пусть (r, l) маркер с минимальным идентификатором после, которого посылается маркер chasing . Маркер (r, l) сам не может быть chasing, потому что маркер chasing преследует только маркеры с меньшим идентификатором. Мы можем поэтому предполагать, что (r, 1) стал waiting, когда он впервые достиг процесса p¢, который уже отправил другой маркер уровня l.Пусть p"   последний процесс на пути следования (r, l), который получил маркер annexing, после того как он отправил

(r, l), и маркер сменил режим на chasing r. Этот маркер chasing встретит (r, 1) в p ', или откажется от преследования, если маркер waiting был найден прежде, чем маркер достиг p '. В обоих случаях маркер на уровне l + 1 произведен, т.е. мы пришли к противоречию.

Теорема 7.23 Korach-Kutten-Moran алгоритм (Алгоритм 7.13) - алгоритм выбора.

Доказательство Предположим, что по крайней мере один процесс начинает алгоритм. Согдасно предыдущей лемме, число маркеров, произведенных на каждом уровня уменьшается, и будет иметься уровень,  на котором точно один маркер, скажем (q, 1) произведен. Никакой маркер уровня l ' < l не заканчивает обход, следовательно ни один из этих маркеров не заставляет процесс стать избранным. Уникальный маркер на уровне l только сталкивается с процессами на уровнях меньше чем l, или с cat = q (если он достигает процесса, который уже посещал), и отправляется в обоих случаях. Следовательно обход этого маркера заканчивается, и q избран.

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.