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

Раздел 4. Элементы математической логики и теория алгоритмов

ПРАКТИЧЕСКАЯ РАБОТА №9

АЛГОРИТМИЧЕСКИЕ СИСТЕМЫ ТЬЮРИНГА

1. ЦЕЛЬ И ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

Цель работы - овладеть навыками написания машин Тьюринга.

Порядок выполнения:

  • ознакомиться с описанием работы;

  • согласно варианту задания,выданному преподавателем,

разработать алгоритмы решения поставленной задачи;

  • отладить программу;

  • оформить отчет

2. СВЕДЕНИЯ ИЗ ТЕОРИИ

Машина Тьюринга состоит из:

  1. внутреннего алфавита - совокупности состояний { q1 , ... ,qn } и команд для каретки.

  2. внешнего алфавита А={а1, ... ,аm}, символы которого считываются и заносятся на ленту;

  3. устройства обращения к ленте, каретки,которая в каждый момент обозревает ячейку ленты, в зависимости от символа в этой ячейке и состояния управляющего устройства записывает в ячейку символ ,который в соответствии с текущей командой , сдвигается на ячейку вправо или влево или останавливается на месте; при этом управляющее устройство переходит в новое состояние (или остается в старом).

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

а) следующее состояние q`i ;

б) символ a` J,который нужно записать вместо aJ в ту же ячейку;

в) направление сдвига карктки dk, обозначаемое одним из трех символов: L(влево), R (вправо) , E (на месте).Это задание описывается в виде таблицы, строкам которой соответствуют состояния, столбцам - входные символы, а на пересечении строки qi и столбца aJ записана тройка символов q`i a`J dk .

Функциональная схема:

aJ

qi

aJ a`J

(лево, право, на месте)

q`i

Некоторые операции над машинами Тьюринга.

Теорема 1. Если f1(x) и f2(x) вычислимы по Тьюрингу то их композиция f2(f1(x)) также вычислима по Тьюрингу.

Пусть T1 - машина, вычисляющая f1 , а T2 - машина, вычисляющая f2 , и множества их состояний соответственно Q1 =( q11, ... , q1n) Q2 =( q21, ... , q2n)

Система команд машины T строится следующим образом: система команд T2 приписывается к системе команд T1 , при этом конечное состояние T1 отождествляется с начальным для T2 . Построенная машина T называется композицией машин T1 и T2 и обозначается T2(T1). Это определение остается в силе, если T1 и T2 вычисляют функции от нескольких перемнных. Важно лишь, чтобы данные для T2 были в обусловленном виде подготовленны машиной T1 .

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

Машина Т вычисляет предикат Р(а) (а - выражение на ленте), если Р(а)=х, где х=И, когда Р(а) истино, и х=Л, когда Р(а) ложно. Если же Р(а) не определен, то машина Т, как и при вычислении функций, не останавливается. При обычном вычисленни предиката уничтожается а, что может оказаться неудобным, если после Т должна работать другая машина. Поэтому вводится понятие вычисления с восстановлением: машина Т вычисляет Р(а) с восстановлением, если Р(а)=ха. Вычисление с восстановлением можно представить следующей последовательностью: выполняется Tкоп , каретка сдвигается до маркера *, затем вычисляется Р(а) , и наконец х переносится в крайнее левое положение. Машина Т является композицией указанных четырех машин. В конкретных случаях возможны и более простые способы восстановления а.

Пусть функция f(а) задана описанием: « если Р(а) истино, то f(а)=g1(х) , иначе f(а)=g2(х) ». Функция f(а) называется разветвлением или условным переходом к g1(х) и g2(х) по условию Р(а).

Теорема 2. Если g1(x), g2(x) и Р(а) вычислимы по Тьюрингу то разветвление g1 и g2 по Р(а) также вычислимо.

3. ЗАДАНИЕ

Написать машину Тьюринга в соответствии с номером варианта задания.

4. ВАРИАНТЫ ЗАДАНИЙ

1) Вычислить выражение (a+b)/c.

2) Возведение чисел в квадрат.

3) Зеркально отбразить число.

4) Вычислить выражение a(c+b).

5) Умножение нескольких чисел, записаных одно за другим через разделитель.

