90332

Конечный автомат как элемент автоматного программирования

Курсовая

Информатика, кибернетика и программирование

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

Русский

2015-06-02

159.74 KB

17 чел.

СОДЕРЖАНИЕ

Введение 2

1. Теоретические аспекты автоматного программирования 4

1.1 Основные принципы и понятия автоматного программирования 4

1.2 Понятия конечного автомата 8

1.2 Виды конечных автоматов 10

2. Конечный автомат как элемент автоматного программирования 15

2.1 Описание конечного автомата 15

2.2 Примеры конечных автоматов 20

Заключение 33

БИблиографический список 34

Введение 

Автоматное программирование является одним из стилей программирования

Актуальность работы

В настоящее время многие программисты и ученые в этой сфере обсуждают проблему. Чаще программисты практики, которые сетуют на то, что современная система форма и стиль программирования находится на высоком уровне. Но, несмотря, на то, что система настолько идеализирована ее пользователями, все же большинство проектов заканчиваются неудачно. Именно тут и появляется такое понятие как автоматное программирование. Упрощенная  трактовка  автоматного  программирования  состоит  в  том,  что это стиль  программирования,  при  использовании  которого  поведение программ  предлагается описывать автоматами, которые в дальнейшем преобразуются в код. При этом отметим,  что  автоматы  давно  и  успешно  применяются  в  программировании,  например, при построении компиляторов Автоматы используются также и при решении многих других задач, например, при реализации протоколов.

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

Исходя из цели, можно установить такие задачи:

  1.  Обосновать теоретическое понятие автоматного программирования
  2.  Рассмотреть основные понятия автоматного программирования
  3.  Проанализировать основные виды конечных автоматов
  4.  Показать пример конечного автомата используемого в жизни.

В работе использованы такие методы:

  1.  Аналитический;
  2.  Теоретический.

Предмет курсовой работы: конечные автоматы.

Объект курсовой работы: применение автоматного программирования в жизненной практике

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


Теоретические аспекты автоматного программирования

1.1 Основные принципы и понятия автоматного программирования

Основным понятием в автоматном программировании является состояние.

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

При этом справедливо соотношение: «Состояния + входные воздействия = конечный автомат без выхода». Справедливо также: «Автомат без выхода + выходные воздействия = автомат».

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

Время в автоматах в явном виде не используется. При необходимости применения элементов задержки, они рассматриваются как объекты управления. При этом задержки запускаются и сбрасываются из автоматов, а информация об истечении времени поступает в них в виде входных воздействий.

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

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

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

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

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

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

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

Следующее преимущество автоматного подхода – эффективность верификации автоматных программ на основе метода Model Checking (верификация на модели). Это объясняется тем, что модель для верификации программ этого класса может строиться автоматически по графу переходов и иметь относительно небольшой размер, так как в графах переходов используются только управляющие состояния.

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


1.2 Понятия конечного автомата

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

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

                     (1)

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

Σ - допустимый входной алфавит (конечное множество допустимых входных символов), из которого формируются строки, считываемые автоматом;

δ - заданное отображение множества во множество подмножеств Q:

          (2)

(иногда δ называют функцией переходов автомата).

Автомат начинает работу в состоянии q0, считывая по одному символу входной строки. Считанный символ переводит автомат в новое состояние из Q в соответствии с функцией переходов. Если по завершении считывания входного слова (цепочки символов) автомат оказывается в одном из допускающих состояний, то слово "принимается" автоматом. В этом случае говорят, что оно принадлежит языку данного автомата. В противном случае слово "отвергается".

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

Другие способы описания

Диаграмма состояний (или иногда граф переходов) - графическое представление множества состояний и функции переходов. Представляет собой нагруженный однонаправленный граф, вершины которого - состояния КА, ребра - переходы из одного состояния в другое, а нагрузка - символы, при которых осуществляется данный переход. Если переход из состояния q1 в q2 может быть осуществлен при появлении одного из нескольких символов, то над дугой диаграммы (ветвью графа) должны быть надписаны все они.

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

Детерминированность

Конечные автоматы подразделяются на детерминированные и недетерминированные.

