Общий вход: Граф . Пусть
и
.
Дополнительный вход доказывающего: Гамильтонов цикл графа .
1) Первый шаг доказывающего. Доказывающий шифрует граф с помощью ящиков. Для этого он наугад инъективно отображает
маркированных вершин в
маркированных ящиков
,
, ...,
таким образом, что каждая из
перестановок вершин в ящики равновероятна. Для каждой пары ящиков
подготавливает ящик
. Этот ящик должен содержать
, если вершина, содержащаяся в ящике
, смежна с вершиной, содержащейся в ящике
, и 0 в противном случае. Затем все
ящиков запирает и отправляет проверяющему.
2) Первый шаг проверяющего. Проверяющий получает
маркированных ящиков. Теперь ему предоставлен выбор:
(1) Если он пожелает, доказывающий откроет все ящики. В этом случае проверяющий может проверить, что ящики содержат описание графа . (Например, если вершина
смежна с вершиной
и с вершиной
, но но не смежна ни с какими другими вершинами графа
, и вершина
содержится в ящике
,
вершина в ящике
,
вершина в ящике
, то
должна содержаться в ящиках
и
, и 0 в ящике
для любого другого значения
).
(2) С другой стороны, если проверяющий пожелает, доказывающий откроет в точности ящиков
,
,
, ...,
, которые содержат гамильтонов цикл графа
, и показать, что они все содержат
. Это доказывает существование гамильтонова цикла (в любом графе, представленном в ящиках). Так как
не открыты, последовательность вершин, определяющих гамильтонов цикл в графе
не раскрывается.
Проверяющий наугад выбирает один из этих 2 вариантов (граф или гамильтонов цикл), и таким образом, оба варианта равновероятны.
3) Второй шаг доказывающего. Доказывающий открывает соответствующие ящики.
Шаги 1)-3) повторяются раз.
4) Заключительный шаг проверяющего. Проверяющий принимает доказательство, если доказывающий выполняет и в каждом случае правильно демонстрирует либо запрашиваемый граф , либо запрашиваемый гамильтонов цикл. В противном случае, отвергает.