6) Определить остаток от деления двух чисел.

7) Определить частное от деления двух чисел.

8) Вычислить выражение (a+b)*c.

9) Вычислить a+b , если a и b четные, и a*b , если нечетные.

10) Умножение двух чисел.

11) Вычислить a-b , если a и b четные, и a/b , если нечетные.

12) Деление нескольких чисел нацело, записаных одно за другим через разделитель.

13) Вычислить выражение (a+b)с.

14) Определение НОД.

15) Определить челую часть от выражения (a+b)/c.

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

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

Перевод числа из позиционной системы в унарное представление .

1

2

3

4

5

6

8 9

0

*

_

$

Q1

q11R

q12R

q13R

q14R

q15R

q16R

q18Rq19R

Q10R

q1*R

q1_R

q2$L

Q2

q30L

q31L

q32L

q33L

q3 4L

q3 5L

q3 7Lq3 8L

Q3 9L

q4*R

q3_L

Q3

q31L

q31L

q31L

q31L

q31L

q31L

q31Lq31L

Q31L

q3*L

q1*R

Q4

q4_R

Q4_N

q4_N

q4_N

q4_N

Каретка слева от числа , справа от числа должен стоять знак $

Приложение 1

Ручной просчет:

Задание умножить два числа.

1

_

*

0

~

q1

q2 0 R

q6 _ R

q 1* L

q1 1 L

q2

q2 1 R

q3 * R

q3 * R

q2 * L

q3

q 31 R

q4 1 L

q3 1 R

q4

q4 1 L

q4 * L

q1 0 R

q4 * L

q5

q6 _ R

q6 _ R

q6

q6 1 R

q4 * E

q7 1 L

q4 * L

q4 1 L

q7

q7 * L

q4 _L

q1 0 L

q8

q7 _ R

q3 1 R

q4 * L

q4 * L

q4 * R

q9

q10 * L

q5 * L

q4 * L

q10

q7 1 L

q7 _E

q4 * L

Перевод числа из однотипных знаков в десятичную смстему счисления.

1

2

3

4

5

6

8 9

0

*

_

Q1

q3 2 N

q3 3 N

q3 4 N

q3 5 N

q3 6 N

q3 7 N

q3 9 Nq1 0 L

q3 1 N

q1 *L

q3 1 N

Q2

q2 1 R

q2 2 R

q2 3 R

q2 4 R

q2 5 R

q2 6 R

q2 8 Rq2 9 R

q2 0 R

q1 _ R

q2 _ L

Q3

q3 1 R

q3 2 R

q3 3 R

q3 4 R

q3 5 R

q3 6 R

q3 8 Rq3 9 R

q3 0 R

q1 * R

q1 _ L

Сложение. Во введенном представлении сложить числа a и b - это значит слово 1a*1b переработать в слово 1a+b, т.е. удалить разделитель * и сдвинуть одно из слагаемых, скажем первое, к другому. Это преобразование осуществляет машина T+ со следующей системой команд:

1

*

_

q1

q2 _ R

q2 _ R

q2

q2 1 R

q3 1 L

q3

q3 1 L

q3 _E

Начальное состояние : {q1E} , каретка на левом числе.

Копирование ( перезапись слова ) слова, т.е. переработка слова а в а*а. Для чисел эту задачу решает машина Tкоп, система команд которой приведена в таблице :

1

_

*

0

q1

q2 0 R

q1 _ E

q 1* L

q1 1 L

q2

q2 1 R

q3 * R

q3 * R

q3

q 31 R

q4 1 L

q4

q4 1 L

q4 * L

q1 0 R

Начальное состояние : {q1E} , каретка на левой единице левого числа.

Машина при каждом проходе исходного слова 1а заменяет левую из его единиц нулем и пишет (в состоянии q3) одну единицу справа от 1а в ближайшую пустую клетку. При первом проходе, кроме того, в состоянии q2 ставится маркер *. Таким образом, копия 1а строится за а проходов. После записи очередной единицы машина переходит в состояние q4 , которое передвигает каретку влево от ближайшего нуля, после чего машина переходит в q1 и цикл повторяется. Он прерывается, когда q1 обнаруживает на ленте не единицу, а маркер. Это значит, что все единицы 1а исчерпаны, т.е. сделано а проходов. Тогда каретка возвращается влево в свое исходное положение, заменяя по дороге все нули единицами.

