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

Лекция 2

Машина состояний. Блок-схема алгоритма (БСА). Матричная структура алгоритма (МСА). Строка Тьюринга. Строка Маркова. Строка Ляпунова. Логическая структура алгоритма (ЛСА). Структурное программирование.

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

Точного определения алгоритма нет. В 19301950 г. в работах Тьюринга, Поста, Клини, Гёделя сложились три типа уточнения понятия алгоритма: 1) алгоритм-машина (машинный алгоритм); 2) алгоритм-функция (система функций вычислимых алгоритмом, информационная структура алгоритма); 3) алгоритм-исчисление. В настоящее время все три типа алгоритмов используются для решения различных задач и поддерживаются специальными программными средствами в языках программирования.

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

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

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

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

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

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

SM =  S, E, П, P 

а) S = s0, s1, …, sk – алфавит состояний, s0 – начальное состояние, sk – конечное состояние.

б) E = e1, e2, …, 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 из состояния S0 в конечное состояние Sk, называется алгоритмом (программой) работы SM.

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

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

2. Машина Тьюринга (мт).

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

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

б) E  А={a1, a2, …, 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}; P3 = {(SR, a, a, R)  SR}

P4 = {(SR, b, b, R)  SR}; P5 = {(SL, *, *, stop)  SR}

P6 = {(SL, b, b, L)  SL}; P7 = (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,L)SL

(b,L)SL

(a,R)SR

*,(*,stop)Sstop

SR

(a,R)SR

(b,R)SR

(b,L)SL

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

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

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

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

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

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]