Детерминированным конечным автоматом (ДКА) называется такой автомат, в котором для каждой последовательности входных символов существует лишь одно состояние, в которое автомат может перейти из текущего.3

Недетерминированный конечный автомат (НКА) является обобщением детерминированного. Недетерминированность автоматов достигается двумя способами:

Если рассмотреть случай, когда автомат задан следующим образом:

,          (3)

где:- множество стартовых состояний автомата, такое что ;

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

Существует теорема, гласящая, что "Любой недетерминированный конечный автомат может быть преобразован в детерминированный так, чтобы их языки совпадали" (такие автоматы называются эквивалентными). Однако, поскольку количество состояний в эквивалентном ДКА в худшем случае растёт экспоненциально с ростом количества состояний исходного НКА, на практике подобная детерминизация не всегда возможна. Кроме того, конечные автоматы с выходом в общем случае не поддаются детерминизации.

В силу последних двух замечаний, несмотря на бо́льшую сложность недетерминированных конечных автоматов, для задач, связанных с обработкой текста, преимущественно применяются именно НКА.

2.2 Виды конечных автоматов

По способу формирования функций выхода выделяют автоматы Мили и Мура. 

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

  (4)

  (5)

Особенностью автомата Мили является то, что функция выходов является двухаргументной и символ в выходном канале y[] обнаруживается только при наличии символа во входном канале x[]. Функциональная схема не отличается от схемы абстрактного автомата .\

       

Рис. 2. Функциональная схема автомата Мили.

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

  (6)

  

  (7)

Особенностью автомата Мура является то, что символ y[]  в выходном канале существует все время пока автомат находится в состоянии q[].

Рис. 3 Функциональная схема автомата Мура.

Объединение автоматов Мили и Мура представляет С-автомат, для которого схема рекуррентных соотношений имеет вид:

  (7)

Потребность такого автомата возникает при формировании автоматных сетей

.

Рис.4. Функциональная схема С-автомата.

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

Пусть X=. Тогда математическая модель и система рекуррентных соотношений  имеют вид:

  (8)

  (9)

Рис.5. Функциональная схема порождающего автомата.

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

Пусть Y=. Тогда математическая модель и система рекуррентных соотношений  имеют вид:

  (10)

 q[1] = (q[];x[]); (11)

Рис. 6. Функциональная схема распознающего автомата.

Особенностью функционирования такого автомата является распознавание в последовательности изменений аргумента функции переходов значения (qi[];xi[]) и перевод автомата в заключительное состояние qk. С помощью такого автомата обнаруживают заданные возмущения со стороны объектов внешней среды или распознают заданную последовательность входных символов. Поэтому такие автоматы называют распознающими.  Часто и автомат Мура представляют автоматом без выхода, так как его выходной сигнал эквивалентен состоянию автомата.

Пусть Q=. Тогда математическая модель и система рекуррентных соотношений  имеют вид:

  (12)

 y[] = (x[]); (13)

.

Рис. 7. Функциональная схема  комбинационного автомата.

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


Глава 2 Конечный автомат как элемент автоматного программирования

2.1 Описание конечного автомата

Автоматы удобно описывать с помощью таблиц, а для наглядности использовать  графы. При табличном описании задают две таблицы, одна из которых раскрывает функцию переходов  QX)Q а другая - функцию выходов QX)Y Число строк таблиц m равно числу  состояний автомата, т.е. m = Q . Число столбцов таблиц n равно числу символов входного алфавита, т.е. n = X . В позиции первой таблицы записывают значения  очередных состояний автомата q[1]Q, в которые он переходит для каждой пары (q[];x[])QX). В позиции второй таблицы записывают значения символов выходного алфавита y[]Y, которые генерирует автомат для каждой пары (q[];x[])QX). Если в таблицах 1 и 2 определены значения q[1]Q и y[]Y для каждой пары (q[];x[])QX), то есть заполнены все позиции таблиц, то  дано описание детерминированного автомата.

Таблица 1.

Таблица 2.

Детерминированный автомат

: QX) Q

Детерминированный автомат

QX)Y

текущее состояние qQ

символы входного алфавита xX

текущее состояние qQ

символы входного алфавита xX

x1

x2

