Россия, Москва, МЭИ, 2006 |
Теория вычислений и машины Тьюринга
3.2. Машины Тьюринга и вычислимые функции
Приведенных в предыдущем разделе данных достаточно для перехода к общему описанию
Работу с рабочим алфавитом
и состояниями
можно представить таблицей машины
, которая представляет собой матрицу с 4 столбцами и
строками. Строка матрицы с номером
имеет вид:
, где действие
,
а
- следующее состояние. Индексы элементов строки матрицы
в ряде случаев можно опускать, и тогда описание строки принимает вид
, где действие
может представлять собой подстановку символа
вида
,
при этом
, сдвиг вправо на одну ячейку
, сдвиг влево на одну ячейку, если рабочая ячейка не совпадает с нулевой
. Если рабочая ячейка совпадает с нулевой и
, то требуемое действие невыполнимо и
останавливается
, что вызвано ее выходом за пределы ленты. Машинный останов
может быть и запланированным. Считается также, что пара
однозначно идентифицирует единственную строку матрицы
. В нашем примере матрица
имеет вид:

Строки таблицы с одинаковыми
соответствуют некоторому указанию в смысле требования 1, и наоборот, состояниям
отвечают номера указаний в соответствующем алгоритмическом предписании.
Таблицу 3.1,задающую правила подстановки символов при арифметическом сложении, также можно представить в виде таблицы машины Тьюринга (табл. 3.2), если пару считать одним символом, а
, и
.
В принятых соглашениях запись на ленте или просто запись является функцией на
со значениями в
, которая каждому
ставит в соответствие букву, являющуюся содержимым
-й ячейки ленты. При этом неравенство
выполняется только для конечного числа индексов
.
Согласно требованию 1 общий итог выполненных вычислений однозначно определяется конфигурацией , которая задается тройкой
, где
- номер текущей рабочей ячейки,
- текущая запись и
- текущее состояние
. Конфигурации обычно обозначают
, …, а начальной конфигурации отвечает та, у которой третья компонента есть
.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
---|---|---|---|---|---|---|---|---|---|---|---|
![]() |
0,0 | 0 | ![]() |
. | . | . | . | ![]() |
3,3 | 6 | ![]() |
![]() |
0,1 | 1 | ![]() |
![]() |
1,9 | 1 | ![]() |
![]() |
3,4 | 7 | ![]() |
![]() |
2,2 | 4 | ![]() |
||||||||
![]() |
0,9 | 9 | ![]() |
![]() |
2,3 | 5 | ![]() |
![]() |
3,9 | 2 | ![]() |
![]() |
0,0 | 1 | ![]() |
||||||||
![]() |
0,1 | 2 | ![]() |
![]() |
2,5 | 7 | ![]() |
![]() |
3,3 | 7 | ![]() |
![]() |
3,4 | 8 | ![]() |
||||||||
![]() |
0,9 | 0 | ![]() |
![]() |
2,9 | 1 | ![]() |
![]() |
![]() |
||
![]() |
1,1 | 2 | ![]() |
![]() |
2,2 | 5 | ![]() |
![]() |
3,9 | 3 | ![]() |
![]() |
1,2 | 3 | ![]() |
![]() |
2,3 | 6 | ![]() |
![]() |
![]() |
||
2,4 | 7 | ||||||||||
![]() |
1,9 | 0 | ![]() |
![]() |
2,5 | 8 | ![]() |
![]() |
7,7 | 4 | ![]() |
![]() |
1,1 | 3 | ![]() |
![]() |
![]() |
![]() |
7,8 | 5 | ![]() |
||
![]() |
1,2 | 4 | ![]() |
![]() |
2,9 | 2 | ![]() |
![]() |
![]() |
Пусть - некоторая конфигурация
. Если
есть некоторая строка таблицы
, начинающаяся символами
, и если
и одновременно не выполняются равенства
и
, то выполнение действия
приводит к новой рабочей ячейке с номером
(при этом не исключается
) и к новой записи
(при этом не исключается
) и
переходит в состояние
. В этом случае однозначно определенную конфигурацию
называют следующей за
В противном случае (
или одновременно
и
) говорят, что
является конечной конфигурацией для
.
Говорят, что применима к записи
в рабочей ячейке
, если в качестве начальной конфигурации выбрана конфигурация
.
Конфигурация однозначным образом порождает конечную или бес-конечную последовательность конфигураций
, в которой
есть конфигурация, следующая за
, и для которой
есть последний член в том и только в том случае, когда
является конечной конфигурацией. Так как
работает в пошаговом режиме, между номером шага и номером конфигурации существует взаимно однозначное соответствие. Поэтому машина
останавливается через конечное число шагов после применения к записи
в рабочей ячейке
, если последовательность конфигураций, порожденная
, имеет последний член. Если для анализа вычислений после-довательность состояний
не представляет интереса, то сам вычислительный процесс можно описать двойками
, которые каждой конфигурации
сопоставляют ее позицию, то есть последовательности конфигураций всегда соответствует последовательность позиций, к которым применимы термины "начальная" и "конечная".
Пусть есть некоторая конфигурация и
для всех
. Тогда для наглядного изображения
и отвечающей ей позиции можно использовать:
. и
Безразличные для анализа участки записи будем обозначать символом , а если речь идет о содержимом одной ячейки, то символом
Это позволяет для записи позиций использовать следующие упрощения.
- Выделить только интересующие позиции типа:
- Обозначить специальным символом
значимый левый (правый) край ленты типа:
- Исключить повторяющийся символ правее определенного:
Пусть и
возможные позиции для
. Тогда запись вида
означает:
начала свою работу в начальной позиции
и (после конечного числа шагов) остановилась в конечной позиции
. Например:
.
Применить к записи после слова
или после
-членной последовательности слов
над
означает взять в качестве начальной позицию:
, и соответственно
.
Применить к записи перед словом
или перед
-членной последовательностью слов
над
означает взять в качестве начальной позицию:
, и соответственно
. Применить
к пустой ленте означает взять в качестве начальной позицию
Говорят, что остановилась после (перед) словом
, если
применялась к начальной записи
в начальной ячейке
и
,
. При этом в конечной позиции после символа
нельзя сказать ничего определенного.
Если в результате применения к записи
в рабочей ячейке
остановилась после слова
над
, то последняя рабочая ячейка не может быть нулевой, даже если
, так как фактически произошел машинный останов
.
Для строгого определения вычислимых по Тьюрингу функций используется экстенсиональная точка зрения, которая исходит из следующего:
- Две функции равны, если совпадают их области определения и если их значения во всех общих точках определения равны.
- Два алгоритма
и
экстенсионально равны (равны по конечному эффекту), если равны вычисляемые ими функции
.
Функцию называют функцией из
в
, если область определения
содержится в
, а множество образов при ото-бражении
, содержится в
. В предельном случае
, и тогда
называют функцией на
со значениями в
. В общем случае
, и тогда
называют частичной функцией на
со значениями в
.
Алгоритм определяет функцию
из
в
, если выполнены следующие условия:
- Функция
определена для
в том и только в том случае, когда применение
к
приводит к некоторому результату, который и является значением
от
.
- Функция
обладает тем свойством, что для всех
значение
можно вычислить, исполнив предписание
.
Отсюда, функция из
в
называется вычислимой тогда и только тогда, когда существует алгоритм
, для которого
. В этом случае
называют вычислительной процедурой для
.
В терминах МТ те же определения имеют следующий вид. Пусть есть МТ с рабочим алфавитом
, таким, что
. Тогда
определяет некоторую
-местную функцию
из
в
по следующему правилу:
принадлежит области
тогда и только тогда, когда
, примененная к записи
, останавливается после слова из
, а это слово является значением
от
.
Таким образом, для имеем:

когда , и наоборот, если
, то
, примененная к записи
, не останавливается после слова из
.
Приведенных данных достаточно для определения 3.1: функция из
в
называется вычислимой по Тьюрингу ( ФВТ ), если существует МТ с рабочим алфавитом
, содержащим
и
, такая, что
-местная функция из
в
, определяемая машиной
, совпадает с
.
О любой такой МТ говорят, что она вычисляет .
Из приведенного определения следует, если есть ФВТ из
в
и
есть МТ, вычисляющая
, то, применив
к
, можно получить следующие результаты: либо
не остановится вовсе, либо
уйдет за пределы ленты, либо произойдет машинный останов
. Если в последнем случае
остановилась после слова
, то
и
. Во всех остальных случаях
Введенное описание применения к аргументу ФВТ, вычисляемой
, и нахождение значения функции способом, указанным в определении 3.1, вместе образуют общее предписание для всех алгоритмов. Это позволяет говорить, что функция, вычислимая по Тьюрингу ( ФВТ ), является адекватной формализацией интуитивного понятия "вычислимая функция".