Машина Тьюринга (МТ)

Принципы, положенные в основу функционирования машинных алгоритмов.

1) Однопроцессорность и поэтому последовательная работа процессора только над одним потоком команд.

2) Управление процессора происходит под действием внешних либо внутренних событий.

3) Алгоритм понимается как последовательность переходов из состояния в состояние под действием команд или последовательностей команд.

4) Управляющие внутренние события воспринимаются как изменения в памяти процессора.

1. Машина состояний (State Machine) – SM.

SM = < S, E, П, P >

а) S = { s 0, s 1, …, sk } – алфавит состояний, s 0 – начальное состояние, sk – конечное состояние.

б) E = { e 1, e 2, …, en } – алфавит событий (events), событие идентифицируется (происходит, совершается) при изменении состояния машины под воздействием команд.

в) П = { П 1, П 2, …, П е} – набор элементарных действий, изменяющих состояние машины.

г) P ={ р 1, р 2, …, рm } – набор правил (команд машины); где вид правила (команда SM) – р = { S (t), e (t), П (t) ® S (t + 1)}.

Интерпретация правил SM: если SM находится в момент времени t в состоянии S (t), идентифицируется событие e (t), тогда инициируется действие П (t), которое переводит SM в новое состояние S (t +1); момент времени «t» называется тактом работы SM. В большинстве SM употребляется другой вид правил: р = { S (t), e (t), ® S (t + 1), П (t + 1)} – с интерпретацией: событие e (t) вызывает переход в S (t + 1) и действие П (t + 1) в этот же момент.

Последовательность действий SM, приводящих SM из состояния S 0 в конечное состояние Sk, называется алгоритмом (программой) работы SM.

Исходная информация (данные), промежуточная и результирующая (когда SM попадает в конечное состояние Sk и останавливается) записывается в память SM.

Для абстрактных SM (например, машины Тьюринга) память имеет вид ленты или строки (например, нормального алгоритма Маркова) с определенными свойствами.

МТ = < S, E, П, P > определяется как некоторая SM.

а) S – алфавит состояний.

б) E º А ={ a 1, a 2, …, an } – алфавит внешних символов, которые записываются в память (на ленту). Идентификацию символа в момент t в МТ производит специализированный процессор, который называется «управляющей головкой» (УГ). Внешние символы являются событиями, которые управляют процессором УГ.

в) П = { L, R, stop } – алфавит действий УГ.

г) Для МТ определяется набор команд вида

, либо .

Лента МТ представляет своеобразную структуру данных (СД), которая может моделироваться двунаправленным линейным списком, вообще говоря, растущим в обе стороны.

Обозначения в линейном списке:

L – ссылка на предыдущий элемент списка;

R – ссылка на последующий элемент списка;

Z – запись (для МТ это ячейка ленты, куда записывается

единственный символ);

* – спейсер, ограничивающий запись слова.

Строка с такой СД носит название «строка Тьюринга» – (СТ).

Пример SM в виде машины Тьюринга, порождающей слова языка L = anbn; A = { a, b, Æ, *} – алфавит символов ленты МТ. Структура данных – СТ; Æ – пустой символ; начальное состояние СТ – все ячейки пустые; * – спейсер может быть в любой ячейке. SM определяется следующими конструкциями.

а) S = { SL, SR, Sstop } – алфавит состояний; SL – начальное состояние; состояние движения УГ влево, Sstop – конечное состояние, SR – состояние движения УГ вправо.

б) Правила: Р 1 = {(SL, Æ, а, R) ® SR }, правило читается так, если SM в состоянии SL, считывает из элемента списка символ «Æ», то записывает символ «а», по правой ссылке R вызывается следующий элемент списка и SМ переходит в SR.

Р 2 = {(SR, Æ, b, L) ® SL }; P 3 = {(SR, a, a, R) ® SR }

P 4 = {(SR, b, b, R) ® SR }; P 5 = {(SL, *, *, stop) ® SR }

P 6 = {(SL, b, b, L) ® SL}; P 7 = (SL, a, a, L) ® SL }.

Правила работы SM могут быть записаны в виде матриц S ´ S (матрица состояние/состояние) S ´ A (матрица состояние/собы-тие). Такая запись называется матричной структурой алгоритма (МСА). Для рассматриваемого примера:

в) Матрица переходов –S´S(состояние/состояние).

  SL SR Sstop
SL a,(a, L) b,(b, L) (a, R) Æ *,(*, stop)
SR (b, L) Æ a,(a, R) b,(b, R)  

г) Матрица – S´ A (состояние/событие).

  a b Æ *