xn

x1

x2

xn

q1

q

q

q

q1

y

y

y

q2

q

q

q

q2

y

y

y

qm

q

q

q

qm

y

y

y

Обычно эти таблицы совмещают в одну, которая раскрывает оператор поведения : QX) QY) В позициях этой таблицы записывают пары (q[1];y[]) для каждой пары (q[];x[]).

Таблица 3.

Таблица 4.

Детерминированный автомат Мили

: QX) QY)

Детерминированный автомат Мура

QX)Q; QY

текущее состояние qQ

символы входного алфавита xX

текущее состояние qQ

символы входного алфавита xX

выход

x1

x2

xn

x1

x2

xn

yY

q1

q;y

q;y

q;y

q1

q

q

q

y1

q2

q;y

q;y

q;y

q2

q

q

q

y2

qm

q;y

q;y

q;y

qm

q

q

q

ym

Таблицы абстрактного автомата совпадают с таблицами автомата Мили. Поэтому таблица 3 описывает поведение автомата Мили. Таблица автомата Мура (см. таблицу 4) несколько отличается от таблицы автомата Мили, так как QY. Значение выходного символа приписывают, как метку, состоянию автомата.  Описание С-автомата есть объединение таблиц 3 и 4. Так как в таблицах 3 и 4 определены все позиции, то такими таблицами дано описание детерминированных автоматов.

В практике проектирования автоматов встречаются случаи, когда функции переходов и/или выходов не определены для некоторых значений символов входного алфавита. В этом случае говорят, что автомат недетерминированный или частично определенный. При описании таких автоматов неопределенные позиции таблиц помечаются символом "*". Например, в таблицах 5, 6, 7 и 8 приведено описание недетерминированных автоматов.

Поведение автомата удобно анализировать с помощью графов, вершинами которого являются элементы множества qQ. Тогда вершина-исток есть образ текущего состояния q[], а вершина-сток - образ очередного состояния q[1]. Дуги отображают переход автомата из одного состояния в другое (q[];q[1]) под воздействием x[]X. Для описания автомата с помощью графов  удобно воспользоваться таблицами соединений состояний автомата. Строки и столбцы такой таблицы представляют символы qQ .Следовательно, число строк и столбцов таблицы равно m. Строки этой таблицы характеризуют текущее состояние, т.е. q[], а столбцы - очередное, т.е. q[1]. Позиции таблицы заполняют значениями пары (x[]/y[]) для соответствующего перехода автомата из текущего состояния в очередное.

Таблица 5.

Таблица 6.

Недетерминированный автомат

: QX) Q

Недетерминированный автомат

QX)Y

текущее состояние qQ

символы входного алфавита xX

текущее состояние qQ

символы входного алфавита xX

x1

x2

xn

x1

x2

xn

q1

q

*

q

q1

y

*

y

q2

q

q

*

q2

*

y

y

qm

*

q

q

qm

*

y

*

Таблица 7.

Таблица 8.

Недетерминированный автомат Мили

: QX) QY)

Недетерминированный автомат Мура

QX)Q; QY

текущее состояние qQ

символы входного алфавита xX

текущее состояние qQ

символы входного алфавита xX

выход

x1

x2

xn

x1

x2

xn

yY

q1

q;y

*;*

q;y

q1

q

*

q

y1

q2

q;*

q;y

*;y

q2

q

q

*

*

qm

*;*

q;y

q;*

qm

*

q

q

ym

Таблицей 9 дано описание соединений состояний автомата Мили, а таблицей 10 - автомата Мура. Для автомата Мили на дугах графа указывают пару (входной символ/выходной символ). Для автомата Мура на дугах графа указывают только входной символ, определяющий переход автомата из одного состояния в другое, а выходной символ y, приписывают к каждой вершине графа.

При начертании графа детерминированного автомата следует соблюдать следующие условия:1) для каждого символа xX есть дуга, исходящая из вершины qQ; 2) каждый символ xX у каждой вершины-истока qQ принадлежит только одной дуге; 3) если между двумя вершинами qQ существует несколько дуг, что может быть обусловлено переходом автомата из состояния qsQ в состояние qtQ при различных символах на входе, то есть xi xj, то эти дуги могут быть заменены одной дугой с указанием дизъюнктивной связи этих состояний (например, если yuyv, то на дуге следует указать (xi/yuxj/yv);.если yu=yv=y, то - (xixj)/y).

