Программа для машины тьюринга определяется тройкой

2. Открыть эмулятор[1] машины Тьюринга https://cmcmsu.no-ip.info/1course/alg.schema.mt.htm. Изучить примеры.

4. Изучить и выполнить пример 1 стр. 4.

5. Решать задачи стр.5.

Самостоятельная работа.

· Необходимость и способы уточнения понятия алгоритма (символы и слова) [1, стр.27 – 36]

· Машина Тьюринга (структура, такт работы, запись программы, правила выполнения программы, применимость и неприменимость алгоритма к слову, соглашения для сокращения записи программы). Возможности МТ (композиция, разветвление и повторение МТ) Тезис Тьюринга. [2]

· Изучить примеры [2] стр. 7 – 15

· Решить задачи [2] стр. 15 – 18. Тема «Программирование для МТ» войдет в состав контрольной работы.

Литература

1. Кнут Д. Искусство программирования для ЭВМ. Основные алгоритмы: т.1; М.:Мир,2000..

2. Пильщиков В.Н., Абрамов В.Г., Вылиток А.А., Горячая И.В. Машина Тьюринга и алгоритмы Маркова. Решение задач. (Учебно-методическое пособие) — М.: МГУ, 2006. – 47 с.

Машина Тьюринга. Введение. Понятие машины тьюринга. Решение задачи

Структура машины Тьюринга

Машина Тьюринга (МТ) состоит из двух частей – ленты и автомата (головки чтения/записи):

Лента используется для хранения информации. Она бесконечна в обе стороны и разбита на клетки, которые никак не нумеруются и не именуются. В каждой клетке может быть записан один символ или ничего не записано. Содержимое клетки может меняться – в неё можно записать другой символ или стереть находящийся там символ.

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

Автомат – это активная часть МТ. В каждый момент он размещается под одной из клеток ленты и видит её содержимое; это видимая клетка, а находящийся в ней символ – видимый символ; содержимое соседних и других клеток автомат не видит. Кроме того, в каждый момент автомат находится в одном из состояний, которые будем обозначать буквой q с номерами: q1, q2 и так далее. Находясь в некотором состоянии, автомат выполняет какую-то определённую операцию (например, перемещается направо по ленте, заменяя все символы b на a), находясь в другом состоянии – другую операцию.

Пару из видимого символа (S) и текущего состояния автомата (q) будем называть конфигурацией, и обозначать .

Автомат может выполнять три элементарных действия:

· записывать в видимую клетку новый символ (менять содержимое других клеток автомат не может);

· сдвигаться на одну клетку влево или вправо («перепрыгивать» сразу через несколько клеток автомат не может);

Конструирование машины Тьюринга

· переходить в новое состояние.

Ничего другого делать автомат не умеет, поэтому все более сложные операции так или иначе должны быть сведены к этим трём элементарным действиям.

Такт работы машины Тьюринга

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

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

сдвигается на одну клетку влево (обозначение – L, от left), либо на одну клетку вправо (обозначение – R, от right), либо остается неподвижным (обозначение – N).

переходит в некоторое состояние q′ (в частности, может остаться в прежнем состоянии).

Формально действия одного такта будем записывать в виде тройки: S′, [L,R,N], q′, где конструкция с квадратными скобками означает возможность записи в этом месте любой из букв L, R или N. Например, такт *,L,q8 означает запись символа * в видимую клетку, сдвиг на одну клетку влево и переход в состояние q8.

Программа для машины Тьюринга

Сама по себе МТ ничего не делает. Для того чтобы заставить её работать, надо написать для неё программу. Эта программа записывается в виде следующей таблицы:

Слева перечисляются все состояния, в которых может находиться автомат, сверху – все символы (в том числе и Λ), которые автомат может видеть на ленте. (Какие именно символы и состояния указывать в таблице – определяет автор программы.) На пересечениях же (в ячейках таблицы) указываются те такты, которые должен выполнить автомат, когда он находится в соответствующем состоянии и видит на ленте соответствующий символ.

Читайте также:
Программа жрс что такое

В целом таблица определяет действия МТ при всех возможных конфигурациях и тем самым полностью задаёт поведение МТ. Описать алгоритм в виде МТ – значит предъявить такую таблицу.

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

Источник: poisk-ru.ru

Машина Тьюринга, ее структура и свойства. Проблема остановки мт.

Основная гипотеза теории алгоритмов (тезис Тьюринга) – всякий вычислительный процесс может быть преобразован в машину Тьюринга, всякий алгоритм – в таблицу такой машины.

Главное доказательство тезиса Тьюринга – никто и никогда не указал алгоритма, который нельзя было бы преобразовать в машину Тьюринга.

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

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

