
- •Вопросы для подготовки к экзамену
- •Интуитивное определение алгоритма и вычислимой функции
- •Частично и примитивно рекурсивные функции
- •Вычислимость рекурсивных функций. Тезис Черча
- •Определение оператора подстановки, примеры применения
- •Определение оператора примитивной рекурсии, примеры применения
- •Определение оператора минимизации, примеры применения
- •Построение одноместных рекурсивных функций
- •Построение двухместных рекурсивных функций
- •Машины Тьюринга. Команды в виде четверок и в виде пятерок
- •Функции, вычислимые по Тьюрингу. Тезис Тьюринга
- •Одноместные функции, вычислимые по Тьюрингу
- •Двухместные функции, вычислимые по Тьюрингу
- •Машины с неограниченными регистрами
- •Нормальные алгоритмы Маркова
- •Машины Поста. Функции, вычислимые по Посту
- •Нумерация множества упорядоченных пар натуральных чисел
- •Нумерация машин Тьюринга и вычислимых функций
- •Существование функции, невычислимой по Тьюрингу
- •Разрешимые отношения: определение и примеры
- •Свойства дополнения, объединения и пересечения разрешимых функций
- •Неразрешимость проблемы остановки
- •Универсальные функции
- •Теорема о параметризации
- •Меры сложности алгоритмов
-
Нумерация машин Тьюринга и вычислимых функций
Рассмотрим все машины Тьюринга, у которых: 0, 1 – внешние символы, l, r, n – символы, обозначающие движение, q0, q1, q2, … – символы, обозначающие внутренние состояния. Каждая машина Тьюринга однозначно определяется программой, состоящей из 2s команд – пятерок вида aiqjakmql, где ai{0,1}, qj{q1,…,qs}, m{l,r,n}, ak{0,1}, ql{q0,q1,…,qs}.
Некоторые из троек akmql могут быть заменены тройкой . В командах двойки aiqj и тройки akmql, отличные от тройки , не должны повторяться.
Программа машины Тьюринга записывается в виде таблицы:
|
q1 |
q2 |
… |
qs |
1 |
a11m11q11 |
a12m12q12 |
|
a1sm1sq1s |
0 |
a21m21q21 |
a22m22q22 |
|
a2sm2sq2s |
Программу машины Тьюринга представим в виде следующей последовательности:
1q1a11m11q110q1a21m21q211q2a12m12q120q2a22m22q22…1qsa1sm1sq1s0qsa2sm2sq2s.
Каждому символу из множества A{0,1,l,r,n,,q0,q1,q2,…} присвоим номер:
Символ |
q0 |
q1 |
… |
qs |
… |
0 |
1 |
l |
r |
n |
|
Номер |
90 |
91 |
|
9s8 |
|
980 |
981 |
982 |
983 |
984 |
985 |
Выражение s8 – это число s, написанное в 8-ичной записи. Каждому слову в алфавите A присваивается номер по следующему правилу: если символы b1, b2, …, bt имеют номера u1, u2, …, ut, то слову b1b2…bt присваивается номер u1u2…ut.
Пример. Найти номер машины Тьюринга, вычисляющей функцию f(x)1.
|
q1 |
q2 |
1 |
0rq1 |
|
0 |
1rq2 |
1rq0 |
Решение. Записываем программу машины Тьюринга в виде слова в алфавите A: 1q10rq10q11rq21q20q21rq0. Каждый символ этого слова заменим соответствующим числом – номером: 981919809839198091981983909819298598598598092981.
Таким образом, каждой машине Тьюринга можно однозначно присвоить некоторый номер i, и машину с этим номером мы обозначим Ti. Нумерацией множества M называется отображение f множества M в N. Если f является также отображением M на все множество N, то f называется нумерацией без пробелов. Отметим, что если M – множество машин Тьюринга, f:MN – нумерация, TM, f(T)i, iN, то T обозначается через Ti.
Построенная нами нумерация машин Тьюринга является нумерацией с пробелами (но является взаимно однозначным отображением). Чтобы получить нумерацию без пробелов, для числа i, не ставшего номером никакой машины, будем считать, что Ti вычисляет нигде не определенную функцию.
Напомним, что через x обозначается слово, состоящее из x1 единиц.
Определим n-местную функцию i ,n0, следующим образом:
i(x1,…,xn)y, если машина Ti при работе с начальной конфигурацией q1x10…0xn останавливается с заключительной конфигурацией q0y,
i(x1,…,xn) не определено, если машина Ti при работе с начальной конфигурацией q1x10…0x не останавливается или останавливается не в заключительном состоянии i.