Таблица 9.

Таблица 10.

Соединение состояний автомата Мили

: QX) QY)

Соединение состояний автомата Мура

QX)Q; QY

текущее состояние qQ

очередное состояние qQ

текущее состояние qQ

очередное состояние qQ

выход

yY

q1

q2

qm

q1

q2

qm

q1

x/y

x/y

x/y

q1

x

x

x

y1

q2

x/y

x/y

x/y

q2

x

x

x

y2

qm

x/y

x/y

x/y

qm

x

x

x

ym

2.2 ПРИМЕРЫ КОНЕЧНЫХ АВТОМАТОВ

Пример 1.

. Детерминированный автомат Мили задан таблицей 11.

Таблица 11.

Детерминированный автомат Мили

: QX) QY)

текущее состояние qQ

символы входного алфавита xiX

x1

x2

x3

x4

q1

q2;y1

q3;y1

q4;y1

q1;y3

q2

q3;y3

q4;y1

q1;y2

q2;y2

q3

q2;y1

q3;y2

q1;y1

q2;y3

q4

q4;y2

q1;y1

q2;y2

q1;y1

Составить таблицу соединения состояний автомата и начертить граф. Найти генерируемые автоматом слова для различных начальных состояний,если на входе автомата задано слово  = (x1x2x3x4x4x3x2x1).

Для формирования таблицы соединения состояний автомата находим по таблице 11 число строк и столбцов. Это число равно 4. Имена строк и столбцов заданы именами элементов множества qQ. В позициях таблицы будут значения (x/y), соответствующие переходу из состояния q[] в состояние q[1]. Следует обратить внимание, что переход из состояния q3 в q2 обусловлен двумя входными символами (x1 и x4), а для каждой пары (q3;x1) и (q3;x4) автомат генерирует в выходном канале особый символ (y1 и y3). Поэтому на дуге (q3;q2) следует указать (x1/y1x4/y3). Переход из состояния q4 в q1 обусловлен также двумя входными символами (x2 и x4), но автомат генерирует только один символ на выходе y1. Поэтому на дуге (q4;q1) следует указать (x2x4)/y1. Остальные переходы автомата обусловлены появлением только одного входного символа. Таблица 12 представляет таблицу соединений состояний автомата Мили, а рис. 8 – его граф.

Таблица 1.12.

Соединение состояний автомата Мили

: QX) QY)

текущее состояние qQ

очередное состояние qQ

q1

q2

q3

q4

q1

x4/y3

x1/y1

x2/y1

x3/y1

q2

x3/y2

x4/y2

x1/y3

x2/y1

q3

x3/y1

(x1/y1)(x4/y3)

x2/y2

q4

(x2x4)/y1

x3/y2

x1/y2

Рис.8 Граф детерминированного автомата Мили.

Для поиска слов  при различных начальных условиях необходимо проследить всю последовательность изменения состояний автомата для каждого очередного символа слова :

пусть q1=q0, тогда   

[]: x1[1] x2[2] x3[3] x4[4] x4[5] x3[6] x2[7] x1[8]

q[1]: q1[1] q2[2] q4[3] q2[4] q2[5] q2[6] q1[7] q3[8] q2[9]

[]: y1[1] y1[2] y2[3] y2[4] y2[5] y2[6] y1[7] y1[8],

то есть (y1y1y2y2y2y2y1y1);

пусть q2=q0, тогда

[]: x1[1] x2[2] x3[3] x4[4] x4[5] x3[6] x2[7] x1[8]

q[1]: q2[1] q3[2] q3[3] q1[4] q1[5] q1[6] q4[7] q1[8] q2[9]

[]: y3[1] y2[2] y1[3] y3[4] y3[5] y1[6] y1[7] y1[8],

то есть (y3y2y1y3y3y1y1y1);

пусть q3=q0, тогда

[]: x1[1] x2[2] x3[3] x4[4] x4[5] x3[6] x2[7] x1[8]

