Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
11
Добавлен:
15.06.2014
Размер:
95.78 Кб
Скачать

Министерство образования Республики Беларусь

Учреждение образования «Белорусский государственный университет информатики и

радиоэлектроники»

Кафедра интеллектуальных информационных технологий

МЕТОДИЧЕСКИЕ УКАЗАНИЯ

к лабораторной работе №2

по учебной практике НА ТЕМУ:

“Алгоритмические модели”

Разработали:

Рожанский Д.В.,

 

Сердюков Р.Е.

МИНСК

2006

Цель работы

Исследовать свойства алгоритмов на примере алгоритмической моделимашины Тьюринга

Краткие теоретические сведения

Машина Тьюринга, как и машина Поста, - очень простое вычислительное устройство. Она имеет ленту бесконечной длины, разделенную на ячейки. Каждая ячейка может быть пустой или содержать символ, выбираемый из некоторого конечного списка. Также машина Тьюринга имеет головку, которая перемещается вдоль ленты и может читать или записывать символы. Машина имеет внутренне состояние, которое может быть либо состоянием останова, либо выражается целым числом между 0 и некоторой максимальной величиной. Когда машина переходит в состояние останова, она заканчивает вычисления. Хотя машина Тьюринга очень проста, однако любое вычисление, которое можно сделать на современном компьютере, может быть выполнено на машине Тьюринга.

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

записать символ в ячейку (возможно, тот же, что в ней уже находился);

передвинуться на одну ячейку вправо или влево;

установить внутреннее состояние (возможно в то же, в котором машина

находится в данный момент).

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

Описание интерфейса программной модели машины Тьюринга

Рис. 1 Содержимое памяти машины Тьюринга

Память машины Тьюринга показана на рисунке 1. Память разбита на ячейки, в каждую ячейку вручную может быть записан символ ‘0’ или ‘1’. Лента памяти имеет ограниченную длину, при выходе за ее границы появляется сообщение об ошибке «Выход за границы памяти». Та ячейка в

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

Рис. 2 Создание, сохранение и выполнение программ.

При помощи данной панели кнопок (рисунок 2), можно открыть пример программы, сохранить свою программу на диск, посмотреть программу в текстовом виде, а также выполнить готовую программу целиком или пошагово. Также доступны соответствующие клавиши: F8 – пошаговая отладка программы, F9 – запуск программы на выполнение.

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

Рис. 3 Таблица записи программ

Столбцы таблицы соответствуют состояниям, в которых может находиться машина Тьюринга при выполнении конкретной программы. При написании программы ссылка(переход) на соответствующее состояние записывается как Q01, Q02, … и т.д. Состояние Q00 рассматривается как состояние останова. Состояние, которое будет выделено в момент запуска программы, будет считаться начальным состоянием машины Тьюринга при выполнении данной программы.

Строки соответствуют тем символам, которые могут находиться в ячейке памяти машины. В данном случае это символы ‘0’ и ‘1’.Когда машина считывает какой-либо символ из ячейки памяти, то будет выполнено действие, записанное в ячейке на пересечении строки, которая соответствует этому символу и столбца, который соответствует состоянию машины Тьюринга в данный момент.

Действия, записанные в ячейки, состоят из:

символа, который надо записать в ячейку (0 или 1);

направления, в котором надо передвинуть каретку (влево – ‘<’, вправо – ‘>’, остаться на той же ячейке – ‘ ’);

состояния, в которое должна перейти машина Тьюринга (Q01, Q02 …).

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

Рис. 4 Пример простейшей программы для машины Тьюринга. В текстовом виде программа выглядит так:

Q01 01 Q00

Q01 10 Q00

Варианты индивидуальных заданий

1.Записать программу для машины Тьюринга, выполняющую сложение двух натуральных чисел, записанных на произвольном расстоянии друг от друга. Начальное положение головки – на произвольном расстоянии слева от первого числа.

2.Записать программу для машины Тьюринга, выполняющую сложение двух натуральных чисел, записанных на произвольном расстоянии друг от друга. Начальное положение головки – на произвольном расстоянии справа от второго числа.

3.Записать программу для машины Тьюринга, выполняющую сложение двух натуральных чисел, записанных на произвольном расстоянии друг от друга. Начальное положение головки – в произвольном месте между числами.

4.Записать программу для машины Тьюринга, выполняющую перестановку двух натуральных чисел, записанных на произвольном расстоянии друг от друга. Начальное положение головки – на произвольном расстоянии слева от первого числа.

5.Записать программу для машины Тьюринга, выполняющую перестановку двух натуральных чисел, записанных на произвольном расстоянии друг от друга. Начальное положение головки – на произвольном расстоянии справа от второго числа.

6.Записать программу для машины Тьюринга, выполняющую перестановку двух натуральных чисел, записанных на произвольном расстоянии друг от друга. Начальное положение головки – в произвольном месте между числами.

7.Записать программу для машины Тьюринга для решения следующей задачи. На ленте под головкой записано некоторое натуральное число. После выполнения программы головка должна быть установлена справа от числа, если оно нечетное, или слева от него – если оно четное.

8.Записать программу для машины Тьюринга для решения следующей задачи. На ленте под головкой записано некоторое натуральное число. После выполнения программы головка должна быть установлена справа от числа, если оно четное, или слева от него – если оно нечетное.

9.Записать программу для машины Тьюринга, выполняющую вычитание второго натурального числа из первого. Числа, записаны на произвольном расстоянии друг от друга. Начальное положение головки – на произвольном расстоянии слева от первого числа.

10.Записать программу для машины Тьюринга, выполняющую вычитание второго натурального числа из первого. Числа, записаны

на произвольном расстоянии друг от друга. Начальное положение головки – на произвольном расстоянии справа от второго числа.

11.Записать программу для машины Тьюринга, выполняющую вычитание второго натурального числа из первого. Числа, записаны

на произвольном расстоянии друг от друга. Начальное положение головки – в произвольном месте между числами.

12.Записать программу для машины Тьюринга целочисленного деления чисел на 2. Головка расположена слева от числа.

13.Записать программу для машины Тьюринга целочисленного деления чисел на 3. Головка расположена над числом.

14.Записать программу для машины Тьюринга, которая вычисляет остаток от деления заданного числа на три. Головка расположена справа от числа.

15.Записать программу для машины Тьюринга вычисления формулы 2a+b, a и b – числа, записанные на произвольном расстоянии друг от друга. Начальное положение головки – на произвольном расстоянии слева от первого числа.

16.Записать программу для машины Тьюринга для решения следующей задачи. Дана последовательность символов ‘0’, ‘1’. ‘001’ – признак начала последовательности, ‘00’ – признак конца последовательности. Необходимо в последовательности заменить все подстроки вида ‘0110’ на ‘01110’. Головка находиться на произвольном расстоянии слева от последовательности.

Соседние файлы в папке Задания 1-3 ФИТУ ИИ 2010