МЕНЮ


Фестивали и конкурсы
Семинары
Издания
О МОДНТ
Приглашения
Поздравляем

НАУЧНЫЕ РАБОТЫ


  • Инновационный менеджмент
  • Инвестиции
  • ИГП
  • Земельное право
  • Журналистика
  • Жилищное право
  • Радиоэлектроника
  • Психология
  • Программирование и комп-ры
  • Предпринимательство
  • Право
  • Политология
  • Полиграфия
  • Педагогика
  • Оккультизм и уфология
  • Начертательная геометрия
  • Бухучет управленчучет
  • Биология
  • Бизнес-план
  • Безопасность жизнедеятельности
  • Банковское дело
  • АХД экпред финансы предприятий
  • Аудит
  • Ветеринария
  • Валютные отношения
  • Бухгалтерский учет и аудит
  • Ботаника и сельское хозяйство
  • Биржевое дело
  • Банковское дело
  • Астрономия
  • Архитектура
  • Арбитражный процесс
  • Безопасность жизнедеятельности
  • Административное право
  • Авиация и космонавтика
  • Кулинария
  • Наука и техника
  • Криминология
  • Криминалистика
  • Косметология
  • Коммуникации и связь
  • Кибернетика
  • Исторические личности
  • Информатика
  • Инвестиции
  • по Зоология
  • Журналистика
  • Карта сайта
  • Распределенные алгоритмы

    решительный процесс выходит основной цикл и свидетели криков в течение

    следующих двух раундов, чтобы дать возможность другим процессам решить.

    Протокол дан как Алгоритм 13.3.

    var [pic] : (0, 1) init [pic] (*голос p*)

    [pic] : integer init 0 (*номер раунда*)

    [pic] : integer init 1 (*Вес голоса p*)

    [pic] : integer init 0 (*Счетчик полученных голосов*)

    [pic] : integer init 0 (*Счетчик полученных свидетелей *)

    begin

    while [pic] do

    begin [pic](*сброс счетчиков*)

    shout;

    while [pic] do

    begin receive;

    if r > [pic] then (*Будущий раунд…*)

    send< vote, r, v, w> to p (*…обработать позже*)

    else if r = [pic] then

    begin [pic]

    if w > N/2 then (*Свидетель*)

    [pic]

    end

    else (*r < [pic], ignore*) skip

    end;

    (*Выбрать новое значение: голос и вес в следующем раунде*)

    if [pic] then [pic]:= 0

    else if [pic] then [pic]:= 1

    else if [pic] then [pic]:= 0

    else [pic]:= 1;

    [pic];

    (*Принять решение, если более t свидетелей*)

    if [pic] then [pic];

    [pic]

    end;

    (*Помочь другим процессам принять решение*)

    shout;

    shout

    end

    Алгоритм 13.3 Аварийно-устойчивый алгоритм согласия

    Голоса, прибывающие для более поздних раундов должны быть обработаны в

    соответствующем раунде; это моделируется в алгоритме с помощью посылки

    сообщения самому процессу для обработки позже. Заметьте, что в любом раунде

    процесс получает самое большее один голос от каждого процесса, общим

    количеством до N-t голосов; так как более, чем N-t процессов могут

    “выкрикивать” голос, процессы могут принимать во внимание различные

    подмножества “выкрикиваемых” голосов. Мы впоследствии покажем несколько

    свойств алгоритма, которые вместе означают, что это - вероятностный

    аварийно-устойчивый протокол согласия (Теорема 13.24).

    Лемма 13.20 В любом раунде никакие два процесса не свидетельствуют за

    различные значения.

    Доказательство. Предположим, что в раунде k, процесс p свидетельствует за

    v, и процесс q свидетельствует за w; k > 1, потому что в раунде 1 никакие

    процессы не свидетельствуют. Предположение подразумевает, что в раунде k-1,

    p получил больше чем N/2 голосов за v, и q получил больше чем N/2 голосов

    за w. Вместе задействовано более N голосов; следовательно, процессы от

    которых p и q получили голоса перекрываются, то есть, есть r, который

    послал v-голос процессу p и w-голос процессу q. Это означает, что v =w. (

    Лемма 13.21 Если процесс принимает решение, то все корректные процессы

    принимают решение об одном и том же значении, и самое большее два раунда

    спустя.

    Доказательство. Пусть k будет первым раундом, в котором принимается

    решение, p - процесс, принимающий решение в раунде k, и v - значение

    решения p. Решение подразумевает, что в раунде k имелись v-свидетели;

    следовательно, по Лемме 13.20 не имелось свидетелей других значений, так

    что никакое другое решение не принимается в раунде k.

    В раунде k имелось более t свидетелей v (это следует из решения p),

    следовательно, все корректные процессы получают по крайней мере одного v-

    свидетеля в раунде k. В результате, все процессы, которые голосуют в раунде

    k + 1, голосуют за v (заметьте также, что p все еще “выкрикивает” голос в

    раунде k + 1). Это означает, что, если решение вообще принимается в раунде

    k + 1, это решение v.

    В раунде k + 1 предлагаются только v-голоса, следовательно все процессы,

    которые голосуют в раунде k + 2 свидетельствуют за v в этом раунде (p

    тоже). В результате, в раунде k + 2 все корректные процессы, которые не

    приняли решения в более ранних раундах, получают N-t v-свидетелей и

    останавливаются на v. (

    Лемма 13.22 [pic][никакого решения не принято в раунде[pic]] = 0.

    Доказательство. Пусть S - множество N-t корректных процессов (такое

    множество существует) и предположим, что до раунда [pic] не принято

    никакого решения. Предположение законного планирования подразумевает, что,

    для некоторого [pic], в любом раунде вероятность того, что каждый процесс в

    S получает точно N-t голосов процессов в S, по крайней мере [pic]. Это

    происходит в трех последующих раундах [pic], [pic] и [pic] с вероятностью

    по крайней мере [pic].

    Если это происходит, процессы в S получают одни и те же голоса в раунде

    [pic] и следовательно выбирают одно и то же значение, допустим [pic] в

    раунде [pic]. Все процессы в S голосуют за [pic] в раунде [pic], что

    означает, что каждый процесс в S получает N-t голосов за [pic] в раунде

    [pic]. Это значит, что процессы в S за [pic] в раунде [pic]; следовательно

    они все получают N-t > t свидетелей [pic] в раунде [pic], и все принимают

    решение [pic] в этом раунде. Отсюда

    Pr [Процессы в S не приняли решения в раунде k + 2]

    [pic]Pr [Процессы в S не не приняли решения до раунда k],

    что подтверждает результат. (

    Лемма 13.23 Если все процессы начинают алгоритм с входом v, то все они

    принимают решение v в раунде 2.

    Доказательство. Все процессы получают только голоса за v в раунде 1, так

    что все процессы свидетельствуют за v в раунде 2. Это означает, что все они

    они принимают решение в этом раунде. (

    Теорема 13.24 Алгоритм 13.3 - вероятностный, t-аварийно-устойчивый протокол

    согласия при t < N/2.

    Доказательство. Сходимость показана в Лемме 13.22, а соглашение - в Лемме

    13.21; нетривиальность следует из Леммы 13.23. (

    Зависимость решения от входных значениях анализируется далее в Упражнении

    13.11.

    13.4.2 Византийско-устойчивые Протоколы Согласия

    Византийская модель сбоев более недоброжелательна, чем модель аварий,

    потому что Византийские процессы могут выполнять произвольные переводы

    состояний и могут посылать сообщения, которые расходятся с алгоритмом. В

    дальнейшем мы будем использовать запись [pic] (или [pic]) для обозначения

    того, что имеется последовательность корректных шагов, то есть, переходов

    протокола (в процессах S), ведущих систему из [pic] в [pic]. Аналогично,

    [pic] достижима, если имеется последовательность корректных шагов, ведущих

    из начальной конфигурации в [pic]. Злонамеренность Византийской модели

    подразумевает более низкий максимум способности восстановления, чем для

    модели аварийного отказа.

    Теорема 13.25 t-Византийско-устойчивого протокола согласия при [pic] не

    существует.

    Доказательство. Предположим, напротив, что такой протокол существует.

    Читателю снова предоставляется показать существование бивалентной начальной

    конфигурации любого такого протокола (используйте, как обычно,

    нетривиальность).

    Высокая способность восстановления протокола означает, что можно выбрать

    два множества S и T таких, что [pic], [pic], и [pic]. Словом, и S и T

    достаточно большие, чтобы выжить независимо, но их пересечение может быть

    полностью злонамеренно. Это используется для демонстрации того, что никакие

    бивалентные конфигурации не являются достижимыми.

    Заявление 13.26 Достижимая конфигурация [pic] является или S-0-валентной и

    T-0-валентной, или S-1- валентной и T-1-валентной.

    Доказательство. Так как [pic] достигается последовательностью корректных

    шагов, все возможности для выбора множества t процессов, которые дают сбой,

    все еще открыты. Предположим, напротив, что S и T могут достичь разных

    решений, то есть, [pic] и [pic], где [pic] - конфигурация, где все

    процессы в S (в T) остановились на v ([pic]). Можно достичь противоречивого

    состояния, предполагая, что процессы в [pic] злонамеренные, и объединяя

    планы следующим образом. Начиная с конфигурации [pic], процессы в [pic]

    сотрудничают с другими процессами в S в последовательности, ведущей к v-

    решению в S. Когда это решение было принято процессами в S, злонамеренные

    процессы восстанавливают свое состояние как в конфигурации [pic] и

    впоследствии сотрудничают с процессами в T в последовательности, ведущей к

    [pic] решению в T. Из этого получается конфигурация, в которой корректные

    процессы приняли решение по-разному, что находится в противоречии с

    требованием соглашения. (

    Заявление 13.27 Достижимой бивалентной конфигурации не существует.

    Доказательство. Пусть дана достижимая бивалентная конфигурация [pic] и

    предположим, что [pic] является, и S-1-валентной и T-1-валентной (Заявление

    13.26). Однако, [pic] бивалентна, поэтому из [pic] также достижима 0-

    решенная конфигурация [pic] (очевидно, в сотрудничестве между S и T). В

    последовательности конфигураций из [pic]в [pic] имеются две вытекающих

    конфигурации [pic] и [pic], причем [pic] и S-v-валентна и T-v-валентна.

    Пусть p - процесс, вызывающий переход из [pic] в [pic]. Теперь не

    выполняется [pic], потому что [pic] S-1-валентна и [pic] S-0-валентна;

    аналогично не выполняется [pic]. Пришли к противоречию. (

    Последнее заявление противоречит существованию бивалентных начальных

    конфигураций. Таким образом Теорема 13.25 доказана. (

    Рисунок 13.4 Византийский процесс, моделирующий другие процессы.

    Византийско-устойчивый алгоритм согласия Брахи и Туэга. При t < N/3, t-

    Византийско-устойчивые протоколы согласия существуют. Необходимо, чтобы

    система связи позволяла процессу определять, каким процессом было послано

    полученное сообщение. Если Византийский процесс p может послать корректному

    процессу r сообщение и успешно симулировать получение процессом r сообщения

    от q (см Рисунок 13.4), проблема становится неразрешимой. Действительно,

    процесс p может моделировать достаточно много корректных процессов, чтобы

    навязать неправильное решение в процессе r.

    Подобно аварийно-устойчивому протоколу, Византийско-устойчивый протокол

    (Алгоритм 13.5) функционирует в раундах. В каждый раунде каждый процесс

    может представлять на рассмотрение голоса, и решение принимается, когда

    достаточно много процессов голосуют за одно и то же значение. Более низкая

    способность восстановления (t < N/3) устраняет необходимость в различении

    свидетелей и не-свидетелей; процесс принимает решение после принятия более

    (N + t) /2 голосов за одно и то же значение.

    Злонамеренность этой модели отказов требует, однако, введения механизма

    проверки голоса, что является затруднением протокола. Без такого механизма

    Византийский процесс может нарушать голосование среди корректных процессов,

    посылая различные голоса различным корректным процессам. Такое

    злонамеренное поведение не возможно в модели аварийного отказа. Механизм

    проверки гарантирует, что, хотя Византийский процесс r может посылать

    различные голоса корректным процессам p и q, он не может обмануть p и q,

    чтобы они приняли различные голоса за r (в некотором раунде).

    Механизм проверки основан на отражении сообщений. Процесс “выкрикивает”

    свой голос (как initial, in), и каждый процесс, после получения первого

    голоса за некоторый процесс в некотором раунде, отражает эхом голос (как

    echo, ec). Процесс примет голос, если для него были приняты более (N+t)/2

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

    коммуникации между корректными процессами (Лемма 13.28), и корректные

    процессы никогда не принимают различные голоса за один и тот же процесс

    (Лемма 13.29). Тупиков нет (Лемма 13.30).

    Мы говорим, что процесс p принимает v-голос за процесс r в раунде k, если p

    увеличивает [pic] после получения сообщения голоса .

    Алгоритм гарантирует, что p проходит раунд k только после принятия N-t

    голосов, и что p принимает также самое большее один голос за каждый процесс

    в каждом раунде.

    var [pic] : (0, 1) init [pic];

    [pic] : integer init 0;

    [pic] : integer init 0;

    [pic] : integer init 0;

    repeat forall [pic]do begin [pic]; [pic] end;

    shout;

    (*Теперь принять N-t голосов для текущего раунда*)

    while [pic] do

    begin receive from q;

    if уже был получен от q

    then skip (*q повторяет, должно быть, Византийский*)

    else if t=in and [pic]

    then skip (*q лжет, должно быть, Византийский *)

    else if [pic]

    then (*обработать сообщение в более позднем раунде*)

    send to p

    else (*Обработать или отразить сообщение голоса*)

    case t of

    in: shout

    ec: if [pic] then

    begin [pic]

    if [pic]

    then [pic]

    end

    else skip (*старое сообщение*)

    esac

    end;

    (*Выбрать значение для следующего раунда*)

    if [pic] then [pic] else [pic];

    if [pic] then [pic];

    [pic]

    until false

    Алгоритм 13.5 Византийско-устойчивый алгоритм согласия.

    Лемма 13.28 Если корректный процесс p принимает в раунде k голос v за

    корректный процесс r, то r голосовал за v в раунде k.

    Доказательство. Процесс p принимает голос после получения сообщения от более (N+t)/2 (различных) процессов; по крайней мере один

    корректный процесс s послал такое сообщение p. Процесс s посылает эхо p

    после получения сообщения от r, что означает, так как r

    корректен, что r голосует за v в раунде k. (

    Лемма 13.29 Если корректные процессы p и q принимают голос за процесс r в

    раунде k, они принимают тот же самый голос.

    Доказательство. Предположим, что в раунде k процесс p принимает v-голос за

    r, а процесс q принимает w-голос. Таким образом, p получил от более (N+t)/2 процессов, и q получил от более

    (N+t)/2 процессов. Так как имеется только N процессов, то, должно быть,

    более t процессов послали процессу p и процессу q. Это значит, что по крайней мере один корректный процесс

    сделал так, и следовательно v = w. (

    Лемма 13.30 Если все корректные процессы начинают раунд k, то они принимают

    достаточно много голосов в этом раунде, чтобы закончить его.

    Доказательство. Корректный процесс r, начинающий раунд k с [pic],

    “выкрикивает” начальный голос для этого раунда, который отражается всеми

    корректными процессами. Таким образом, для корректных процессов p и r,

    посылается p по крайней мере N-t процессами, позволяя p

    принять v-голос за r в раунде k, если не принято ранее N-t других голосов.

    Отсюда следует, что процесс p принимает N-t голосов в этом раунде. (

    Теперь доказательство правильности протокола похоже на доказательство

    правильности аварийно-устойчивого протокола.

    Лемма 13.31 Если корректный процесс принимает решение (останавливается на)

    v в раунде k, то все корректные процессы выбирают v в раунде k и всех более

    поздних раундах.

    Доказательство. Пусть S - множество по крайней мере (N + t)/2 процессов,

    для которых p принимает v-голос в раунде k. Корректный процесс q принимает

    в раунде k N-t голосов, включая по крайней мере [pic] голосов за процессы в

    S. По Лемме 13.29, q принимает более (N-t)/2 v-голоса, что означает, что q

    выбирает v в раунде k.

    Чтобы показать, что все корректные процессы выбирают v в более поздних

    раундах, предположим, что все корректные процессы выбирают v в некотором

    раунде l; следовательно, все корректные процессы голосуют за v в раунде

    l+1. В раунде l+1 каждый корректный процесс принимает N-t голосов, включая

    более (N-t)/2 голосов за корректные процессы. По Лемме 13.28, корректный

    процесс принимает по крайней мере (N-t)/2 v-голоса, и, следовательно, снова

    выбирает v в раунде l+1. (

    Лемма 13.32 [pic] Pr [Корректный процесс p не принял решения до раунда k] =

    0.

    Доказательство. Пусть S - множество по крайней мере N-t корректных

    процессов и предположим, что p не принял решения до раунда k. С

    вероятностью [pic] > 0 все процессы в S принимают в раунде k голоса за одну

    и ту же совокупность N-t процессов и, в раунде k + 1, только голоса за

    процессы в S. Если это происходит, процессы в S голосуют одинаково в раунде

    k + 1 и принимают решение в раунде k + 1. Отсюда

    Pr [Корректный процесс p не принял решения до раунда k + 2]

    [pic]Pr [Корректный процесс p не принял решения до раунда k],

    что подтверждает результат. (

    Лемма 13.33 Если все корректные процессы начинают алгоритм с входом v, в

    конечном счете принимается решение v.

    Доказательство. Как в доказательстве Леммы 13.31 можно показать, что все

    корректные процессы выбирают v снова в каждом раунде. (

    Теорема 13.34 Алгоритм 13.5 - вероятностный, t-Византийско-устойчивый

    протокол согласия при t < N/3.

    Доказательство. Сходимость показана в Лемме 13.32 и соглашение - в Лемме

    13.31; нетривиальность следует из Леммы 13.33. (

    Зависимость решения от входных значений проанализирована далее в Упражнении

    13.12. Алгоритм 13.5 описывается как бесконечный цикл для простоты

    представления; мы в заключение описываем, как можно модифицировать

    алгоритм, чтобы он завершался в каждом решающем процессе. После принятия

    решения v в раунде k процесс p выходит из цикла и “выкрикивает”

    "множественные" голоса и отражает . Эти сообщения интерпретируются как начальный и отражаемый голоса для

    всех раундов после k. Действительно, p голосует за v во всех более поздних

    раундах, и все корректные процессы будут голосовать так же (Лемма 13.31).

    Следовательно, множественные сообщения - такие, которые были бы посланы

    процессом p при продолжении алгоритма, с возможным исключением для

    отражений злонамеренных начальных голосов.

    13.5 Слабое Завершение

    В этом разделе изучается проблема асинхронного Византийского вещания. Цель

    вещания состоит в том, чтобы cделать значение, которое присутствует в одном

    процессе g, командующем, известным всем процессам. Формально, требование

    нетривиальности для протокола согласия усилено заданием того, что значение

    решения является входом командующего, если он корректен:

    Зависимость. Если командующий корректен, все корректные процессы

    Страницы: 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


    Приглашения

    09.12.2013 - 16.12.2013

    Международный конкурс хореографического искусства в рамках Международного фестиваля искусств «РОЖДЕСТВЕНСКАЯ АНДОРРА»

    09.12.2013 - 16.12.2013

    Международный конкурс хорового искусства в АНДОРРЕ «РОЖДЕСТВЕНСКАЯ АНДОРРА»




    Copyright © 2012 г.
    При использовании материалов - ссылка на сайт обязательна.