Пример 3

1

_

*

0

q1

q2 0 R

q6 _ R

q 1* L

q1 1 L

q2

q2 1 R

q3 * R

q3 * R

q3

q 31 R

q4 1 L

q4

q4 1 L

q4 * L

q1 0 R

q5

q6 _ R

q6 _ R

q6

q6 1 R

q7 1 L

q7

q7 1 L

q7 _E

Начальное состояние : {q1E} , каретка на левой единице числа.

Это система команд машины T+(Tкоп). Она вычисляет функцию f(x)=2х , при этом машина Tкоп строит два числа на ленте, а T+ складывает их.

Пример 4

1

_

q1

q3 1 R

q1 И E

q2

q3 1 R

q4 1 L

q3

q2 1 R

q5 1 L

q4

q4 _ L

q4 И E

q5

q5 _ L

q5 Л E

Начальное состояние : {q1E} , каретка на левой единице числа.

Машина вычисляет предикат « а - четное число » : каретка достигает конца числа в состоянии q2 , если число единиц четно, и в состоянии q3 , если число единиц нечетно, после чего она перемещается в исходное положение в состоянии q4 либо q5 и печатает И либо Л соответственно. Для того, чтобы этот предикат вычислялся с восстановлением, достаточно не стирать, а сохранять единицы, т.е. заменить команды q4_L и q5_L на команды q41L и q51L .

Пример 5

а)

1

_

*

q1

q2 _ R

q4 _ R

q2

q2 1 R

q4 1 R

q3

q3 1 L

q1 _ R

q4

q4 1 R

q5 _ L

q3 * L

q5

q5 1 L

q5 _ E

Начальное состояние : {q1E} , каретка на левой единице числа.

Система команд машины T++ для сложения n чисел. Цикл состояний q1 , q2 , q3 - это « зацикленная » машина T+ , в которой заключительное состояние совмещено с начальным. Сумма, полученная на очередном цикле, является первым слагаемым следующего цикла. Состояние q4 реализует разветвление. В нем проверяется условие - есть ли второе слагаемое. Если да ( о чем говорит наличме маркера * ), то происходит переход к следующему циклу; если нет ( о чем говорит пробел поосле единиц ) , то машина выходит из цикла.

б) Пусть машина Т с алфавитом Ат не является правильно вычисляющей и ее заключительная конфигурация на ленте стандартна, но может содержать любые символы Ат ( кроме проделов ) , а результат интерпритируется как число, равное числу единиц на ленте. Построим для Т машину T`++ , которая работает как T++ , а все символы , кроме 1 и пробела , она воспринимает как маркеры , т.е. команды для них - те же, что и для *. Тогда T`++ соберет все единицы в один массив и, следовательно, T`++ (T(а)) правильно вычисляет функцию, вычисляемую машиной T.

Аналогично тому как из машины T+ была построена T++ , можно построить машину Tхх , которая перемножает несколько чисел, и по схеме с использованием T`хх вместо T`++ построить машину, осуществляющую возведение в степень.

6. СОДЕРЖАНИЕ ОТЧЕТА

Отчет должен содержать:

  • наименование работы;

  • текст программы машины Тьюрига по индивидуальному заданию.

7. КОНТРОЛЬНЫЕ ВОПРОСЫ

  1. Что представляет собой машина Тьюринга?

  2. Что называют внутренним , а что внешним состоянием машины Тьюринга?

3. Для чего предназначена каретка?

4. Какие команды могут быть использованы в программе машины Тьюринга?

  1. Тьюринга?

  2. Каким образом осуществляется композиция машин Тьюринга?

  3. Что является памятью машины Тьюринга?

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

8. СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

  1. Кузнецов Дискретная математика для инженеров. 1-е изд. -.:Наука.2008.-86

2. Гаврилов Г.П., Сапоженко А.А. Сборник задач по дискретной математике. – М.: “Наука”, 2010 – 368 с.: ил.

Соседние файлы в папке дискретка