![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
|
В этом разделе мы приведем примеры вычислений на машинах Тьюринга и рассмотрим некоторые общие приемы, позволяющие комбинировать программы различных МТ для получения более сложных вычислений.
Назовем заключительную конфигурацию стандартной, если в ней головка наблюдает первый значащий символ результата, который находится в 1-ой ячейке (т.е. в той же ячейке, где начиналось входное слово).
Пример 1.
1. Построить машину Тьюринга, переводящую слово
в слово
, если внешний алфавит
.
2. Проверить работу машины Тьюринга над некоторым словом.
Решение.
1. Опишем работу алгоритма, решающего задачу.
Будем обозначать состояния машины Тьюринга числами 0,1,2,…, причем 1 ‑ начальное, а 0 ‑ заключительное состояния.
Так как нам надо переписать слово в обратном порядке, то понадобится вспомогательный символ внешнего алфавита, который обозначим «*», т.е.
.
Вначале с помощью команд
;
заменяем
на «*» и движемся влево. Признаком окончания слова будет считывание λ в состояниях 2 или 3. С помощью команд
и 
печатаем символ
, движемся вправо и переходим в состояние 4.
Запишем промежуточные конфигурации:

Если в состоянии 4 считываем символы а или b, то, не изменяя символы и состояние, движемся вправо. Это позволит пройти новое слово, которое строим, без изменений.
, 
Если в состоянии 4 считываем символ «*», то это значит, что новое слово пройдено и надо переходить в следующее состояние 5, чтобы дойти до остатков старого слова.

Если в состоянии 5 считываем символ «*», то движемся вправо, не меняя символ и состояние. Если в состоянии 5 считываем символы а или b, значит, дошли до остатков старого слова. Заменяем символы на «*», переходим в состояния 2 или 3 и движемся влево.
,
, 
В состояниях 2 или 3, двигаясь влево, нужно пройти все символы «*», а также новое слово. Это позволят сделать команды:
,
,
,
,
,
.
Признаком того, что все символы «*», а также новое слово пройдены, будет считывание λ в состояниях 2 или 3.
Запишем промежуточные конфигурации:

Дальше по циклу все символы перепишутся. Признаком того, что старое слово закончилось, является считывание символа λ в состоянии 5. Остается стереть все символы «*» и остановится в начале нового слова. Для этого понадобятся команды:
;
;
;
;
.
Запишем все конфигурации:

Программу найденной машины Тьюринга представим таблицей
| A\Q | ||||||
| λ | ‑ |
|
| ‑ |
|
|
| a |
|
|
|
|
|
|
| b |
|
|
|
|
|
|
| * | ‑ |
|
|
|
|
|
2. Проверим работу машины Тьюринга над словом
.

Итак, проверка сделана, результат работы машины Тьюринга удовлетворяет требованиям, которые ставились в условии задачи.
Пример2.
1. Построить машину Тьюринга, вычисляющую числовую функцию
.
2. Проверить работу построенной машины над некоторым набором значений.
Решение.
1. Будем обозначать состояния машины Тьюринга
причем
‑ начальное, а
‑ заключительное состояния.
Набор значений аргументов
изображается словом
.
Аргумент
должен остаться без изменения, этого можно добиться с помощью команды
. Когда в состоянии
встретиться символ λ, значит, мы попали на символ, разделяющий изображения аргументов, переходим в состояние
, а сам символ λ пока оставим без изменений с помощью команды
.
Далее набор единиц, изображающих аргумент
, проходим до конца. Для этого добавим команды:
;
.
Теперь с помощью «челночного» алгоритма удвоим количество единиц в блоке, изображающем вторую переменную.
Расширим алфавит, введя символ «*», т.е.
. Будем заменять единицы блока
метками «*» следующим образом.
Получили машину Тьюринга с внешним алфавитом
, алфавитом внутренних состояний
и программой, записанной в виде следующей таблицы:
| A\Q |
|
|
|
|
|
|
|
|
| λ |
|
|
|
|
| ‑ | ‑ | ‑ |
|
|
|
|
|
|
|
| |
| * | ‑ | ‑ | ‑ | ‑ |
| ‑ | ‑ | ‑ |
2. Проверим работу алгоритма над изображением набора переменных
. Применим эту машину к слову 11λ11. Вот последовательность конфигураций, возникающих в процессе работы машины (исходная конфигурация — стандартная начальная):

Нетрудно заметить, что данная машина Тьюринга перерабатывает исходное слово
в слово
, т.е.
.
Дата публикования: 2015-03-26; Прочитано: 857 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!
