Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Млита / МУ к лаб.раб.№4 по МЛиТА(Машина Тьюринга).docx
Скачиваний:
84
Добавлен:
12.03.2015
Размер:
209.88 Кб
Скачать

2. Операции над машинами Тьюринга.

Пусть машины и имеют соответственно программыи. Предположим, что внутренние алфавиты этих машин не пересекаются и что— некоторое заключительное состояние машины, a — какое-либо начальное состояние машиныЗаменим всюду в программесостояниена состояниеи полученную программу объединим с программой. Новая программа П определяет машинуT, назы­ваемую композицией машин и (по паре состояний) и обозначаемую черезилиболее подробно:- Внешний алфавит композиции является объединением внешних алфавитов машин и .

Пусть q' — некоторое заключительное состояние машины Г, а q" — какое-либо состояние машины T, не являющееся заключитель­ным. Заменим всюду в программе П машины T символ q' на q". Получим программу П', определяющую машину T'(q', q"). Маши­на T' называется итерацией машины T (по паре состояний

Пусть машины Тьюринга , и задаются программами,исоответственно. Считаем, что внутренние алфавиты этих ма­шин попарно не пересекаются. Пустьи— какие-либо различные заключительные состояния машины. Заменим всюду в програм­ме состояниенекоторым начальным состояниеммашины, а состояние некоторым начальным состояниеммашины. Затем новую программу объединим с программамии. Получим программу П, задающую машину Тьюринга. Эта машина называется разветвлением машин и ,управляемым машиной .

При задании сложных машин Тьюринга часто применяют так называемую операторную запись алгоритма, которая представляет собой строку, состоящую из символов, обозначающих машины, сим­волов перехода (вида и ), а также символов α и ω, служащих для обозначения соответственно начала и окончания работы алгоритма. В операторной записи (некоторого алгоритма) выраже­ние ,обозначает разветвление машин и , управляемое машиной, причем заключительное состояниема­шинызаменяется начальным состояниеммашины, а всякое другое заключительное состояние машинызаменяется начальным состоянием машины(одним и тем же). Если машинаимеет одно заключительное состояние, то символы и служат для обозначения безусловного перехода. Там, где не могут возникнуть недоразумения, символыиопускаются.

Пример 3. Операторная схема

описывает следующий «процесс вычисления». Начинает работу ма­шина . Если она заканчивает работу в состоянии, то начинает работать машина, а по окончании работы машинывновь «вы­полняет работу» машина. Если же машинаостанавливается в некотором заключительном состоянии, отличном отто «работу продолжает» машинаЕслиприходит в заключительное состо­яние, то начинает работу машина; если жезаканчивает ра­боту в некотором заключительном состоянии, отличном от, то «работу продолжает» машина. Если машинакогда-либо оста­новится, то процесс вычисления на этом заканчивается.

3. Вычислимые функции.

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

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

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

а) если определено, то

б) если не определено, то либоне является кодом никакого числа изN. либо машина не применима к слову.

Замечание. В дальнейшем предполагаем, что в начальный момент головка машины обозревает самую левую единицу сло­ва . Известно, что это ограничение не сужает класса вычис­лимых функций.

Если функция вычислима по Тьюрингу с помощью машины, то будем говорить, чтомашина вычисляет функцию .

Говорят, что машина Тьюринга Т правильно вычисляет функ­цию , если:

а) в случае, когда определено, машинаТ, начав работу с левой единицы кода , останавливается, и головка машины в заключительной конфигурации обозревает левую единицу кодаk(f(an));

б) в случае, когда не определено, машинаТ, начав работу с левой единицы кода , не останавливается.

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

Расстояние между двумя ячейками С и С' ленты равно уве­личенному на единицу числу ячеек, расположенных между С и С'. В частности, соседние ячейки ленты находятся друг от друга на расстоянии 1. Пусть l — целое положительное число. Подмножество всех таких ячеек ленты, каждые две из которых расположены друг от друга на расстоянии, кратном l, называется решеткой с шагом l. Ленту можно рассматривать как объединение l решеток с шагом l. Пусть — решетка с шагомl. Две ячейки этой решетки назы­ваются соседними, если расстояние между ними, рассматриваемое относительно всей ленты, равно l.

