Студопедия

Главная страница Случайная лекция


Мы поможем в написании ваших работ!

Порталы:

БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика



Мы поможем в написании ваших работ!




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

Пример 1.

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

 

Таблица 11.

Детерминированный автомат Мили (y;j): (QÄX) ® (QÄY)
текущее состояние qÎQ символы входного алфавита xiÎX
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.

Соединение состояний автомата Мили (y;j): (QÄX) ® (QÄY)
текущее состояние qÎQ очередное состояние qÎQ
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 (x2Úx4)/y1 x3/y2 x1/y2

 

Рис.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.

Детерминированный автомат Мура y: (QÄX)® Q; j: Q®Y  
  текущее состояние qÎQ символы входного алфавита xÎX выход yÎY
  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

  Соединение состояний автомата Мура y: (QÄX)® Q; j: Q®Y
текущее состояние qÎQ очередное состояние qÎQ выход yÎY  
q1 q2 q3 q4  
q1 x4 x1 x2 x3 y1  
q2 x3 x4 x1 x2 y3  
q3 x3 (x1Úx4) x2 y2  
q4 (x2Úx4) x3 x1 y1  
               

 

Рис.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.

Недетерминированный автомат Мили (y;j): (QÄX) ® (QÄY)
текущее состояние qÎQ символы входного алфавита 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.

Соединение состояний автомата Мили (y;j): (QÄX) ® (QÄY)
текущее состояние qÎQ очередное состояние qÎQ
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 и 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.

Недетерминированный автомат Мура y: (QÄX)® Q; j: Q®Y  
  текущее состояние qÎQ символы входного алфавита xÎX выход yÎY
  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.

  Соединение состояний автомата Мура y: (QÄX)® Q; j: Q®Y
текущее состояние qÎQ очередное состояние qÎQ выход yÎY  
q1 q2 q3 q4  
q1 x4 x1 x2 x3 y1  
q2 x3 x4 * x2 *  
q3 x3 (x1Úx4) * y2  
q4 x2 x3 x1 y1  
               

 

Рис.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; Нарушение авторских прав




Мы поможем в написании ваших работ!
lektsiopedia.org - Лекциопедия - 2013 год. | Страница сгенерирована за: 0.009 сек.