Вот реализация этого ответа на упражнение. Возможно, это поможет.
Кстати, таблица, кажется, описывает алгоритм Маркова .
Насколько я понимаю, вы начинаете с первого набора команд, j = 0. Замените все вхождения T j на s j и перейдите к следующей команде. линия в зависимости от того, что вы заменили (в этом случае перейдите к b j , если ничего не было заменено, перейдите к j ).
РЕДАКТИРОВАТЬ: Новые ответы:
A = {a, b, c} - это набор символов, с которым вы можете работать. c входит во время алгоритма (добавляется слева, а затем снова заменяется на a).
Тэта и фи могут быть некоторыми греческими персонажами, которых вы обычно используете для чего-то вроде «оригинал» и «замена», хотя я бы не знал, что это так.
b j и a j - строки таблицы, которые должны быть выполнены в следующий раз. Это соответствует удобочитаемым описаниям в последнем столбце.
Единственное, на что я не могу ответить, это почему Кнут использует эту запись без каких-либо объяснений. Я снова просмотрел первые главы и решения в книге, и он нигде не упоминал об этом.
EDIT2: пример для gdc (2,2) = 2
Input string: aabb
Line 0: Remove one a and one b, or go to 2.
=> ab => go to 1
Line 1: Add c at extreme left, go back to 0.
=> cab => go to 0
Line 0: Remove one a and one b, or go to 2.
=> c => go to 1
Line 1: Add c at extreme left, go back to 0.
=> cc => go to 0
Line 0: Remove one a and one b, or go to 2.
No ab found, so go to 2
Line 2: Change all a's to b's
No a's found, so go to 3
Line 3: Change all c's to a's
=> aa
Line 4: if b's remain, repeat
No b's found, so go to 5 (end).
=> Answer is "aa" => gdc(2,2) = 2
Кстати, я думаю, что описание к строке 1 должно быть "Удалить одну" ab "или перейти к 2". Это проясняет ситуацию.