Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






While counter < card(Out(this)) do





begin receive token; counter:= counter + 1 end;

return (OK)

end;

 

Процессы для не-инициаторов:

begin receive token from u; pre (this):= u; counter:= counter + 1;

for (u Î Out(this))&(u ¹ pre (this)) do out token to u;

While counter < card(Out(this)) do

begin receive token; counter:= counter + 1 end;

out token to pre (this)

End

 

Фазовый алгоритм

Фазовый алгоритм является децентрализованным алгоритмом для произвольных ориентированных графов. Двунаправленные связи тоже могут присутствовать, но они должны быть заданы парой параллельных встречных однонаправленных каналов (дуг графа). Алгоритм требует, чтобы процессам на сайтах был известен диаметр d графа, либо его оценка сверху.

Переменные в тексте алгоритма имеют следующий смысл.

counter_out – счетчик, подсчитывающий количество маркеров token, посланных каждому из соседей по выходу. Если таких соседей у некоторого сайта, например, три, то за каждой единицей счетчика стоит три посланных маркера – по одному на каждого соседа.

counter_in – массив счетчиков, по одному счетчику на каждого соседа по входу. Хранит количество маркеров, посланных соседями.

this – сайт, процесс которого исполняет данный алгоритм.

Out() – множество вершин, смежных по выходу.

u – некоторый сайт, передавший маркер.

Функция min, примененная к массиву, выбирает из него минимальный элемент.

 

var counter_in: array [0..d] of integer init 0;

counter_out: integer init 0;

 

Begin ifthis - инициаторthen

begin for r Î Out(this) do out token to r;

counter_out:= counter_out + 1

end;

Whilemin(counter_in) < ddo

begin receive token from u;

counter_in [u]:= counter_in [u] + 1;

If(min(counter_in) ³ counter_out) & (counter_out < d) then

begin for r Î Out(this) do out token to r;

counter_out:= counter_out + 1

End

end;

return(OK)

End

 

 

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

В фазовом алгоритме каждый процесс посылает ровно d сообщений каждому соседу по выходу. Только после того, как k сообщений было получено от каждого соседа по входу, (k + 1)-ое сообщение посылается каждому соседу по выходу.

Date: 2015-09-18; view: 359; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию