logo search
кр одмита

6.4. Машины Тьюринга как модели алгоритмов

В 1937г. английский математик Тьюринг опубликовал работу, в которой он, уточняя понятие алгоритма, прибегал к воображаемой вычислительной машине.

Машина должна перерабатывать какие-то объекты в исходные результаты. Этими объектами являются слова, построенные из символов-букв.

Машина состоит из бесконечной в обе стороны ленты, разбитой на ячейки, и рабочей головки. Машина работает в дискретные моменты времени t=0,1,2… В каждый момент времени во всякой ячейке ленты записана одна буква из некоторого конечного алфавита А={а0, а1,…аn}, называемым внешним алгоритмом машины, а головка находится в одном состояний из конечного множества внутренних состояний Q={q0, q1,…,qz}. Будем считать, что а0-пустой символ, т.е. в ячейке ничего не написано.

Основной частью машины является логический блок, который работает следующим образом. В каждый момент времени рабочая головка обозревает одну ячейку ленты и в зависимости от того, что там написано и от своего внутреннего состояния она заменяет символ в обозреваемой ячейке, переходит в новой состояние и сдвигает на одну ячейку или остается на месте. Введем для обозначения этого движения символы d-1, d0, d+1 соответственно. Т.о. работа МТ задается системой команд вида:

qj*ai-qk*ax*dy

Все случаи сочетания qj и ai для разных j и j и все реакции машины на них можно представить в виде функциональной таблицы с двумя входами. Если головка в состоянии qj читаем символ ai, то в следующий момент она записывает в эту ячейку символ ax переход.. в состояние qk и в зависимости от того каково dy головка сдвигает на одну ячейку влево, вправо или остается на месте.

q1, q2

qj

qz

a0

ai

qk ax dy

an

Примеры построения машин Тьюринга

  1. Постороить машину Тьюринга, реализующую «сложение» чисел.

В машине Тюринга все числа представляются в единичном коде, состоящем из Х единиц. Поэтому сложить а и в значит переработать слова 1а * 1в в слово 1а+в. Это преобразование выполняет машина c 4-мя состояниями и системой команд вида λ

*λ d+

q1 qz

c1 λd+ λ λ d+

q2 q3

1λ d-

1 1d+ * 1 d-

q1* q2 λ d+

q11 q2 λ d+

q21 q21d+

qz* q31d-

q31 q31d-

q3 λ qz λ d+

  1. Построить машину Тьюринга, которая вычисляет функцию а(Х)=Х+1

число Х запишем в виде строки, состоящей из букв 1 (палочек)

q1

q2

a

1d0q2

-

1

1d-q1

1d0q2

При работе машины возможны два случая:

  1. работа машины после конечного числа шагов прекратили с выдачей сигнала «останов.»

  2. Машина никогда не останавливается, никакого результата она не дает.

В первом случае говорят, что машина применила к исходному данному, во втором – не применима. Соответствия устанавливаются между теми исходными данными, к которым они применимы, и результат ее работы представляет собой некоторую функцию (в математическом смысле).

Если для функции f(x) можно построить МТ, которая к ней применима, то говорят, что f(x) вычислена по Тьюрингу. Функцию, для вычисления которой существует МТ, называют вычислимой.

Тезис Тьюринга: любая вычислимая функция вычислимая по Тьюрингу, или всякий алгоритм может быть реализован машиной Тьюринга.

Проблема остановки: Можно ли построить машину То такую что для любой машины Тк любых исходных данных а для машины Т.

Ответ на этот вопрос отрицательный, т.к. сформулирована и доказана следующая теорема.

Теорема Тьюринга: не существует машины То, решающей проблему остановки для произвольной машины Т.

Неразрешимость проблемы остановки можно интерпретировать как несуществование общего алгоритма для отладки программы.