Итак, МТ- простейшая идеальная модель вычислительного процесса, а значит и простейшая идеальная вычислительная машина. Вычислительный процесс разложен на элементы. Так как внешняя память бесконечна, то машина не боится переполнения. Реальным машинам будет соответствовать машина Тьюринга с оборванной лентой.

МТ обрабатывает односторонне бесконечную ленту, Лента разбита на клетки, в которых пишутся символы по одному в клетке. Если в клетке ничего нет, то будем говорить, что там записан пустой символ. Множество знаков для ленты машины называется ее внешним алфавитом, в который входит и пустой знак. Внешний алфавит конечен. Машина имеет дискретное время работы. Оно распадается на такты.

В каждый такт она занимает одну клетку ленты, читает записанный там символ, затем записывает новый символ, движется вправо или влево и переходит в следующее внутреннее состояние. Машина имеет конечное множество внутренних состояний (внутренний алфавит машины).

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

Кроме ленты, имеется головкам чтения/записи, которая, во-первых, умеет двигаться вперед, назад и стоять на месте; во-вторых, умеет читать содержимое, стирать и записывать символы из данного алфавита; в третьих, управляется программой. Программа представляет собой таблицу, в которой в каждой клетке записана команда. Каждая клетка определяется двумя параметрами — символом алфавита и состоянием машины. Команда представляет собой указание, куда передвинуть головку чтения/записи из текущего состояния, какой символ записать в текущую ячейку и в какое состояние перейдет машина.

Более наглядной описание:

Машина Тьюринга состоит из следующих “частей” [2]:

  • ленты, разбитой на конечное число ячеек
  • Внешней памяти, принимающей одно из состояний, входящих в множество A=a0,a1, …am>. Ячейки ленты находятся в одном и только одном из состояний множества А. Состояние a0 называется пустым.
  • Внутренней памяти, принимающей одно из состояний, входящих в множество Q=q0,q1, …qm>. Состояние q0называется “стоп”.
  • головки, двигающейся вдоль ленты и считывающей содержимое ячейки, напротив которой она останавливается.
  • Механического устройства, передвигающего головку и меняющего состояние внешней и внутренней памяти. Если головка с состоянии q стоит напротив ячейки с номером k, то изменения состояния внутренней памяти и состояния ячейки происходят одновременно.

8(3)

Рис1. Машина Тьюринга.

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

Читайте также:
Как пользоваться программой призма

qs ai -> qt aj

qs ai -> qt L

qs ai -> qt R

где L – это движение головки влево на одну ячейку, а R – вправо.

Смысл команды таков: если головка в состоянии qs обозревает ячейку в состоянии ai , то в первом случае она меняет свое состоянии на qt , а ячейки на aj , во втором случае — свое состоянии на qt и сдвигается влево, и в третьем – вправо.

Конечный набор команд образует команду.

Состояние машины – это последовательность состояний ai1, … air ячеек ленты, состояние внутренней памяти qs головки и номер k воспринимаемой ячейки в состоянии aik .

Машина Тьюринга работает на неограниченной с обеих сторон ленте, разделённой на ячейки, одну из которых обозревает головка. В любой момент времени все ячейки, кроме конечного числа, заняты пустыми символами. Конфигурацией машины Тьюринга m называется слово вида αqixβ, где — α и β непустая часть ленты, qi — текущее состояние управляющего устройства, x — обозреваемый головкой символ.

Рисунок 1 — Машина Тьюринга в состоянии qi , конфигурация αqixβ.

За каждый такт работы машины Тьюринга головка считывает обозреваемый символ с ленты и записывает на его место новый, при этом машина переходит в новое состяние qj или остаётся в старом, а головка передвигается на одну позицию влево или вправо, либо остаётся на месте. Порядок работы машины Тьюринга обычно записывается в виде таблицы, где в каждый столбец первой строки заносится возможное состояние машины Тьюринга qi Є Q, а в каждую строку первого столбца заносится символ внешнего алфавита x Є T.

В других ячейках записываются команды исполняемые машиной Тьюринга в состоянии qi при обозревании символа x (ячейка пуста, если предполагается, что символ x не встречается в состоянии qi). Формат команды задаётся тройкой aKq, где а — символ печатаемый на ленте, К — направление движения головки из , q — новое состояние машины Тьюринга.

Рассмотрим программу сложения двух чисел заданных на ленте в унарной системе счисления для машины Тьюринга. Программа принимает 2 числа разделённых символом разделителя (‘*’), и записывает результат их сложения на ленте сразу за этими числами отделяя его символом ‘=’. Начальное состояние машины Тьюринга — q0, а головка обозревает первый символ первого числа. Конечное состояние — qz, при этом головка возвращается к исходной позиции. Программа перед своим завершением должна восстановить исходные данные на ленте.

8(4)

Рисунок 2 — Пример начального состояния машины Тьюринга

