Кодирование и нумерация машин Тьюринга.
Зафиксируем счетные множества символов {a0,a1,…,ai,…} и {q0,q1,…,qj,…}, и будем считать, что внешние алфавиты и алфавиты внутренних состояний всех машин Тьюринга берутся из этих множеств. Причем будем считать, что буква a0 принадлежит всем внешним алфавитам машин и интерпретируется как пустой символ, а буквы q0 и q1 содержатся во всех алфавитах внутренних состояний всех машин и всегда означают заключительное и начальное состояние. Опишем теперь единый способ представления информации о машинах с помощью кодирования. Каждому символу из множества {L,R,E,a0,a1,…,ai,…,q0,q1,…,qj,…}, поставим в соответствие двоичный набор согласно таблице
Символ | Код | Число нулей в коде | |
Символы сдвига | R L E | 10 100 1000 | 1 2 3 |
Символы алфавита ленты | a0 a1 ... ai ... | 10000 1000000 ... 10 … 0 ... | 4 6 ... 2i + 4 ... |
Символы алфавита состояний | q0 q1 ... qj ... | 100000 10000000 ... 10 … 0 ... | 5 7 ... 2j + 5 ... |
Далее команде I машины Т вида qa ® q¢a¢d ставится в соответствие
Код (I) = Код(q) Код(a) Код(q¢) Код(a¢) Код(d),
представляющее собой приписывание кодов символов друг к другу. Пусть машина Т имеет алфавиты А = {a0,a1,…,am} и Q = {q0,q1,…,qn}. Упорядочим пары qiaj лексикографически q1a0, q1a1,…, q1am, q2a0,…, qna0,…, qnam. В соответствии с этим упорядочим команды машины Т
I1, I2, … , In(m+1) .
Машине Т поставим в соответствие код
Код(Т) = Код(I1) Код(I2) … Код(In(m+1)),
получаемый приписыванием друг к другу кодов команд. Для машины Т рассмотренного примера (1.3) кодом будет
Код (Т) = 10710310510610310710610710610.
Ясно, что по коду команды и коду машины команда и машина восстанавливаются однозначно. Более того, этот процесс перехода от машины к ее коду и обратно алгоритмический. Далее, код (Т) есть слово из нулей и единиц, и поэтому его можно рассматривать как двоичную запись натурального числа. Данное число называется номером машины Т. Поскольку все коды начинаются с единицы, то разным кодам соответствуют разные числа. Упорядочим машины Тьюринга по возрастанию их номеров и получим нумерацию машин Тьюринга
Т0, T1, T2, … , Tn, …
Поскольку кодирование эффективно, то существует машина Тьюринга, которая по натуральному числу n выдает Код(Тn) (если такая существует) и обратно, по Код(Tn) выдает ее номер nT. Пусть fn(x) - функция, вычисляемая машиной Тn. Тогда получаем нумерацию всех вычислимых по Тьюрингу функций одного переменного
f0(x), f1(x), … fn(x), …
Нетрудно показать, что всякая вычислимая по Тьюрингу функция встречается в этом списке бесконечное число раз.
Дата добавления: 2014-12-02; просмотров: 2574;