Говорят, что слово записано на решетке ,если:

символ записан в некоторой ячейкеэтой решетки;

символ записан в ячейке, которая является соседней кна решеткеи расположена справа от нее и т.д.;

символ записан в ячейке, отстоящей от ячейки на расстояниеи расположенной справа от.

Будем говорить, что машина Тьюринга моделирует машину Тьюринга Т на решетке (с шагомl), если, каково бы ни было слово Р (в алфавите А), выполняется следующее условие: пусть на решетке записано словоР и в начальный момент головка маши­ны обозревает самую левую букву словаР; машина останав­ливается тогда и только тогда, когда машинаТ применима к сло­ву Р; при этом, если Т(Р) определено, то после окончания работы машины на решеткебудет записано словоТ(Р).

Справедливо следующее утверждение: для каждой машины Тью­ринга Т и каждой решетки с шагомl можно построить машину Тьюринга , моделирующую машину Тьюринга Т на региетпке

Пусть — произвольный набор це­лых неотрицательных чисел; l-кратным кодом этого набора назы­вается слово в алфавите {0, 1}, имеющее вид .

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

Решетчатым кодом набора назы­вается слово в алфавите {0, 1}, записанное на п решетках с шагом п, причем так, что на первой решетке записано слово , на второй — словои т.д., наn-й — слово ; начала слов на решетках должны бытьсогласованы, т. е. самая левая единица на первой решет­ке непосредственно предшествует (на всей ленте) самой левой единице на второй решетке, а эта единица непосредственно предшествует самой левой единице на третьей решетке и т. д.

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

Пример 4. Для функции построить машину Тью­ринга, вычисляющую ее, а также машину Тьюринга, правильно вы­числяющую эту функцию.

Замечание. Здесь и в дальнейшем при «аналитическом» зада­нии числовых функций используются известные (из математического анализа) «элементарные» функции. При этом «аналитически» задан­ная функция считается определенной только на таких целочислен­ных наборах значений переменных (принадлежащих множеству N — натуральному ряду с нулем), на которых определены и принимают целые неотрицательные значения все «элементарные» функции, вхо­дящие в рассматриваемое «формульное задание» определяемой функции. Например, функция определена лишь тогда, когда— целое неотрицательное число, — целое положительное число и — целое неотрицательное число.

Решение примера 4. Имеем

Нужно построить такую машину Тьюринга Т, которая «перера­батывает» любое слово в словои удовлетворяет условию: либоТ(1) не определено, либо Т(1) не является основным машинным кодом никакого числа из N.

Попытаемся реализовать следующую идею: стирая самую левую единицу в слове и проходя оставшееся подсловослева направо, головка пропускает еще одну (пустую) ячейку («раз­делительный нуль») и печатает две единицы подряд; получается слово; затем головка возвращается к левой единице подслова(если такая единица есть), вычеркивает ее, проходит новое подсло­вослева направо, потом проходит «разделительный нуль» и две ранее напечатанные единицы (справа от него), печатает еще две еди­ницы и опять возвращается к началу «остатка» исходного словаи т.д.; когда в исходном слове все единицы будут вычеркнуты, а во «вновь формируемом» массиве все единицы будут напечатаны, то на ленте «останется» массив изединиц; вычеркнем в нем две первые единицы и «процесс вычисления» закончим.

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

Имеем и(пустое слово). Значит, машинаТ действительно вычисляет заданную функцию , но не является машиной Тьюринга, правильно вычисляющей эту функцию (так как она применима к слову 1, соответствующему значению х = 0, а на этом значении аргумента функцияне определена). Что­бы из машиныТ построить машину Т', правильно вычисляющую функцию достаточно удалить из программы машиныТ коман­ду q7~lqoOR и добавить команды и.