Изменения

Перейти к: навигация, поиск

Распределённый алгоритм для WCP

2652 байта добавлено, 18:25, 29 марта 2018
Новая страница: «Категория: Параллельное программирование '''Распределенный алгоритм для WCP''' – алгори…»
[[Категория: Параллельное программирование]]
'''Распределенный алгоритм для WCP''' – алгоритм для поиска наименьшего (проще говоря, самого левого) [[Срез, согласованный срез|согласованного среза]] в котором выполняется [[Слабый конъюнктивный предикат (WCP)|слабый конъюнктивный предикат]].

В распределенном алгоритме используются [[Векторные часы|векторные часы]].

В дополнение к каждому из $N$ процессов заведем еще $N$ монитор-процессов, где каждый процесс связан со своим монитор-процессом. Монитор-процессы отправляют друг другу так называемый ''токен'' (его описание ниже) и получают вектор часов от соответствующих процессов.

Токен состоит из двух векторов. Первый назовем $G$. $G[i] = k$ означает, что состояние $k$ $i$-го процесса входит в срез-кандидат. Важно, что этот срез может не быть согласованным, но все состояния в нем удовлетворяют локальным предикатам. $G$ инициализируется нулями.

Второй вектор назовем color, где color[i] обозначает цвет состояния среза-кандидата для $i$-го процесса. Цвет состояния может быть красным или зеленым. Если color[i] равен красному, то состояние $(i, G [i])$ и все его предшествующие состояния уже красные и никогда не смогут удовлетворить $WCP$. Если color [i] зеленый, то нет такого состояния в $G$, что $(i, G[i])$ предшествует ему. $color$ инициализируется красными.

Работа $i$-го монитор-процесса описана следующим псевдокодом. Гарантируется: когда переменная $detect = true$, мы получим искомый срез.
=== Псевдокод ===

[[Файл:https://pp.userapi.com/c846120/v846120267/1099b/Y98QwD2teI0.jpg]]
64
правки

Навигация