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