q[1]: q3[1] q2[2] q4[3] q2[4] q2[5] q2[6] q1[7] q3[8] q2[9]

[]: y1[1] y1[2] y2[3] y2[4] y2[5] y2[6] y1[7] y1[8],

то есть (y1y1y2y2y2y2y1y1);

пусть q4=q0, тогда

[]: x1[1] x2[2] x3[3] x4[4] x4[5] x3[6] x2[7] x1[8]

q[1]: q4[1] q4[2] q1[3] q4[4] q1[5] q1[6] q4[7] q1[8] q2[9]

[]: y2[1] y1[2] y1[3] y1[4] y3[5] y1[6] y1[7] y1[8],

то есть (y2y1y1y1y3y1y1y1).

Анализ показывает, что при различных начальных состояниях реакция автомата на одинаковые слова различна. Это подтверждает необходимость указания начального состояния qi=q0. Только в этом случае каждому слову на входе автомата найдется единственный образ на выходе.

Пример 1.2.

 Детерминированный автомат Мура задан таблицей поведения (см.таблицу 13).

Таблица 13.

Детерминированный автомат Мура

QX)Q; QY

текущее состояние qQ

символы входного алфавита xX

выход

yY

x1

x2

x3

xn

q1

q2

q3

q4

q1

y1

q2

q3

q4

q1

q2

y3

q3

q2

q3

q1

q2

y2

qm

q4

q1

q2

q1

y1

Составить таблицу соединения состояний автомата и начертить граф. Найти генерируемые автоматом слова для различных начальных состояний,если на входе автомата задано слово  = (x1x2x3x4x4x3x2x1).

Для формирования таблицы соединения состояний автомата находим по таблице 13 число строк и столбцов. Это число равно 4. Имена строк и столбцов заданы именами элементов множества qQ. Элементами таблицы соединения состояний автомата будут значения x, соответствующие переходу из состояния q[] в состояние q[1]. Переход из состояния q3 в q2 обусловлен двумя входными символами (x1 и x4). Поэтому на дуге (q3;q2) cледует указать (x1x4). Переход из состояния q4 в q1 обусловлен также двумя входными символами (x2 и x4). Поэтому на дуге (q4;q1) cледует указать (x2x4). Таблица 14 представляет таблицу соединений состояний автомата Мура, а рис.9 - его граф.

Tаблица 14

Соединение состояний автомата Мура

QX)Q; QY

текущее состояние qQ

очередное состояние qQ

выход

yY

q1

q2

q3

q4

q1

x4

x1

x2

x3

y1

q2

x3

x4

x1

x2

y3

q3

x3

(x1x4)

x2

y2

q4

(x2x4)

x3

x1

y1

Рис.9 Граф детерминированного автомата Мура.

Для поиска слов  при различных начальных условиях необходимо проследить всю последовательность изменения состояний автомата для каждого очередного символа слова :

пусть q1=q0, тогда

[]: x1[1] x2[2] x3[3] x4[4] x4[5] x3[6] x2[7] x1[8]

q[1]: q1[1] q2[2] q4[3] q2[4] q2[5] q2[6] q1[7] q3[8] q2[9]

[]: y1[1] y3[2] y1[3] y3[4] y3[5] y3[6] y1[7] y2[8],

то есть (y1y3y1y3y3y3y1y2);

пусть q2=q0, тогда

[]: x1[1] x2[2] x3[3] x4[4] x4[5] x3[6] x2[7] x1[8]

q[1]: q2[1] q3[2] q3[3] q1[4] q1[5] q1[6] q4[7] q1[8] q2[9]

[]: y3[1] y2[2] y2[3] y1[4] y1[5] y1[6] y1[7] y1[8],

то есть (y3y2y2y1y1y1y1y1);

пусть q3=q0, тогда

[]: x1[1] x2[2] x3[3] x4[4] x4[5] x3[6] x2[7] x1[8]

q[1]: q3[1] q2[2] q4[3] q2[4] q2[5] q2[6] q1[7] q3[8] q2[9]

[]: y2[1] y3[2] y1[3] y3[4] y3[5] y3[6] y1[7] y2[8],

