М. Нильсен, И. Чанг - Квантовые вычисления и квантовая информация (1156771), страница 43
Текст из файла (страница 43)
Главное отличие между двухленточной и стандартной машинами Тьюринга состоит в формате их программных строк. Программные строки двухленточной машины имеют вид (д, хм хз, д', х'„хз, вм вз); это означает еле вующее: если внутреннее состояние есть о, первая головка находится над символом зм а вторая головка— 3.1. Вычислительные модели 171 нзд символом хю то внутреннее состояние машины переходит в д', на место х1 записывается з(, на место хз записывается хз и головки сдвигаются в соответствии со значениями чисел з1 и зз (эти значения могут быть равны +1, -1 или О).
В каком смысле можно утверждать, что стандартная и двухленточная машины Тьюринга представляют собой эквиванентные вычислительные модели? Эти вычислительные модели эквивалентны в том смысле, что каждая из них может моделировать другую. Предположим, что у нас есть двухленточная машина Тьюринга, на вход которой подаются битовая строка х на первую ленту и пробелы в остальные ячейки на обе ленты (как обычно, в начале лент записан символ ~»). Эта машина вычисляет функцию Дз); по определению, у(х)— содержимое первой ленты после того, как машина завершила работу.
Замечательно то, что для любой двухленточной машины Тьюринга, вычисляющей данную функцию 1, существует эквивалентная ей одноленточная машина Тьюринга, вычисляющая ту же функцию у. Мы не будем объяснять как построить такую одноленточную машину, но основная идея состоит в том, что одно- ленточная машина Тьюринга моделирует двухленточную машину, используя свою единственную ленту для хранения содержимого обеих лент двухленточной машины. Для такого моделирования нужно производить дополнительные вычислительные операции, но существенно здесь то, что в принципе так сделать можно. На самом деле существует универсальная машина Тьюринга (см.
вставку 3.1), которая может моделировать любую другую машину Тьюрингап Другой интересный вариант машины Тьюринга получается, если в модель ввести элемент случайности. Предположим, например, что машина Тьюринга может выполнять программную строку, вызывающую следующие действия: если внутреннее состояние есть д, а головка «видит» символ х, то производится бросание монеты. Если выпадает орел, то внутреннее состояние меняется на цен, а если решка, то на В„, где о,н и д,т — некоторые состояния машины Тьюринга.
Такую программную строку можно записать в виде (д, х, цен,д; ). Однако даже эта модель по существу не меняет возможностей машины Тьюринга. Нетрудно видеть, что мы можем моделировать такой алгоритм на детерминированной машине Тьюринга, перебирая все возможные последовательности вычислений, соответствующие различным результатам бросания монеты. Разумеется, такое детерминированное моделирование может быть гораздо менее эффективно, но для нашего обсуждения существенно то, что класс вычислимых функций не увеличится, если ввести в вычислительную модель элемент случайности. Упражнение З.З (обращение битовой строки с помощью машины Тьюринга).
Опишите машину Тьюринга, которая получает на вход двоичное число з и выдает биты числа х в обратном порядке. (Указание: Это и следующее упражнение вам легче выполнить, используя многоленточную машину Тьюринга и/или символы, отличные от нуля, единицы, ~» и пробела.) в уннверсаяьная машина Тьюринга, описанная во вставке 3.1, не имеет прямого отношения к моделированию двухяенточных машин однояеиточными — Прим, ред. 172 Глава 3. Введение в информатику Вставка 3.1. 'Универсальная машина Тьюринга Мы описывали машины Тьюринга, состоящие из трех элементов, которые могли меняться от машины к машине: начальная запись на ленте, внутренние состояния управляющего устройства и программа. Остроумная конструкция, известная под названием универсальной машины Тьюринга (УМТ) позволяет зафиксировать программу и состояния управляющего устройства, а варьировать только начальную запись на ленте.
Универсальная машина Тьюринга (см. рисунок ниже) обладает следующим свойством. Пусть М вЂ” произвольная машина Тьюринга, и пусть Тм — тьюрингов номер, соответствующий машине М. Тогда, получив на вход двоичное представление числа Тм, за которым следует пробел, а затем — произвольная символьная строка х, на выходе универсальная машина Тьюринга даст то же, что получилось бы на выходе у машины Тьюринга М, на вход которой подали строку х.
Таким образом универсальная машина Тьюринга может моделировать любую другую машину Тьюринга! мчи«лелле Универсальная машина Тьюринга подобна современному компъютеру, в котором действия, которые он должен совершить, — «программ໠— записаны в память аналогично тому, как битовая строка Тм записана в начале ленты универсальной машины Тьюринга. Данные, которые программа должна обрабатывать, записаны в памяти в отдельном месте (как х в универсальной машине Тьюринга).
Для запуска программы используются некоторые аппаратные средства (всегда одни и те же). Эти аппаратные средства аналогичны внутренним состояниям и всегда одной и той же программе, выполняемой универсальной машиной Тьюринга. Подробное описание построения универсальной машины Тьюринга выходит за рамки этой книги (хотя трудолюбивый читатель может попытаться ее построить). Ключевым моментом является само существование такой машины, с помощью которой можно выполнить любой алгоритм. Факт существования универсальной машины Тьюринга объясняет также сделанное нами ранее утверждение о том, что количество внутренних состояний машины Тьюринга не очень существенно: если только это число превышает количество состояний, нужное универсальной машине Тьюринга, с помощью универсальной машины можно смоделировать машину Тьюринга с любым числом внутренних состояний.
3.1. Вычислительные модели 173 Вставка 3.2. Проблема остановки В упражнении 3.2 вы видели, что с любой машиной Тьюринга можно единственным образом связать целое положительное число. Чтобы решить проблему Гильберта, Тьюриыг использовал эту ыумерацию для постановки проблемы осоюновки: остановится ли машина Тьюринга номер х, на вход которой подано число у? Это корректно поставленная и интересная математическая задача. Нам же интересно, заканчивается ли работа наших программ.
Тем не менее оказывается, что алгоритма, решающего проблему остановки, не существует. Чтобы доказать зто, Тьюринг задался вопросом, существует ли алгоритм, решающий хотя бы более частную задачу: остановится ли машина Тьюринга номер х, на вход которой подано то же самое число х? Тьюринг определил функцию остпановки ( О, если машина с номером х не останавливается на входе х Ь(х) ш ~ 1 1, если машина с номером х останавливается на входе х Если существует алгоритм, решающий проблему остановки, то, разумеется, существует и алгоритм, вычисляющий Ь(х). Мы предположим, что такой алгоритм (обозначим его НА1 Т(х)) существует, и выведем отсюда противоречие. Рассмотрим алгоритм, вычисляющий функцию ТБИР(х), с псевдокодом ТВИН С(х) у= НА! Т(х) !Е у=О !Ьеп Ьа1! е!ае 1оор !огечег епб !! Поскольку НА1Т вЂ” это корректная программа, Т!)ИНС также является корректной программой с некоторым тьюринговым номером 8.
По определению, функция остановки Ь(С) = 1 тогда и только тогда, когда ТПИНС останавливается при подаче на вход !. Однако же, посмотрев на программу ТБИМС, мы видим, что ТйИХС останавливается при подаче на вход числа 8 тогда и только тогда, когда Ь(Ф) = О. Таким образом, Ь($) = 1 тогда и только тогда, когда Ь(г) = Π— противоречие. Следовательно, наше предположение, что существует алгоритм, вычисляющий Ь(х), было ошибочным. Отсюда заключаем, что не существует алгоритма, решающего проблему остановки. Упражнение 3.4 (сложение по модулю 2 на машине Тьюринга).
Опишите машину Тьюринга, которая выполняет сложение двоичных чисел х и у по модулю 2. Числа подаются ыа вход в таком виде: х в двоичной системе, потом один пробел, а затем у в двоичной системе. Если одно число короче другого, 174 Глава 3. Введение в информатику считайте, что оно дополнено нулями слева в таком количестве, чтобы записи этих чисел имели одинаковую длину. Вернемся к гильбертовской проблеме разрешения (ЕпсвсЬеЫппйвргоЫеш), вдохновлявшей основателей теории алгоритмов.
Существует ли алгоритм, решающий все математические задачи? Черч и Тьюринг показали, что ответ на этот вопрос отрицателен. Во вставке 3.2 мы объясним принадлежащее Тьюрингу доказательство этого замечательного факта. Теперь известно, что явление неравреппьмоспьп возникает и далеко за пределами примеров, построенных Черчем и Тьюрингом. Например, известно, что неразрешима проблема, будут ли два данные топологические пространства топологически эквивалентны (егомеоморфныь)з. Существуют простые задачи, связанные с поведением динамических систем, которые также являются неразрешимыми (вы это увидите в задаче 3.4).
Ссылки по поводу этих и других примеров даны в конце главы в разделе «История и дополнительная литератураж Неразрешимость помимо того, что сама представляет интерес, указывает на тематику, важную для информатики, а также для квантовых вычислений и квантовой теории информации: различие между легко решаемыми и труднорешаемыми задачами. Неразрешимость дает крайний пример труднорешаемых задач — настолько трудно, что решить их и совсем невозможно.
Упражнение 3.5 (проблема остановки без входных данных). Покажите, что не существует алгоритма, позволяющего выяснить, остановится ли данная машина Тьюринга М, если на ее входе будут одни пробелы. Упражнение 3.6 (вероятностная проблема остановки). Пусть мы пронумеровали вероятностные машины Тьюринга аналогично тому, как были пронумерованы стандартные машины Тьюринга в упражнении 3.2, и определили вероятностную функцию остановки Ьр(х) как функцию, принимающую значение 1, если машина номер х останавливается при подаче з на вход с вероятностью, не меньшей 1/2, и принимающую значение 0 с вероятностью, меньшей 1/2.
Покажите, что не существует вероятноспюй машины Тьюринга, которая для всех з выдает значение Ьр(з) с вероятиостью, строго большей 1/2. Упражнение 3.7 (проблема остановки с оракулом). Пусть у нас появился доступ к черному ящику, принимающему на вход целое неотрицательное число з и выдающему на выходе Й(х), где Ь( ) — функция остановки, определенная во вставке 3.2. Черный ящик такого типа иногда называется оракулом для проблемы остановки. Нредположим, что у нас есть стандартная машина Тьюринга, дополненная возможностью обращаться к оракулу. Один из способов реализовать это — воспользоваться двухленточной машиной Тьюринга и иметь возможность пользоваться программными строками, в которых вызывается оракул, а на второй ленте печатается Ь(х), где х — текущее содержимое второй ленты. Ясно, что эта вычислительная модель является более эффективной, чем стандартная машина Тьюринга, поскольку с ее помощью можно з Чтобы зто утверждение имело смысл, надо считать, что речь идет не о произвольных топологичесхих пространствах, но о миогообрезивх.