МЕНЮ


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

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


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

    это длина самой длинной цепочки сообщений во всех вычислениях алгоритма.

    Это определение, как и Определение 6.31, рассматривает всевозможные

    выполнения алгоритма для определения его временной сложности, но определяет

    другую меру сложности для вычислений. Рассмотрим ситуацию (происходящую в

    вычислении, определенном в доказательстве теоремы 6.38), когда одно

    сообщение «обгоняется» цепочкой из k сообщений. Временная сложность этого

    (под)вычисления равна 1, в то время, как цепочечная сложность того же

    самого (под)вычисления равна k. В системах, где гарантируется существование

    верхней границы задержек сообщений (как предполагается в определении

    временной сложности), временная сложность является правильным выбором. В

    системах, где большинство сообщений доставляется со «средней» задержкой, но

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

    выбрать цепочечную сложность.

    Упражнения к Главе 6

    Раздел 6.1

    Упражнение 6.1 Приведите пример PIF-алгоритма для систем с синхронной

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

    Теоремы 6.7 и 6.12). Пример может подходить только для конкретной

    топологии.

    Упражнение 6.2 В частичном порядке (X, ?) элемент b называется дном, если

    для всех c ? X, b ? c.

    В доказательстве Теоремы 6.11 используется то, что частичный порядок (X,?)

    не содержит дна. Где именно?

    Можете ли вы привести алгоритм, который вычисляет функцию инфимума в

    частичном порядке с дном и не является волновым алгоритмом?

    Упражнение 6.3 Приведите два частичных порядка на натуральных числах, для

    которых функция инфимума является (1) наибольшим общим делителем, и (2)

    наименьшим общим кратным (the least common ancestor).

    Приведите частичные порядки на наборах подмножеств области U, для которых

    функция инфимума является (1) пересечением множеств, и (2) объединением

    множеств.

    Упражнение 6.4 Докажите теорему об инфимуме (Теорему 6.13).

    Раздел 6.2

    Упражнение 6.5 Покажите, что в каждом вычислении древовидного алгоритма

    (Алгоритм 6.3) решение принимают ровно два процесса.

    Упражнение 6.6 Используя эхо-алгоритм (Алгоритм 6.5), составьте алгоритм,

    который вычисляет префиксную схему маркировки (см. Подраздел 4.4.3) для

    произвольной сети с использованием 2|E| сообщений и O(N) единиц времени.

    Можете ли вы привести алгоритм, вычисляющий схему маркировки за время O(D)

    ? (D - диаметр сети.)

    Упражнение 6.7 Покажите, что соотношение в Лемме 6.19 выполняется, если

    сообщение потерялось в канале pq, но не выполняется, если сообщения могут

    дублироваться. Какой шаг доказательства не действует, если сообщения могут

    дублироваться?

    Упражнение 6.8 Примените построение в Теореме 6.12 к фазовому алгоритму

    так, чтобы получить алгоритм, вычисляющий максимум по целочисленным входам

    всех процессов.

    Каковы сложность сообщений, временная и битовая сложность вашего алгоритма?

    Упражнение 6.9 Предположим, вы хотите использовать волновой алгоритм в

    сети, где может произойти дублирование сообщений.

    Какие изменения должны быть сделаны в эхо-алгоритме?

    Какие изменения должны быть сделаны в алгоритме Финна?

    Раздел 6.3

    Упражнение 6.10 Полный двудольный граф - это граф G = (V,E), где V = V1 ?

    V2 при V1 ? V2 = ? и E = V1 Ч V2.

    Приведите алгоритм 2x-обхода для полных двудольных сетей.

    Упражнение 6.11 Докажите или опровергните: Обход гиперкуба без чувства

    направления требует ?(N logN) сообщений.

    Раздел 6.4

    Упражнение 6.12 Приведите пример вычисления алгоритма Тарри, в котором в

    результате получается не DFS-дерево.

    Упражнение 6.13 Составьте алгоритм, который вычисляет интервальные схемы

    маркировки поиска в глубину (см. Подраздел 4.4.2) для произвольных связных

    сетей.

    Может ли это быть сделано за O(N) единиц времени? Может ли это быть сделано

    с использованием O(N) сообщений?

    Упражнение 6.14 Предположим, что алгоритм поиска в глубину со знанием

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

    идентификаторы своих соседей, но и множество идентификаторов всех процессов

    (P). Покажите, что в этом случае достаточно сообщений, состоящих из N бит.

    Раздел 6.5

    Упражнение 6.15 Адаптируйте эхо-алгоритм (Алгоритм 6.5) для вычисления

    суммы по входам всех процессов.

    Упражнение 6.16 Предположим, что процессы в сетях, изображенных на

    Рис.6.21, имеют уникальные идентификаторы, и каждый процесс имеет

    целочисленный вход. Смоделируйте на обеих сетях вычисление фазового

    алгоритма, вычисляя множество S = {(p, jp): p ? P} и сумму по входам.

    Упражнение 6.17 Какова цепочечная сложность фазового алгоритма для клик

    (Алгоритм 6.8) ?

    7 Алгоритмы выбора

    В этой главе будут обсуждаться проблемы выбора, также называемого

    нахождением лидера. Задача выбора впервые была изложена ЛеЛанном [LeLann;

    LeL77], который предложил и первое решение; см. Подраздел 7.2.1. Задача

    начинается в конфигурации, где все процессы находятся в одинаковом

    состоянии, и приходит в конфигурацию, где ровно один процесс находится в

    состоянии лидера (leader), а все остальные - в состоянии проигравших

    (lost).

    Выбор среди процессов нужно проводить, если должен быть выполнен

    централизованный алгоритм и не существует заранее известного кандидата на

    роль инициатора алгоритма. Например, в случае процедуры инициализации

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

    Т.к. множество активных процессов может быть неизвестно заранее, невозможно

    назначить один процесс раз и навсегда на роль лидера.

    Существует большое количество результатов о задаче выбора (как алгоритмы,

    так и более общие теоремы). Результаты для включения в эту главу выбирались

    по следующим критериям.

    Синхронные системы, анонимные процессы, и отказоустойчивые алгоритмы

    обсуждаются в других главах. В этой главе всегда предполагается, что

    процессы и каналы надежны, система полностью асинхронна, и процессы

    различаются уникальными идентификаторами.

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

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

    компромисс между временной сложностью и сложностью сообщений, не

    обсуждаются.

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

    рассматривать результаты, вносящие в сложность только постоянный множитель.

    Т.к. результаты Кораха и др. (Раздел 7.4) подразумевают существование O(N

    logN)-алгоритмов для нескольких классов сетей, алгоритм для клики с этой

    сложностью не будет рассматриваться отдельно.

    7.1 Введение

    Задача выбора требует, чтобы из конфигурации, где все процессы находятся в

    одинаковом состоянии, система пришла в конфигурацию, где ровно один процесс

    находится в особом состоянии лидер (leader), а все остальные процессы - в

    состоянии проигравших (lost). Процесс, находящийся в состоянии лидер в

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

    Определение 7.1 Алгоритм выбора - это алгоритм, удовлетворяющий следующим

    требованиям.

    Каждый процесс имеет один и тот же локальный алгоритм.

    Алгоритм является децентрализованным, т.е. вычисление может быть начато

    произвольным непустым подмножеством процессов.

    Алгоритм достигает заключительной конфигурации в каждом вычислении, и в

    каждой достижимой заключительной конфигурации существует ровно один процесс

    в состоянии лидера, а все остальные процессы - в состоянии проигравших.

    Иногда последнее требование ослабляется и требуется только, чтобы ровно

    один процесс находился в состоянии лидера. В этом случае выбранный процесс

    знает, что он победил, но проигравшие (еще) не знают, что они проиграли.

    Если дан алгоритм, удовлетворяющий этим ослабленным действиям, то его можно

    легко расширить, добавив инициируемую лидером рассылку сообщений всем

    процессам, при которой все процессы информируются о результатах выбора. В

    некоторых алгоритмах этой главы это дополнительное оповещение опущено.

    Во всех алгоритмах этой главы процесс p имеет переменную statep с

    возможными значениями leader (лидер) и lost (проигравший). Иногда мы будем

    предполагать, что statep имеет значение sleep (спящий), когда p еще не

    выполнил ни одного шага алгоритма, и значение cand (кандидат), если p

    вступил в вычисление, но еще не знает, победил он или проиграл. Некоторые

    алгоритмы используют дополнительные состояния, такие как active, passive и

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

    7.1.1 Предположения, используемые в этой главе

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

    Система полностью асинхронна. Предполагается, что процессам недоступны

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

    или коротким.

    Оказывается, что предположение о синхронной передаче сообщений (т.е. когда

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

    влияет на результаты, полученные для задачи выбора. Читатель может сам

    убедиться, что алгоритмы, данные в этой главе, могут применяться в системах

    с синхронной передачей сообщений, и что полученные нижние границы также

    применимы в этом случае.

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

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

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

    Каждый процесс идентифицируется уникальным именем, своим идентификатором,

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

    идентификатор процесса p - просто p. Идентификаторы извлекаются из

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

    отношение ?. Количество бит, представляющих идентификатор, равно w.

    Важность уникальных идентификаторов в задаче выбора состоит в том, что они

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

    симметрии между процессами. При разработке алгоритма выбора можно,

    например, потребовать, что процесс с наименьшим (или наоборот, с

    наибольшим) идентификатором должен победить. Тогда задача состоит в поиске

    наименьшего идентификатора с помощью децентрализованного алгоритма. В этом

    случае задачу выбора называют задачей поиска экстремума.

    Хотя некоторые из алгоритмов, обсуждаемых в этой главе, изначально были

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

    алгоритмов для выбора наименьшего процесса. Во всех случаях алгоритм для

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

    идентификаторов.

    Некоторые результаты этой главы относятся к алгоритмам сравнения. Алгоритмы

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

    операцию над идентификаторами. Как мы увидим, все алгоритмы, представленные

    в этой главе, являются алгоритмами сравнения. Всякий раз, когда дается

    оценка нижней границы, мы явно отмечаем, касается ли она алгоритмов

    сравнения.

    Было показано (например, Бодлендером [Bodlaender, Bod91b] для случая

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

    достигают лучшей сложности, чем алгоритмы сравнения. Это не так в случае

    синхронных систем, как будет показано в Главе 11; в этих системах

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

    сравнения.

    Каждое сообщение может содержать O(w) бит. Каждое сообщение может содержать

    не более постоянного числа идентификаторов процессов. Это предположение

    сделано для того, чтобы позволить справедливое сравнение сложности

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

    7.1.2 Выбор и волны

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

    нарушения симметрии между процессами. Можно разработать алгоритм выбора

    так, чтобы выбирался процесс с наименьшим идентификатором. Согласно

    результатам в Подразделе 6.1.5, наименьший идентификатор может быть

    вычислен за одну волну. Это означает, что выбор можно провести, выполняя

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

    этим идентификатором становится лидером. Т.к. алгоритм выбора должен быть

    децентрализованным, этот принцип может быть применен только к

    децентрализованным волновым алгоритмам (см. Таблицу 6.19).

    Выбор с помощью древовидного алгоритма. Если топология сети - дерево или

    доступно остовное дерево сети, выбор можно провести с помощью древовидного

    алгоритма (Подраздел 6.2.2). В древовидном алгоритме требуется, чтобы хотя

    бы все листья были инициаторами алгоритма. Чтобы получить развитие

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

    добавляется фаза wake-up. Процессы, которые хотят начать выбор, рассылают

    сообщение всем процессам. Логическая переменная ws используется,

    чтобы каждый процесс послал сообщения не более одного раза, а

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

    полученных процессом. Когда процесс получит сообщение через каждый

    канал, он начинает выполнять Алгоритм 6.3, который расширен (как в Теореме

    6.12) таким образом, чтобы вычислять наименьший идентификатор и чтобы

    каждый процесс принимал решение. Когда процесс принимает решение, он знает

    идентификатор лидера; если этот идентификатор совпадает с идентификатором

    процесса, он становится лидером, а если нет - проигравшим; см. Алгоритм

    7.1.

    var wsp : boolean init false ;

    wrp : integer init 0 ;

    recp[q] : boolean для всех q ? Neighp init false ;

    vp : P init p ;

    statep : (sleep, leader, lost) init sleep ;

    begin if p - инициатор then

    begin wsp := true ;

    forall q ? Neighp do send to q

    end ;

    while wrp < # Neighp do

    begin receive ; wrp := wrp + 1 ;

    if not wsp then

    begin wsp := true ;

    forall q ? Neighp do send to q

    end

    end ;

    (* Начало древовидного алгоритма *)

    while # {q : ¬recp[q]} > 1 do

    begin receive from q ; recp[q] := true ;

    vp := min (vp,r)

    end ;

    send to q0 with ¬recp[q0] ;

    receive from q0 ;

    vp := min (vp,r) ; (* decide с ответом vp *)

    if vp = p then statep := leader else statep := lost ;

    forall q ? Neighp, q ? q0 do send to q

    end

    Алгоритм 7.1 Алгоритм выборов для деревьев.

    Теорема 7.2 Алгоритм 7.1 решает задачу выбора на деревьях, используя O(N)

    сообщений и O(D) единиц времени.

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

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

    процесс начинает выполнение древовидного алгоритма после получения

    сообщения от каждого соседа. Все процессы завершают древовидный

    алгоритм с одним и тем же значением v, а именно, наименьшим идентификатором

    процесса. Единственный процесс с этим идентификатором закончит выполнение в

    состоянии лидер, а все остальные процессы - в состоянии проигравший.

    Через каждый канал пересылается по два сообщения и по два

    сообщения , откуда сложность сообщений равна 4N-4. В течение D

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

    процесс послал сообщения , следовательно, в течение D+1 единиц

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

    принимается не позднее, чем через D единиц времени после начала волны, а

    последнее решение принимается не позднее D единиц времени после первого,

    откуда полное время равно 3D+1. Более тщательный анализ показывает, что

    алгоритм всегда завершается за 2D единиц времени, но доказательство этого

    оставлено читателю; см. Упражнение 7.2.

    Если порядок сообщений в канале может быть изменен (т.е. канал - не FIFO),

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

    сообщение от этого соседа. В этом случае сообщение может

    быть временно сохранено или обработано как сообщения , прибывающие

    позднее.

    Количество сообщений может быть уменьшено с помощью двух модификаций. Во-

    первых, можно устроить так, чтобы не-инициатор не посылал сообщение

    процессу, от которого он получил первое сообщение . Во-

    вторых, сообщение , посылаемое листом, может быть объединено с

    сообщением , посылаемым этим листом. С этими изменениями количество

    сообщений, требуемое алгоритмом, уменьшается до 3N-4+k, где k - количество

    нелистовых стартеров [Tel91b, с.139].

    Выбор с помощью фазового алгоритма. Фазовый алгоритм можно использовать для

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

    в Теореме 6.12.

    Теорема 7.3 С помощью фазового алгоритма (Алгоритм 6.7) можно провести

    выбор в произвольных сетях, используя O(D*|E|) сообщений и O(D) единиц

    времени.

    Алгоритм Пелега [Peleg; Pel90] основан на фазовом алгоритме; он использует

    O(D*|E|) сообщений и O(D) времени, но не требует знания D, т.к. включает в

    себя вычисление диаметра.

    Выбор с помощью алгоритма Финна. Алгоритм Финна (Алгоритм 6.9) не требует,

    чтобы диаметр сети был известен заранее. Длина O(N*|E|) сообщений,

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

    предположениями в этой главе. Следовательно, каждое сообщение в алгоритме

    Финна должно считаться за O(N) сообщений, откуда сложность сообщений

    составляет O(N2|E|).

    7.2 Кольцевые сети

    В этом разделе рассматриваются некоторые алгоритмы выбора для

    однонаправленных колец. Задача выбора в контексте кольцевых сетей была

    впервые изложена ЛеЛанном [LeLann; LeL77], который также дал решение со

    сложностью сообщений O(N2). Это решение было улучшено Чангом (Chang) и

    Робертсом (Roberts) [CR79], которые привели алгоритм с наихудшей сложностью

    O(N2), но со средней сложностью только O(N logN). Решения ЛеЛанна и Чанга-

    Робертса обсуждаются в Подразделе 7.2.1. Вопрос о существовании алгоритма с

    наихудшей сложностью O(N logN) оставался открытым до 1980 г., когда такой

    алгоритм был приведен Hirschberg и Sinclair [HS80]. В отличие от более

    ранних решений, в решении Hirschberg-Sinclair требуется, чтобы каналы были

    двунаправленными. Предполагалось, что нижняя граница для однонаправленных

    колец равна ?(N2), но Petersen [Pet82] и Dolev, Klawe и Rodeh [DKR82]

    Страницы: 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 г.
    При использовании материалов - ссылка на сайт обязательна.