то есть (y2y3y1y3y3y3y1y2);

пусть q4=q0, тогда

[]: x1[1] x2[2] x3[3] x4[4] x4[5] x3[6] x2[7] x1[8]

q[1]: q4[1] q4[2] q1[3] q4[4] q1[5] q1[6] q4[7] q1[8] q2[9]

[]: y1[1] y1[2] y1[3] y1[4] y1[5] y1[6] y1[7] y1[8]

то есть (y1y1y1y1y1y1y1y1).

Этот пример также подтверждает необходимость указания начального состояния q=q0.

Пример 1.3. 

Недетерминированный автомат Мили задан таблицей поведения (см. таблицу 15).

Составить таблицу соединения состояний автомата и начертить граф. Найти генерируемые автоматом слова для различных  и различных начальных состояний.

Элементами таблицы соединения состояний автомата будут значения (x/y), соответствующие переходу из состояния q[] в состояние q[1]. Следует обратить внимание, что не определены переходы из состояния q2 для входного символа x1, из состояния q3 для входного символа x2 и из состояния q4 для входного символа x4.

Не определены также значения символов на выходе для состояния q1 и входного символа x2, для состояния q2 и входного символа x4 и для состояния q3 и входного символа x2. Таблица 16 представляет таблицу соединений состояний недетерминированного автомата Мили, а рис.10 - его граф.

Таблица 15.

Недетерминированный автомат Мили

: QX) QY)

текущее состояние qQ

символы входного алфавита xiX

x1

x2

x3

x4

q1

q2;y1

q3;*

q4;y1

q1;y3

q2

*;y3

q4;y1

q1;y2

q2;*

q3

q2;y1

*;*

q1;y1

q2;y3

q4

q4;y2

q1;y1

q2;y2

*;y1

Таблица 16.

Соединение состояний автомата Мили

: QX) QY)

текущее состояние qQ

очередное состояние qQ

q1

q2

q3

q4

q1

x4/y3

x1/y1