SL (a, LSL (b, LSL (a, RSR *,(*, stopSstop
SR (a, RSR (b, RSR (b, LSL  

Каждое действие в правилах можно назвать элементарной программой. Набор элементарных программ П = { П 1 = (a,R); П 2 = (b,R); П 3 = (b,L); П 4 = (a,L); Пk = (*, stop)} из которых строятся сценарии работы (поведения) МТ в зависимости от начальной информации на входной ленте.

Программа работы SM может быть задана графом. Для примера на рис.1 приведен граф переходов. Вершины – состояния. Дуги помечены выражением: «если в элементе списка находится символ «х», то замени его на символ «у» и перейди к следующему элементу по ссылке L или R, в соответствии с правилом».

Рис.1 Граф переходов SM, порождающей .

Пример работы SМ со строкой Тьюринга при порождении слова а 2 b 2 Î L.

0) *ÆÆÆÆ 1) *Æ а ÆÆ 2) *Æ аb Æ

3) *Æ ab Æ 4) * aab Æ 5) * aab Æ

6) * aab Æ 7) * aabb 8) * aabb

9) * aabb 10)* aabb 11) Stop SM

3. Блок-схема алгоритма (БСА – машина). БСА является еще одной конструкцией алгоритмической машины, к БСА достаточно просто перейти от SM, если задан ее граф переходов.

БСА суть направленный граф с множествами вершин двух типов.

1) П – программные вершины,2) R – вершины-распознаватели. Дуги , RR помечаются «+» или «–», дуги ПП, ПR не помечаются. Интерпретация графа: П – программный блок, R – содержит проверку истинности или ложности условия. Проверку выполняет программа, вычисляющая соответствующий предикат.

Интерпретация работы БСА – машины.

1) Машина начинает работу с П 0 (начальный программный блок) и заканчивает (останавливается) после работы над блоком Пk.

2) Переход после окончания работы над блоком Пi к блоку П J безусловно (по стрелке) либо через распознаватель R по стрелке «+», если условие (предикат) распознавателя выполнено, или по стрелке «–», если условие (предикат) не выполнено. Выполнение/невыполнение условия суть события, на которые БСА реагирует включением того или иного блока.

4 Блок-схема алгоритма машины, порождающей слова языка

БСА построена по SM, приведенной в пункте 2, Æ1, Æ2, Æ3, a 1, a 2, b 1, b 2 – обозначение распознавателей пустого символа и символов a, b.

Ä – останов БСА-машины при неправильной ситуации на ленте.

 
 

5 Строка Ляпунова (СЛ) представляет граф в виде слова, построенный по определенным правилами, который служит логическим «скелетом» программы. СЛ является логической моделью записи программы на любом процедурном языке для однопроцессорной алгоритмической машины.

На рисунке представлена строка Ляпунова для алгоритма порождения со структурой данных СТ.

Строка Ляпунова суть последовательность символов П, условий распознавателя, стрелок и специального символа w. Она строится по следующим правилам:

1) «+» стрелка не показывается, за ней всегда идет программный блок или символ w (безусловный переход);

2) «–» стрелка показывает переход на соответствующий программный блок;

3) после символа w стрелка показывает безусловный переход на соответствующий программный блок.

6. Эквивалентные преобразования СЛ. Символы СЛ могут быть переставлены в любой последовательности, при этом сохраняется логическая структура графа БСА.

 
 

Далее приведена «запутанная» строка Ляпунова (местами поменялись П2 и П3).

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

Свойства СМ, которые делают ее «резиновой» (растягивающейся/сжимающейся) при перестановках (заменах) фрагментов слов:

а) Растяжение СМ.

Правило подстановки j®y такое, что |j|<|y| (длина слова j меньше длины слова y). При выполнении подстановки строка растягивается.

Например, x = aaSbb – слово, (S ® aSb) – правило.

Применение правила дает слово x¢ = aaaSbbb.

б) Сжатие СМ.

Правило подстановки j®y такое, что |j| > y|.

Например, x = aaSbb – слово, (aSb®S) – правило; применение правила дает слово x¢ = aSb.

Пример SM, порождающей слова языка L = anbn, использующей структуру данных «строка Маркова» (СМ). Обратите внимание, как упрощается алгоритм по сравнению с аналогичным, но работающим со «строкой Тьюринга» (п. 2).

Рис.2. Граф SM и ЛСА для задачи порождения слов языка L = anbn на строке Маркова.

а) Машина состояний (SM).

Алфавит языка: – вспомогательный символ.

Алфавит состояний .

Алфавит внешних событий: – продолжать порождение, – закончить порождение.

Правила: ; .

б) Логическая структура алгоритма ЛСА.

П0 – начальный блок, на ленту СМ занесен символ «*».

П1 – подстановка (* ® а * b), П k – подстановка (* ® аb).

Значение распознавателя ek = «+» – закончить порождение,

ek = «–» – продолжать порождение.

Граф алгоритма на СМ очевидно проще, чем граф алгоритма на СГ (см. рис. 1).


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



double arrow
Сейчас читают про: