Скачиваний:
113
Добавлен:
01.05.2014
Размер:
7.48 Mб
Скачать

Тезис Чёрча-Тьюринга.

Этот тезис в одной из формулировок выглядит следующим образом. Функция вычислимая в интуитивном смысле вычислима по Тьюрингу. Это утверждение строго математически доказать невозможно, так как невозможно строго определить понятие вычислимости в широком интуитивном смысле. Но если этот тезис ложен, существует возможность его опровержения. Для этого достаточно привести пример функции, которая допускает вычисление с помощью некоторой эффективной формализованной процедуры, но не вычисляется на машине Тьюринга. Однако все такие попытки закончились безрезультатно и можно с большей долей уверенности утверждать, что тезис Черча верен . Впервые этот тезис был сформулирован американским логиком, профессором Принстонского университета Алонзо Чёрчем (Alonzo Church).

Проблема остановки машины Тьюринга.

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

Мы уже доказали, что множество всех машин Тьюринга счетно и их можно расположить в виде единого списка так, что каждая машина Mрасположена в этом списке на некотором местеm. Введем функцию двух натуральных аргументовh(m,n) следующим образом.

{1, если машина с номером mостановится, получив на входеn единиц

h(m,n)={

{0, в противном случае.

Докажем, что функция hневычислима по Тьюрингу. Будем доказывать это от противного. Предположим, что существует машинаH, которая вычисляет функциюh. Тогда построим машину, граф которой изображен на рисунке. Сначала эта машина копирует начальный блок изn единиц и записывает его справа через ноль от текущего блока. Затем начинает работать машина H, которая оставляет на ленте одну или две единицы, в зависимости от значенияh(n,n). Машина H может закончить свою работу в одном из нескольких состояний. Все такие состояния, в которых машина H может остановиться, свяжем дугами с пометками 1:R. Противоречия в инструкциях возникнуть не может, так как мы знаем, что машинаHостановится на единице. Поэтому вершины в графе переходов соответствующие состояниям, в которых она может остановиться, не содержат дуг помеченных единицей слева от двоеточия. Допустим, что таких вершин ровно две и изобразим их на рисунке. Заключительные две вершины нашей составной машины соединены дугами так, чтобы наша большая машина остановилась, когда машинаHвыдаст одну 1 (h(n,n)=0в этом случае) и работала бесконечно долго, когда машинаHвыдаст две 1 (h(n,n)=1в этом случае).

Скопируйтеисходный блок n единицостановитесь, когда

вычислите функцию hh(n,n)=0

Машина, которую мы изобразили должна находиться на некотором месте m в списке машин Тьюринга. Подадим теперьmединиц на вход нашей машины. В соответствии с графом нашей машины она остановится, когдаh(m,m)=0. Но по определению функции hравенствоh(m,m)=0 выполняется, когда машина с номеромm работает бесконечно долго, получив на входеm единиц. Если жеh(m,m)=1, то по определению функцииhмашина остановится, а из графа переходов видно, что она будет работать бесконечно долго. Значит наше предположение о существовании машиныH, вычисляющей функциюhложно.

АБАКИ

Для моделирования и анализа процесса вычисления на компьютерах "обычного типа" Иоахимом Ламбеком было введено понятие абака. Чтобы абстрагироваться от всевозможных деталей и сделать понятие вычислимой на абаке функции наиболее общим, "обычный" компьютер будем представлять себе устроенным примитивно. Его регистры мы представляем себе как емкие пронумерованные ящики, способные вместить произвольное конечное число камней. Будем обозначать через [n] число камешков в ящике с номером n. В роли процессора действует человек, способный к выполнению двух видов операций:

1) добавить один камешек к груде камней в ящике с номером n;

2) забрать один камешек из груды камней, лежащей в ящике с номером n, если там что-нибудь есть.

Программа для такого компьютера задается граф-схемой, определяющей последовательность в которой должны выполняться эти операции. Будем использовать обозначения элементарных операций, приведенные на рисунках:

добавьте камешек к груде в Если ящик nпуст, то для продолжения работы

ящике s.сдвиньтесь по стрелкеe, если же нет, то удалите

из ящика один камешек и сдвиньтесь по

другой стрелке.

Процесс построения граф-схем иллюстрируется следующими примерами.

1. Очистить ящик с номером n.

Граф-схема. Блок-схема.

2. Перенести содержимое ящика mв ящик с номером n(гдеm¹n).

Граф-схема. Блок-схема.

3. Добавить число из ящика mв ящик nбез опустошения ящикаm.

Здесь нам понадобится изначально пустой ящик p.

Граф-схема. Блок-схема.

Прежде, чем вычислять функцию rпеременных на абаке, определимrящиков, в которых первоначально должны находится значения аргументов (представленные грудами камешков), а также ящик, в котором в конце вычисления должно появляться (также в виде груды камешков) значение функции. Будем предполагать, что значения аргументов помещаются в ящиках с номерами 1,...,rи что значение функции появляется в ящикеn. Предположим также, что в начальный момент все ящики, кроме первых,rпусты. Если абак работает бесконечно долго, то будем считать, что функция на данном наборе аргументов не определена.

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

Содержимому ящиков абака в произвольный момент времени сопоставим конфигурацию машины Тьюринга в тот же момент времени. Каждому ящику абака, в котором находится kкамней (k>0) соответствует блок изk+1 единицы на ленте. Каждому пустому ящику соответствует пустая клетка на ленте, которая содержит либо0, либо1. Символ1 на ленте соответствует пустому ящику, если на ленте правее есть хоть одна единица. В начальный момент времени первымnящикам соответствуетn блоков единиц, разделенных одиночными нулями. Остальные клетки ленты содержат нули. Таким образом, если мы в процессе движения вправо (влево) обнаруживаем на ленте два нуля подряд, то можем быть уверены, что на ленте правее (левее) нет единиц. Число единиц в блоке на ленте может расти или убывать в процессе выполнения программы по мере того, растет или убывает число камней в соответствующем ящике.

Опишем теперь первый шаг алгоритма преобразования граф-схемы абака в граф переходов эквивалентной машины Тьюринга. Каждая вершина типа

заменяется фрагментом графа переходов, который изображен на следующем рисунке.

Первые 2sвершин графа переводят машину Тьюринга из ее стандартной конфигурации, в которой она читает самую левую единицу на ленте, на ноль, расположенный сразу послеs -го блока единиц. Попутно0-представления каждого пустого ящика заменяются его1-представлением.

После вершины sb машина увеличивает число единиц в блоке на одну, сдвигается вправо и попадает в состояниеx. В этом состоянии, если считывается ноль, то это означает, что справа отs-го блока нет больше единиц и машина переходит к конфигурации, в которой считывается самая левая единица.

Если в состоянии xсчитывается единица, то это означает, что справа отs-го блока единиц есть еще блоки единиц. В этом случае машина стирает в каждом таком блоке1слева и дописывает к нему единицу справа, чтобы сдвинуть все такие блоки на одну клетку вправо.

На втором шаге каждая вершина типа

граф-схемы абака заменяются следующим фрагментом графа переходов

Этот фрагмент до вершины saсовпадает с предыдущим графом. После того, как мы достигаемs-й блок, проверяем в состоянииxсколько камней вs-ом ящике. Если камней в нем нет, то мы возвращаемся к стандартной конфигурации. Если камни есть, то мы стираем вs-ом блоке единицу справа и сдвигаем все блоки, стоящие справа отs-го блока на клетку влево. После этого также возвращаемся к стандартной конфигурации.

После выполнения первых двух шагов нашего алгоритма могут остаться холостые дуги, которые не заканчиваются ни в какой вершине. Все такие дуги на третьем шаге алгоритма мы замкнем на входной вершине графа очистки. Этот фрагмент машины Тьюринга стирает все блоки единиц кроме nблока, в котором мы договорились хранить результат вычислений и останавливает машину в стандартной конфигурации. Граф очистки дляn¹1 приведен на следующем рисунке.