Алгоритм Тарри

Алгоритм обхода для произвольных связных графов был дан Тарри. Алгоритм основан на следующих двух правилах.

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

2. Не-инициатор передает маркер своему предшественнику (соседу, от которого он впервые получил маркер), только если невозможна передача по другим каналам, в соответствии с правилом 1.

 

В следующем тексте используются локальные переменные сайтов:

pre – сайт, предшествующий тому, который выполняет текущий процесс, т.е. сайт, с которого пришел маркер;

used[q] – признак того, отправлен ли был маркер на сайт u.

 

var used[q]: boolean init false для всех u Î Out(this);

pre : site init udef ;

 

Для инициатора (выполняется один раз):

begin pre := this ; выбор u Î Out(this);

used[u] := true ; out token to u ;