Главная страница Случайная лекция Мы поможем в написании ваших работ! Порталы: БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика Мы поможем в написании ваших работ! |
ПРИМЕРЫ КОНЕЧНЫХ АВТОМАТОВ
Пример 1. . Детерминированный автомат Мили задан таблицей 11.
Таблица 11.
Составить таблицу соединения состояний автомата и начертить граф. Найти генерируемые автоматом слова для различных начальных состояний,если на входе автомата задано слово = (x1x2x3x4x4x3x2x1). Для формирования таблицы соединения состояний автомата находим по таблице 11 число строк и столбцов. Это число равно 4. Имена строк и столбцов заданы именами элементов множества qQ. В позициях таблицы будут значения (x/y), соответствующие переходу из состояния q[] в состояние q[1]. Следует обратить внимание, что переход из состояния q3 в q2 обусловлен двумя входными символами (x1 и x4), а для каждой пары (q3;x1) и (q3;x4) автомат генерирует в выходном канале особый символ (y1 и y3). Поэтому на дуге (q3;q2) следует указать (x1/y1x4/y3). Переход из состояния q4 в q1 обусловлен также двумя входными символами (x2 и x4), но автомат генерирует только один символ на выходе y1. Поэтому на дуге (q4;q1) следует указать (x2x4)/y1. Остальные переходы автомата обусловлены появлением только одного входного символа. Таблица 12 представляет таблицу соединений состояний автомата Мили, а рис. 8 – его граф. Таблица 1.12.
Рис.8 Граф детерминированного автомата Мили.
Для поиска слов при различных начальных условиях необходимо проследить всю последовательность изменения состояний автомата для каждого очередного символа слова : пусть q1=q0, тогда a[t]: x1[1] x2[2] x3[3] x4[4] x4[5] x3[6] x2[7] x1[8] q[t+1]: q1[1] q2[2] q4[3] q2[4] q2[5] q2[6] q1[7] q3[8] q2[9] b[t]: y1[1] y1[2] y2[3] y2[4] y2[5] y2[6] y1[7] y1[8], то есть b=(y1y1y2y2y2y2y1y1); пусть q2=q0, тогда a[t]: x1[1] x2[2] x3[3] x4[4] x4[5] x3[6] x2[7] x1[8] q[t+1]: q2[1] q3[2] q3[3] q1[4] q1[5] q1[6] q4[7] q1[8] q2[9] b[t]: y3[1] y2[2] y1[3] y3[4] y3[5] y1[6] y1[7] y1[8], то есть b=(y3y2y1y3y3y1y1y1); пусть q3=q0, тогда a[t]: x1[1] x2[2] x3[3] x4[4] x4[5] x3[6] x2[7] x1[8] q[t+1]: q3[1] q2[2] q4[3] q2[4] q2[5] q2[6] q1[7] q3[8] q2[9] b[t]: y1[1] y1[2] y2[3] y2[4] y2[5] y2[6] y1[7] y1[8], то есть b=(y1y1y2y2y2y2y1y1); пусть q4=q0, тогда a[t]: x1[1] x2[2] x3[3] x4[4] x4[5] x3[6] x2[7] x1[8] q[t+1]: q4[1] q4[2] q1[3] q4[4] q1[5] q1[6] q4[7] q1[8] q2[9] b[t]: y2[1] y1[2] y1[3] y1[4] y3[5] y1[6] y1[7] y1[8], то есть b=(y2y1y1y1y3y1y1y1). Анализ показывает, что при различных начальных состояниях реакция автомата на одинаковые слова различна. Это подтверждает необходимость указания начального состояния qi=q0. Только в этом случае каждому слову на входе автомата найдется единственный образ на выходе.
Пример 1.2. Детерминированный автомат Мура задан таблицей поведения (см.таблицу 13).
Таблица 13.
Составить таблицу соединения состояний автомата и начертить граф. Найти генерируемые автоматом слова для различных начальных состояний,если на входе автомата задано слово = (x1x2x3x4x4x3x2x1). Для формирования таблицы соединения состояний автомата находим по таблице 13 число строк и столбцов. Это число равно 4. Имена строк и столбцов заданы именами элементов множества qQ. Элементами таблицы соединения состояний автомата будут значения x, соответствующие переходу из состояния q[] в состояние q[1]. Переход из состояния q3 в q2 обусловлен двумя входными символами (x1 и x4). Поэтому на дуге (q3;q2) cледует указать (x1x4). Переход из состояния q4 в q1 обусловлен также двумя входными символами (x2 и x4). Поэтому на дуге (q4;q1) cледует указать (x2x4). Таблица 14 представляет таблицу соединений состояний автомата Мура, а рис.9 - его граф.
Tаблица 14
Рис.9 Граф детерминированного автомата Мура. Для поиска слов при различных начальных условиях необходимо проследить всю последовательность изменения состояний автомата для каждого очередного символа слова : пусть q1=q0, тогда a[t]: x1[1] x2[2] x3[3] x4[4] x4[5] x3[6] x2[7] x1[8] q[t+1]: q1[1] q2[2] q4[3] q2[4] q2[5] q2[6] q1[7] q3[8] q2[9] b[t]: y1[1] y3[2] y1[3] y3[4] y3[5] y3[6] y1[7] y2[8], то есть b=(y1y3y1y3y3y3y1y2); пусть q2=q0, тогда a[t]: x1[1] x2[2] x3[3] x4[4] x4[5] x3[6] x2[7] x1[8] q[t+1]: q2[1] q3[2] q3[3] q1[4] q1[5] q1[6] q4[7] q1[8] q2[9] b[t]: y3[1] y2[2] y2[3] y1[4] y1[5] y1[6] y1[7] y1[8], то есть b=(y3y2y2y1y1y1y1y1); пусть q3=q0, тогда a[t]: x1[1] x2[2] x3[3] x4[4] x4[5] x3[6] x2[7] x1[8] q[t+1]: q3[1] q2[2] q4[3] q2[4] q2[5] q2[6] q1[7] q3[8] q2[9] b[t]: y2[1] y3[2] y1[3] y3[4] y3[5] y3[6] y1[7] y2[8], то есть b=(y2y3y1y3y3y3y1y2); пусть q4=q0, тогда a[t]: x1[1] x2[2] x3[3] x4[4] x4[5] x3[6] x2[7] x1[8] q[t+1]: q4[1] q4[2] q1[3] q4[4] q1[5] q1[6] q4[7] q1[8] q2[9] b[t]: y1[1] y1[2] y1[3] y1[4] y1[5] y1[6] y1[7] y1[8] то есть b=(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.
Таблица 16.
Для поиска слов , генерируемых недетерминированным автоматом Мура также необходимо проследить последовательность изменения состояний автомата для каждого очередного символа слова : пусть q1=q0 и a= (x1x2x3x3x3x2x4x4), тогда a[t]: x1[1] x2[2] x3[3] x3[4] x3[5] x2[6] x4[7] x4[8] q[t+1]: q1[1] q2[2] q4[3] q2[4] q1[5] q4[6] q1[7] q1[8] q1[9] b[t]: y1[1] y1[2] y2[3] y2[4] y1[5] y1[6] y3[7] y3[8], то есть b=(y1y1y2y2y1y1y3y3);
Рис.10 Граф недетерминированного автомата Мили. пусть q1=q0 и a= (x2x2x3x4x4x3x2x1), тогда a[t]:........... x2[1] x2[2] x3[3] … q[t+1]:....... q1[1] q3[2] * … b[t]:.......... *[1] *[2] …, то есть b= (* * … и автомат "зависает" на третьем символе слова a; пусть q1=q0 и a= (x2x2x3x4x4x3x2x1), тогда a[t]: x1[1] x4[2] x3[3] x2[4] x3[5] x2[6] x4[7] x4[8] q[t+1]: q1[1] q2[2] q2[3] q1[4] q3[5] q1[6] q3[7] q2[8] q2[9] b[t]: y1[1] *[2] y2[3] * [4] y1[5] * [6] y3[7] * [8], то есть b=(y1*y2*y*y*) содержит четыре символа "*"; пусть q2=q0 и a= (x1x4x3x2x3x2x4x4), тогда a[t]: x1[1] x4[2] … q[t+1]: q2[1] *.[2] … b[t]: y3[1] … то есть b= (y3 … и автомат "зависает" на втором символе слова a. Анализ показывает, что недетерминированный автомат Мили может 1) генерировать на выходе последовательности символов, равные последовательностям символов на входе, но содержащие неопределенные символы "*", что разрушает образ слова ; 2) "зависать" в состоянии, для которого не определен переход в очередное состояние.
Пример 1.4. Недетерминированный автомат Мура задан таблицей поведения (см. таблицу 17).
Таблица 17.
Составить таблицу соединения состояний автомата и начертить граф. Найти генерируемые автоматом слова для различных и различных начальных состояний. Элементами таблицы соединения состояний автомата будут значения x, соответствующие переходу из состояния q[] в состояние q[1]. Следует обратить внимание, что не определены переходы из состояния q2 для входного символа x1, из состояния q3 для входного символа x2 и из состояния q4 для входного символа x4. Не определено также значение символа на выходе для состояния q2. Таблица 18 представляет таблицу соединений состояний недетерминированного автомата Мура, а рис. 11 - его граф.
Таблица 18.
Рис.11. Граф недетерминированного автомата Мура. Для поиска слов при различных начальных условиях необходимо проследить всю последовательность изменения состояний автомата для каждого очередного символа слова : пусть q1=q0 и a= (x2x3x2x3x3x1x2x4), тогда a[t]: x2[1] x3[2] x2[3] x3[4] x3[5] x1[6] x2[7] x4[8] q[t+1]: q1[1] q3[2] q1[3] q3[4] q1[5] q4[6] q4[7] q1[8] q1[9] b[t]: y1[1] y2[2] y1[3] y2[4] y1[5] y1[6] y1[7] y1[8], то есть b= (y1y2y1y2y1y1y1y1); пусть q2=q0 и a= (x2x3x1x4x4x3x2x1), тогда a[t]: x2[1] x3[2] x1[3] x4[4] … q[t+1]: q2[1] q4[2] q2[3] * [4] … b[t]: * [1] y1[2] * [3] …, то есть b= (*y1* … и автомат "зависает" на четвертом символе слова a; пусть q1=q0 и a= (x1x2x3x3x1x3x1x3), тогда a[t]: x1[1] x2[2] x3[3] x3[4] x1[5] x3[6] x1[7] x3[8] q[t+1]: q1[1] q2[2] q4[3] q2[4] q1[5] q2[6] q1[7] q2[8] q1[9] b[t]: y1[1] *[2] y1[3] * [4] y1[5] * [6] y1[7] * [8], то есть b=(y1*y1*y1*y1*) содержит четыре символа про"*"; пусть q2=q0 и a= (x1x4x3x2x3x2x4x4), тогда a[t]: x1[1] x4[2] … q[t+1]: q2[1] * [2] … b[t]: * …, то есть b= (* … и автомат "зависает" на втором символе слова a. Анализ показывает, что для недетерминированного автомата Мура характерны такие же недостатки, как для недетерминированного автомата Мили
Заключение Автоматное программирование, иначе называемое «программирование от состояний» или «программирование с явным выделением состояний» — это метод разработки программного обеспечения, основанный на расширенной модели конечных автоматов и ориентированный на создание широкого класса приложений. Автоматное программирование имеет достаточно богатую историю развития. Различные аспекты и понятия, связанные с этой идеей, рассматривались в работах многих авторов с самых разных точек зрения и применительно к различным конкретным вопросам. Программирование от состояний рассматривается как один из основных стилей программирования. Однако полного и исчерпывающего изложения сути автоматного программирования как парадигмы и метода разработки программных систем в целом в настоящий момент нет. Автоматное программирование широко применяется при построении лексических анализаторов (классические конечные автоматы) и синтаксических анализаторов (автоматы с магазинной памятью). Автоматы используются также и при решении многих других задач, например, при реализации протоколов. В работе ставилась цель описать теоретическое значение и понятия автоматного программирования . Во второй главе приведены примеры конечных автоматов Миля и Мура.
Дата добавления: 2015-07-26; просмотров: 362; Нарушение авторских прав Мы поможем в написании ваших работ! |