Рисунок 3 — Пример конечного состояния машины Тьюринга

Итак, внешний алфавит для решения данной задачи представляет из себя множество T = λ, 1, 0, *, =>, а программа выглядит следующим образом:

Источник: studfile.net

Примеры машин Тьюринга

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

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

Пусть алфавит машины Тьюринга состоит из двух символов , где 0 – пустой символ, а 1 – символ занятой ячейки. В этом алфавите любое целое неотрицательное число k представляется k+1 символами 1, записанными в соседних ячейках ленты. В этом случая число 0 будет записано так …010…

Определим порядок вычисления значения этой функции машиной Тьюринга. Так как результат должен представлять массив из занятых ячеек, где — число ячеек, занятых аргументом x, то вычисление организуем следующим образом. В ячейку, занятую аргументом x, вместо символа 1 записываем пустой символ 0. В каждом таком случае символ 1 записывается в двух ячейках, представляющих результат. Этот результат формируем в виде массива ячеек, расположенных справа от массива ячеек, занятых аргументом x, через одну пустую ячейку. Когда вместо всех ячеек, занятых аргументом x, будут только пустые ячейки, в новом массиве занятых ячеек удаляется одна ячейка с символом 1.

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

— удалена одна занятая ячейка аргумента.

— читаются занятые ячейки аргумента.

— найдена разделяющая пустая ячейка.

— читаются занятые ячейки результата.

— заполнена одна пустая ячейка результата.

— заполнена вторая ячейка результата.

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

— найдена пустая разделяющая ячейка.

— найдена вторая пустая ячейка.

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

— удаляется один занятый символ. Конец.

Читайте также:
Что нужно сделать для создания новой книги в программе excel

— найдена занятая ячейка аргумента.

— просматриваются в обратном порядке занятые ячейки аргумента.

— найдена пустая ячейка перед занятыми ячейками аргумента.

Пример 2. Построить машину Тьюринга, применимую ко всем словам в алфавите < a, b > и переводящую их в слово . Проверить работу построенной машины над некоторыми словами.

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

С помощью команд , , движемся влево, не изменяя последнего символа.

Если в состоянии считываем символ a, значит, , надо стирать все символы слова , кроме последнего. Это можно сделать с помощью команд , , .

Если в состоянии считывается символ , значит, вся работа проделана, и пора останавливаться с помощью команды .

Если в состоянии считываем символ b, значит, , надо все символы, кроме , заменить буквами b. Это делаем с помощью команд , , .

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

Проверим работу построенной машины Тьюринга над словом abba:

abba, abba, abba, abba, abbal, abba, abba, abba,
lbbba, lbbba.

Итак, в слове abba предпоследний символ — b, и все буквы исходного слова, кроме последнего, заменены буквой b.

Проверим работу построенной машины Тьюринга над словом bbaaa:

bbaaa bbaaa bbaaa bbaaa bbaaa bbaaal bbaaa
bbaaa bbala bblla bllla llllla llllla

В слове bbaaa предпоследний символ — a, и все буквы исходного слова, кроме последнего, заменены пустыми символами .

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

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

Чтобы можно было строить сложные машины Тьюринга, определяют понятие композиции машин Тьюринга.

Композицией машин Тьюринга М1 и М2 называется машина Тьюринга М, которая первоначально функционирует как машина Тьюринга М1, заключительное состояние которой q 0 изменяют на начальное состояние машины Тьюринга М2. И далее машина М функционирует как машина Тьюринга М2.

Композицию машин Тьюринга обозначают: М = М1 º М2.

Из определения композиции машин Тьюринга следует, что М1 º М2 ≠ М2 º М1.

Так, если необходимо построить машину Тьюринга, вычисляющую функцию ƒ(х, у) = х + у + 1, то достаточно выполнить композицию машин Тьюринга. Пусть машина М1 вычисляет функцию ƒ(х) = х + 1, а машина М2 вычисляет функцию ƒ(х + у). Тогда машина М = М1 º М2 будет вычислять, очевидно, функцию ƒ(х, у) = х + у + 1. Для этого нужно к программе, описывающей машину М1, присоединить команды машины М2. Состояния машины М1 будут также состояниями машины М. Заключительное состояние q 0 машины М1 следует заменить состоянием q 2,которое будет соответствовать начальному состоянию машины М2. тогда изменится соответствующим образом нумерация состояний машины М2: состояние q 1 изменится на состояние q 2 машины М, состояние q 2 изменится на состояние q 3 и так далее.

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

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

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

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

Важность доказательства факта, что некоторая задача алгоритмически неразрешима, состоит в том, что исследователь не будет тратить время и силы на разработку алгоритма решения данной задачи в общем виде.

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:

Источник: studopedia.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru