Алгоритм обхода для произвольных связных графов был дан Тарри. Алгоритм основан на следующих двух правилах.
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 ;