x2/*

x3/y1

q2

x3/y2

x4/*

x2/y1

q3

x3/y1

(x1/y1)(x4/y3)

q4

x2/y1

x3/y2

x1/y2

Для поиска слов , генерируемых недетерминированным автоматом Мура также необходимо проследить последовательность изменения состояний автомата для каждого очередного символа слова :

пусть q1=q0 и = (x1x2x3x3x3x2x4x4), тогда

[]: x1[1] x2[2] x3[3] x3[4] x3[5] x2[6] x4[7] x4[8]

q[1]: q1[1] q2[2] q4[3] q2[4] q1[5] q4[6] q1[7] q1[8] q1[9]

[]: y1[1] y1[2] y2[3] y2[4] y1[5] y1[6] y3[7] y3[8],

то есть (y1y1y2y2y1y1y3y3);

Рис.10 Граф недетерминированного автомата Мили.

пусть q1=q0 и = (x2x2x3x4x4x3x2x1), тогда

[]: x2[1] x2[2] x3[3] …

q[1]: q1[1] q3[2] *

[]: *[1] *[2] …,

то есть (* * … и автомат "зависает" на третьем символе слова ;

пусть q1=q0 и = (x2x2x3x4x4x3x2x1), тогда

[]: x1[1] x4[2] x3[3] x2[4] x3[5] x2[6] x4[7] x4[8]

q[1]: q1[1] q2[2] q2[3] q1[4] q3[5] q1[6] q3[7] q2[8] q2[9]

[]: y1[1] *[2] y2[3] * [4] y1[5] * [6] y3[7] * [8],

то есть (y1*y2*y*y*) содержит четыре символа "*";

пусть q2=q0 и = (x1x4x3x2x3x2x4x4), тогда

[]:   x1[1] x4[2] …

q[1]: q2[1] *.[2] …

[]:   y3[1]  …

то есть (y3 … и автомат "зависает" на втором символе слова .

Анализ показывает, что недетерминированный автомат Мили может

1) генерировать на выходе последовательности символов, равные последовательностям символов на входе, но содержащие неопределенные символы "*", что разрушает образ слова ;

2) "зависать" в состоянии, для которого не определен переход в очередное состояние.

Пример 1.4.

Недетерминированный автомат Мура задан таблицей поведения (см. таблицу 17).

Таблица 17.

Недетерминированный автомат Мура

QX)Q; QY

текущее состояние qQ

символы входного алфавита xX

выход

yY

x1

x2

x3

xn

q1

q2

q3

q4

q1

y1

q2

*

q4

q1

q2

*

q3

q2

*

q1

q2

y2

qm

q4

q1

q2

*

y1

Составить таблицу соединения состояний автомата и начертить граф. Найти генерируемые автоматом слова для различных  и различных начальных состояний.

Элементами таблицы соединения состояний автомата будут значения x, соответствующие переходу из состояния q[] в состояние q[1]. Следует обратить внимание, что не определены переходы из состояния q2 для входного символа x1, из состояния q3 для входного символа x2 и из состояния q4 для входного символа x4. Не определено также значение символа на выходе для состояния q2. Таблица 18 представляет таблицу соединений состояний недетерминированного автомата Мура, а рис. 11 - его граф.

Таблица 18.

Соединение состояний автомата Мура

QX)Q; QY

текущее состояние qQ

очередное состояние qQ

выход

yY

q1

q2

q3

q4

q1

x4

x1

x2

x3

y1

q2

x3

x4

*

x2

*

q3

x3

(x1x4)

*

y2

q4

x2

x3

x1

y1

Рис.11. Граф недетерминированного автомата Мура.

Для поиска слов  при различных начальных условиях необходимо проследить всю последовательность изменения состояний автомата для каждого очередного символа слова :

пусть q1=q0 и = (x2x3x2x3x3x1x2x4), тогда

[]: x2[1] x3[2] x2[3] x3[4] x3[5] x1[6] x2[7] x4[8]

q[1]: q1[1] q3[2] q1[3] q3[4] q1[5] q4[6] q4[7] q1[8] q1[9]

[]: y1[1] y2[2] y1[3] y2[4] y1[5] y1[6] y1[7] y1[8],

то есть (y1y2y1y2y1y1y1y1);

пусть q2=q0 и = (x2x3x1x4x4x3x2x1), тогда

[]: x2[1] x3[2] x1[3] x4[4] …

q[1]: q2[1] q4[2] q2[3] * [4] …

[]: * [1] y1[2] * [3] …,

то есть (*y1* … и автомат "зависает" на четвертом символе слова ;

пусть q1=q0 и = (x1x2x3x3x1x3x1x3), тогда

[]: x1[1] x2[2] x3[3] x3[4] x1[5] x3[6] x1[7] x3[8]

q[1]: q1[1] q2[2] q4[3] q2[4] q1[5] q2[6] q1[7] q2[8] q1[9]

[]: y1[1] *[2] y1[3] * [4] y1[5] * [6] y1[7] * [8],

то есть (y1*y1*y1*y1*) содержит четыре символа про"*";

пусть q2=q0 и = (x1x4x3x2x3x2x4x4), тогда

[]:   x1[1] x4[2] …

q[1]: q2[1] * [2] …

[]: * …,

то есть (* …  и автомат  "зависает" на втором символе слова .

Анализ показывает, что для недетерминированного автомата Мура характерны такие же недостатки, как для недетерминированного автомата Мили

Заключение

Автоматное  программирование, иначе называемое «программирование от состояний» или  «программирование с явным выделением состояний» — это метод разработки программного обеспечения, основанный на расширенной модели конечных автоматов и ориентированный на создание широкого класса приложений.

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

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

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

 

БИблиографический список

  1.  Leveson N. G., Clark S. T. An Investigation of the Therac-25 Accidents. // IEEE Computer. 26(7):18-41, July 1993.
  2.  Дейкстра Э. Дисциплина программирования / Дал У., Дейкстра Э., Хоор К. Структурное программирование. М.: Мир. 2011.
  3.  Кларк Э., Грамберг О., Пелед Д. Верификация моделей программ: Model Checking. М.: МЦНМО, 2012. 416 с.
  4.  Pnueli A. The Temporal Logic of Programs // Proceedings of the 18th IEEE Symposium on Foundation of Computer Science. 2007.
  5.  Поликарпова Н., Шалыто А. Автоматное программирование. СПб.: Питер, 2009. 176 с.
  6.  Вельдер С. Э., Шалыто А. А. О верификации автоматных программ на основе метода Model Checking // Информационно-управляющие системы. 2012. № 3, с. 27–38.
  7.  Васильева К. А., Кузьмин Е. В. Верификация автоматных программ с использованием LTL // Моделирование и анализ информационных систем. Ярославль: ЯрГУ. 2007. Т. 14, № 1, с. 3–14.
  8.  Abran A., Swebok M. J. Guide to the Software Engineering Body of Knowledge. http://www.swebok.org/
  9.  Kaner C., Falk J., Nguyen Q. Testing Computer Software. NY: Wiley. 2009.
  10.  Бурдонов И. Б., Косачев А. С., Кулямин В. В. Неизбыточные алгоритмы обхода ориентированных графов. Детерминированный случай // Программирование. 2010, № 5.

2 Васильева К. А., Кузьмин Е. В. Верификация автоматных программ с использованием LTL // Моделирование и анализ информационных систем. Ярославль: ЯрГУ. 2007. Т. 14, № 1, с. 3–14.

3 Поликарпова Н., Шалыто А. Автоматное программирование. СПб.: Питер, 2009. 176 с.

4 Шень А. Программирование: теоремы и задачи. М.: МЦНМО, 1995.


 

А также другие работы, которые могут Вас заинтересовать

9558. Упражнения для тренировки речевого дыхания 15.59 KB
  Упражнения для тренировки речевого дыхания Для речи обычного физиологического дыхания не хватает. Речь и чтение вслух требуют большего количества воздуха, постоянного дыхательного запаса, экономного расходования его и своевременного возобновления. В...
9559. Строение и функции голосового отдела речевого аппарата 12.62 KB
  Строение и функции голосового отдела речевого аппарата. Речевой аппарат состоит из двух отделов: центрального и периферического. К центральному отделу относиться головной мозг с его корой подкорковых узлами, проводящими путями и ядрами соответствующ...
9560. Механизм голосообразования 12.87 KB
  Механизм голосообразования Голос - это совокупность разнообразных по своим характеристикам звуков, возникающих в результате колебания эластических голосовых складок. Звук голоса - колебания частиц воздуха, распространяющихся в виде волн сгущения и р...
9561. Особенности произношения имен и отчеств 118.56 KB
  Особенности произношения имен и отчеств Сочетание имени и отчества употребляется в различных ситуациях как в письменной,так и устной речи.Многие русские имена и отчества имеют варианты произношения,которые желательно учитывать в то...
9562. Способы подачи голоса (Атака звука) 26.5 KB
  Способы подачи голоса (Атака звука). Большое значение для качества голоса имеет способ его подачи - атака звука. Различают три вида атаки: твердую, мягкую и придыхательную. Твердая атака - голосовая щель плотно замыкается перед началом звука...
9563. Интонация как сложное акустическое явление 14.5 KB
  Интонация как сложное акустическое явление Интонация – сложное явление. Она включает в себя четыре акустических компонента: тон голоса, интенсивность или силу звучания, его длительность и тембр. Тон голоса - высота гласных, сонорных и звон...
9564. Логическая пауза и логическое ударение 17.55 KB
  Логическая пауза и логическое ударение. Каждое предложение звучащей речи делится по смыслу на части, состоящие из нескольких слов или даже из одного слова. Такие смысловые группы внутри предложения называются речевыми тактами, или синтагмами (речевы...
9565. Национальная Экономика 74 KB
  Национальная Экономика. Национальная Экономика- это сложная взаимосвязанная система, охватывающая весь социально- экономический комплекс страны на региональном и национальном уровнях. Для характеристики национальной экономики используется функ...
9566. Макроэкономическое равновесие. Совокупный спрос и факторы его определяющие 68.5 KB
  Макроэкономическое равновесие. Совокупный спрос и факторы его определяющие. Совокупный спрос представляет собой сумму всех расходов на конечные товары и услуги, произведенные в экономике. Отражает связь между объемом совокупного выпуска, на который...