Синтез распознающего автомата
Специфика построения и минимизации детерминированного автомата методом разбиения. Построение детерминированной сети Петри, моделирующей работу распознающего автомата. Особенности программной реализации праволинейной грамматики, построение ее графа.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 19.06.2012 |
Размер файла | 615,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
30
Размещено на http://www.allbest.ru/
Министерство образования и науки РФ
ГОУ ВПО «Ижевский государственный технический университет»
Кафедра «Программное обеспечение»
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к курсовой работе
по дисциплине:
«Теория языков программирования и методы трансляции»
на тему:
«Синтез распознающего автомата»
Выполнил:
ст.гр. 4-78-11
Таишев Е.Э.
Ижевск 2012
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
1. Постановка задачи
2. Индивидуальное задание. Построение праволинейной
грамматики
3. Построение автоматной грамматики по праволинейной
4. Построение недетерминированного конечного автомата
5. Сведение недетерминированного конечного автомата к детерминированному
6. Построение минимального автомата
7. Построение сети Петри, моделирующей работу распознающего автомата
8. Описание программы, реализующей распознающий автомаТ
8.1 Вводная часть
8.2 Функциональное назначение
8.3 Описание информации
8.4 Описание логики
9 Описание контрольного примера
9.1 Назначение
9.2 Исходные данные
9.3 Результаты расчета
9.4 Результаты испытания программы
ЗАКЛЮЧЕНИЕ
СПИСОК ЛИТЕРАТУРЫ
ПРИЛОЖЕНИЯ
ВВЕДЕНИЕ
Цель курсовой работы состоит в изучении способов задания языков грамматиками, распознающими автоматами и сетями Петри, построении модели конечного автомата, распознающего заданный язык и его программная реализация.
В наше время, конечные автоматы имеют широкое распространение в компиляторах языков, поэтому программная реализация конечного автомата приобретает высокое значение. Также они применяются для создания лингвистических процессоров, для описания и обработки формальных языков.
Каждый автомат имеет конечное число входов, воспринимающих информацию, изображаемую конечным числом символов из некоторого алфавита, и конечное число выходов для выдачи информации.
Выходная информация автомата зависит не только от входной информации, но и от внутреннего состояния автомата. Конечный автомат имеет конечное число состояний.
Автоматы часто представляют сетями. Для автомата характерен последовательный способ функционирования: автомат последовательно переходит из состояния в состояние с заданной функцией перехода и осуществляет очередной шаг.
1. ПОСТАНОВКА ЗАДАЧИ
Необходимо построить праволинейную грамматику на основе индивидуального задания и приведенного ниже определения формальной грамматики. Затем по праволинейной грамматике построить автоматную грамматику. Построить недетерминированный конечный автомат по полученной автоматной грамматике. Преобразовать недетерминированный конечный автомат в детерминированный. Минимизировать полученный автомат, построить таблицу и граф переходов минимального автомата.
Построить по праволинейной грамматике сеть Петри. Минимизировать ее - построить недетерминированную сеть. Построить детерменированную сеть Петри на основе недетерминированной. По полученной детерминированной сети Петри построить граф переходов минимального автомата. Сравнить с графом минимального автомата, полученным ранее.
Входными данными для автомата является цепочка (строки, вводимые с клавиатуры) из терминальных символов. На выходе автомата выдается состояние - отвергающее или допускающее входную цепочку.
Задана формальная грамматика G = <Vt, Vn, S, P>, где
Vt = {C1, C2,…, C18} - терминальный словарь,
Vn = {S, A, B, C, D, E, F}- нетерминальный словарь,
S - начальный символ грамматики, S Vn,
P - множество правил вывода
Правила вывода имеют следующий вид:
S C1 C2 C3 A;
S C1 C4 C5 B;
S C6 C;
S C7 F;
A C8 D;
A C9;
B C8 E;
B C9;
C C8 E;
C C9;
D C10 S;
D C11;
E C10 S;
E C11;
F C12 C13 C14 C15;
F C16 C13 C14 C15;
F C17 C18 C15.
2. ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ. ПОСТРОЕНИЕ ПРАВОЛИНЕЙНОЙ ГРАММАТИКИ
Индивидуальным задание для курсовой работы являются две таблицы (см. табл., 1,2) и правила вывода R. необходимо поставить в соответствие терминальным символам Ci грамматики G терминальные символы Xi грамматики G'. Для этого во вторую строку таблицы 1 записываются первые 18 символов фамилии, имени и отчества с обязательными пробелами между ними. В третью строку необходимо занести для каждого из 18 символов строки символы из алфавита {X0, X1, X2, X3, X4, X5, X6, X7} в соответствии с таблицей 2.
Таблица 1. Индивидуальная таблица
Ci |
C1 |
C2 |
C3 |
C4 |
C5 |
C6 |
C7 |
C8 |
C9 |
C10 |
C11 |
C12 |
C13 |
C14 |
C15 |
C16 |
C17 |
C18 |
|
S1 |
Т |
А |
И |
Ш |
Е |
В |
Е |
В |
Г |
Е |
Н |
И |
Й |
Э |
Д |
У |
|||
Xi |
X5 |
X1 |
X3 |
X2 |
X6 |
X2 |
X5 |
X6 |
X2 |
X4 |
X6 |
X7 |
X3 |
X0 |
X5 |
X1 |
X6 |
X7 |
Таблица 2. Таблица соответствия между буквами алфавита и терминальными символами грамматики G'
А |
Б |
В |
Г |
Д |
Е |
Ж |
З |
И |
Й |
К |
Л |
М |
Н |
О |
П |
|
X1 |
X5 |
X2 |
X4 |
X6 |
X6 |
X4 |
X3 |
X3 |
X0 |
X7 |
X0 |
X3 |
X7 |
X4 |
X5 |
|
Р |
С |
Т |
У |
Ф |
Х |
Ц |
Ч |
Ш |
Щ |
Ь |
Ы |
Э |
Ю |
Я |
||
X0 |
X4 |
X5 |
X7 |
X2 |
X5 |
X1 |
X2 |
X2 |
X0 |
X6 |
X1 |
X1 |
X3 |
X7 |
X5 |
Правила вывода для G' получаются из правил вывода грамматики G заменой символов Ci на соответствующие символы Xi. При этом праволинейная грамматика приводится к следующему виду:
G' = <Vt', Vn', S', P'>, где
Vt'= { X0, X2, X3, X4, X5, X6, X7} - терминальный словарь,
Vn'= {S, A, B, C, D, E, F}- нетерминальный словарь,
S - начальный символ грамматики, S Vn,
R - множество правил вывода, получаемых из правил вывода R заменой символов Ci на Xi в соответствии с таблицей 1.
Получим следующие правила вывода праволинейной грамматики G':
S x5 x1 x3 A
S x5 x2 x6 B
S x2 C
S x5 F
A x6 D
A x2
B x6 E
B x2
C x6 E
C x2
D x4 S
D x6
E x4 S
E x6
F x7 x3 x0 x5
F x1 x3 x0 x5
F x6 x7 x5
Граф полученной грамматики представлен на рис. 1.
Рис. 1. Граф грамматики G'
3. ПОСТРОЕНИЕ АВТОМАТНОЙ ГРАММАТИКИ ПО ПРАВОЛИНЕЙНОЙ
Процедура перевода праволинейной грамматики в автоматную состоит из следующих пунктов:
1. Если имеется правила вида А, где - непустая терминальная цепочка, то ввести новый нетерминальный символ В и добавить правило Вe. Затем заменить каждое из правил вида A правилом AB.
2. Заменить каждое правило вида Aa1...anB, для n>1, на правила:
Aa1A1
A1a2A2
...
An-1anAn,
где: Ai, для (1 < i< (n-1)) - новые нетерминальные символы.
3. Если имеется правила вида АB, то, во-первых, удалить правила BB (если таковые имеются), во-вторых, заменить их правилами вида: Aa, для всех A и a, для которых существуют правила AB и Ba.
Применив данную процедуру перевода к полученной праволинейной грамматике G', получим следующую автоматную грамматику:
4. ПОСТРОЕНИЕ НЕДЕТЕРМИНИРОВАННОГО КОНЕЧНОГО АВТОМАТА
Процедуру построения недетерминированного автомата по автоматной грамматике:
1. Входным множеством автомата будет терминальное множество грамматики;
2. Множеством состояний автомата будет нетерминальное множество грамматики, а в качестве начального состояния будет выступать начальный нетерминальный символ грамматики - S;
3. По правилу Z состояние Z будет допускающим;
4. Для всех правил грамматики по правилу A xB вводим в автомате переход из состояния A в состояние B по входу x
5. Чтобы получить полностью определенный автомат, вводим состояние ошибки - Er, и во все оставшиеся клетки записываем переход в состояние ошибки.
Результатом такого построения является недетерминированный автомат с одним начальным состоянием. Таблицей переходов полученного автомата является таблица 3.
Таблица 3. Недетерминированный конечный автомат
x0 |
x 1 |
x 2 |
x 3 |
x 4 |
x 5 |
x 6 |
x 7 |
|||
S |
Er |
Er |
C |
Er |
Er |
S1F |
Er |
C |
0 |
|
S1 |
Er |
S2 |
Er |
Er |
Er |
Er |
Er |
Er |
0 |
|
S2 |
Er |
Er |
Er |
Er |
Er |
Er |
Er |
A |
0 |
|
S3 |
Er |
Er |
S4 |
Er |
Er |
Er |
Er |
Er |
0 |
|
S4 |
Er |
Er |
Er |
Er |
Er |
Er |
B |
Er |
0 |
|
A |
Er |
Er |
Z |
Er |
Er |
Er |
D |
Er |
0 |
|
Z |
Er |
Er |
Er |
Er |
Er |
Er |
Er |
Er |
1 |
|
B |
Er |
Er |
Z |
Er |
Er |
Er |
E |
Er |
0 |
|
C |
Er |
Er |
Z |
Er |
E |
Er |
E |
Er |
0 |
|
D |
Er |
Er |
Er |
Er |
S |
Er |
Z |
Er |
0 |
|
E |
Er |
Er |
Er |
Er |
S |
Er |
Z |
Er |
0 |
|
F |
Er |
F4 |
Er |
Er |
Er |
Er |
F7 |
F1 |
0 |
|
F1 |
Er |
Er |
Er |
F2 |
Er |
Er |
Er |
Er |
0 |
|
F2 |
F3 |
Er |
Er |
Er |
Er |
Er |
Er |
Er |
0 |
|
F3 |
Er |
Er |
Er |
Er |
Er |
Z |
Er |
Er |
0 |
|
F4 |
Er |
Er |
Er |
F5 |
Er |
Er |
Er |
Er |
0 |
|
F5 |
F6 |
Er |
Er |
Er |
Er |
Er |
Er |
Er |
0 |
|
F6 |
Er |
Er |
Er |
Er |
Er |
Er |
Z |
Er |
0 |
|
F7 |
Er |
Er |
Er |
Er |
Er |
Er |
Er |
F8 |
0 |
|
F8 |
Er |
Er |
Er |
Er |
Er |
Z |
Er |
Er |
0 |
|
Er |
Er |
Er |
Er |
Er |
Er |
Er |
Er |
Er |
0 |
5.
6. СВЕДЕНИЕ НЕДЕТЕРМИНИРОВАННОГО КОНЕЧНОГО АВТОМАТА К ДЕТЕРМИНИРОВАННОМУ
Процедура перехода от недетерминированного автомата к детерминированному:
Обозначения:
АД - детерминированный автомат
АН - недетерминированный автомат
1. Пометить первую строку таблицы переходов для АД множеством начальных состояний автомата АН.
2. По данному множеству состояний B, помечающему строку таблицы переходов автомата АД, для которой переходы еще не выполнены, вычислить те состояния АН, которые могут быть достигнуты из B с помощью каждого входного символа и поместить полученное множество состояний в состояние ячейки для автомата АД.
3. Для каждого нового множества, порожденного на шаге 2, посмотреть: имеется ли уже в АД строка, помеченная этим множеством, если нет, то создать новую строку и пометить ее этим множеством. Если множество уже использовалось как метка, то никаких действий не надо.
4. Если в таблице АД есть строка, для которой еще не вычислены переходы, то вернуться назад и применить к этой строке шаг 2. Если все переходы вычислены, то переходим к шагу 5.
5. Пометить строку как допускающее состояние АД, тогда и только тогда, когда она содержит допускающее состояние АН, иначе пометить как отвергающее.
6. Добавим состояние ошибки Er и во всех пустых клетках запишем переход в состояние ошибки.
Получим следующий детерминированный автомат (см. табл. 4).
Таблица 4. Детерминированный автомат
x 0 |
x 1 |
x 2 |
x4 |
x 5 |
x 6 |
x 7 |
|||
{S} |
{Er} |
{Er} |
{C} |
{Er} |
{ S1F } |
{Er} |
{C} |
0 |
|
{F} |
{Er} |
{F4} |
{Er} |
{Er} |
{F1} |
{ F7} |
{F1 } |
0 |
|
{C} |
{Er} |
{Er} |
{Z} |
{E} |
{Er} |
{ E } |
{Er} |
0 |
|
{S1 S3} |
{Er} |
{ S2} |
{ S4} |
{ Er } |
{Er} |
{ Er } |
{Er} |
0 |
|
{F7 } |
{Er} |
{ Er } |
{Er} |
{Er} |
{Er} |
{Er} |
{ F8} |
0 |
|
{F4} |
{Er} |
{ F5} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
0 |
|
{F1 } |
{Er} |
{ F2} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
0 |
|
{Z} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
1 |
|
{E} |
{Er} |
{ Er } |
{Er} |
{ S } |
{ Er } |
{ Z } |
{Er} |
0 |
|
{S4 } |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{ B } |
{ Er } |
0 |
|
{S2 } |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{ A } |
0 |
|
{F8 } |
{Er} |
{Er} |
{Er} |
{Er} |
{ Z } |
{ Er } |
{Er} |
0 |
|
{F2 } |
{Er} |
{ F3} |
{Er} |
{Er} |
{ Er } |
{Er} |
{Er} |
0 |
|
{B} |
{Er} |
{Er} |
{ Z } |
{ Er } |
{Er} |
{ E } |
{Er} |
0 |
|
{A} |
{Er} |
{Er} |
{ Z } |
{ Er } |
{Er} |
{ D } |
{Er} |
0 |
|
{F3 } |
{Er} |
{Er} |
{Er} |
{Er} |
{ Z } |
{ Er } |
{Er} |
0 |
|
{D} |
{Er} |
{ Er } |
{Er} |
{ S } |
{ Er } |
{ Z } |
{Er} |
0 |
|
{F5 } |
{ F6} |
{Er} |
{Er} |
{Er} |
{ Er } |
{Er} |
{Er} |
0 |
|
{F6 } |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{ Z } |
{Er} |
0 |
|
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
0 |
6. ПОСТРОЕНИЕ МИНИМАЛЬНОГО АВТОМАТА
Для получения минимального автомата воспользуемся методом разбиения. Метод разбиения заключается в разбиении множества состояний на непересекающиеся подмножества (блоки), такие, что неэквивалентные состояния попадают в разные блоки.
Условия эквивалентности состояний:
Условие подобия: состояния S и T должны быть либо оба допускающими, либо оба отвергающими.
Условие преемственности: для всех входных символов состояния S и T должны переходить в эквивалентные состояния, т.е. их преемники эквивалентны.
Сначала состояния разбиваются на 2 блока. Один содержит только допускающие, другой - отвергающие. Очевидно, никакое из состояний 1-го блока не эквивалентно ни одному состоянию второго блока, что следует из условия подобия. Затем происходит разбиение этих блоков на более мелкие по следующему алгоритму:
1. Если под действием какого-либо входного символа какая-то часть состояний данного блока переходит в состояния из другого блока, что нарушает условие преемственности, то необходимо разбить данный блок на части так, чтобы не нарушалось в одном блоке условие преемственности.
2. Необходимо повторять шаг 1 до тех пор, пока дальнейшее разбиение невозможно.
3. За один раз можно разбить только один блок.
Обозначим {S1S3} за {Y}.
6.1 Делим на группы допускающих, недопускающих состояний
P0={{S, Y, S2, S4, A, B, C, D, E, F, F1, F2, F3, F4, F5, F6, F7, F8}, {Z}}
6.2 Разбиваем по входу x2:
P1={{A, B, C}, {S, Y, S2, S4, D, E, F, F1, F2, F3, F4, F5, F6, F7, F8},{Z}}
6.3 Разбиваем по входу x1:
P2={{A, B, C}, {F8,F5,F2,S }, { C, F4, F7, B, A },{ Y, S2, F1, F4},{Z}}
6.4 Разбиваем по входу x7:
P3={A, B, C}, {F8,F5,F2,S }, {C, F4, F7, B, A}, {F1}, {Y, S2},{Z}}
6.5 Разбиваем по входу x6:
P4={{A, B, C}, {F8,F5,F2,S}, { C, F4, F7, B, A }, {S2}, {E}, {F1}, {Y },{Z}}
6.6 Разбиваем по входу x4:
P5={{A, B, C}, {F8,F5,F2,S}, { C, F4, F7, B, A },{S2}, {E}, {S4},{D}, {F1}, {F4}, {Y},{Z}}
6.7 Разбиваем по входу x5:
P6={{A, B, C}, {F8,F5,F2,S}, { C, F4, F7, B, A },{S2}, {E}, {S4},{D}, {F1}, {F3},{F6} {Y},{Z}}
Дальнейшее разбиение невозможно. Перейдем к новым обозначениям:
{S} A
{A, B, C} B
{D, E} C
{S1, S3} D
{S2} E
{S4} F
{F} G
{F1, F4} H
{F2, F5} I
{F3, F6, F8} J
{F7} K
{Z} L
Таблица 6.1
x1 |
x 2 |
x 3 |
x 4 |
x 5 |
x 6 |
x 7 |
|||
A |
G |
B |
R |
R |
D |
R |
R |
0 |
|
B |
R |
L |
R |
R |
R |
C |
R |
0 |
|
C |
R |
R |
R |
A |
R |
L |
R |
0 |
|
D |
E |
F |
R |
R |
R |
R |
R |
0 |
|
E |
R |
R |
B |
R |
R |
R |
R |
0 |
|
F |
R |
R |
R |
R |
R |
B |
R |
0 |
|
G |
H |
R |
R |
R |
R |
K |
H |
0 |
|
H |
R |
R |
I |
R |
R |
R |
R |
0 |
|
I |
JR |
R |
R |
R |
R |
R |
R |
0 |
|
J |
R |
R |
R |
R |
L |
R |
R |
0 |
|
K |
R |
R |
R |
R |
R |
R |
J |
0 |
|
L |
R |
R |
R |
R |
R |
R |
R |
1 |
Граф переходов минимального автомата приведен на рис.3.
Рис. 3 Граф переходов минимального автомата
7. ПОСТРОЕНИЕ СЕТИ ПЕТРИ
Для полученной в п.2 праволинейной грамматики построим сеть Петри. Это можно сделать, поставив в соответствие нетерминальным символам грамматики позиции сети Петри, а терминалам - переходы сети Петри. Будем помечать позиции и переходы соответствующими нетерминалами и терминалами. Если в правой части имеет место конкатенация терминалов (т.е. цепочка терминалов), то в сети Петри между переходами, помеченными терминалами, должны появиться дополнительные позиции, которые будут помечены символами левой части правила подстановки с верхними индексами 1,2…
При построении остальных фрагментов соответствующих последующим правилам подстановки, следует использовать ранее обозначенные позиции, но не переходы. Таким образом, позиции могут иметь несколько входящих и исходящих дуг, а переходы могут иметь в точности по одной входящей и не более чем по одной исходящей дуге. Исходящая дуга может отсутствовать, если в правой части правила подстановки отсутствует замыкающий нетерминал. Маркером или фишкой отмечается позиция, соответствующая начальному символу грамматики. Построим сеть Петри (рис.4)
Рис. 4 Сети Петри
Полученная сеть представляет собой автоматную сеть Петри. Позиции можно трактовать как состояния конечного автомата, а переходы - как входные символы. Для полноты соответствия сети Петри распознающему автомату введена заключительная позиция Z, в которую направлены дуги из всех переходов, ранее не имевших исходящих дуг.
Можно заметить, что в этой сети имеются идентичные фрагменты, которые можно склеить. Склеивая фрагменты с позициями S1, S3 по входному переходу X5, устраняем недетерминированность сети. Это позволит произвести еще ряд склеек. Позиции A, B и C склеиваются по выходным переходам X5 и X1, позиции D, E - по входному переходу x5 и по выходному переходу X6. Функционирование сети не изменится, если склеить идентичные фрагменты: F3,F6 и F8; F2 и F5; F1 и F4. Этот этап соответствует минимизации числа состояний автомата. Получим эквивалентную детерминированную сеть следующего вида (см. рис.5):
Рис. 5 Эквивалентная детерминированная сеть Петри
По полученной сети построим граф.
Введем следующие обозначения:
{S} A
{A, B, C} B
{D, E} C
{S1, S3} D
{S2} E
{S4} F
{F} G
{F1, F4} H
{F2, F5} I
{F3, F6, F8} J
{F7} K
{Z} L
Граф приведен на рис.6.
Рис.6 Граф полученной сети
Сравнив два графа (рис.3 и рис.6), можно увидеть, что они в точности совпадают.
8.ОПИСАНИЕ ПРОГРАММЫ, РЕАЛИЗУЮЩЕЙ РАСПОЗНАЮЩИЙ АВТОМАТ
8.1 Вводная часть
Для проверки правильности построенного конечного распознавателя, написана программа. Программа реализует работу распознающего автомата и производит распознавание вводимых с клавиатуры цепочек. Программа написана на языке TURBO PASCAL. Для проверки работоспособности необходимо откомпилировать файл automat.pas, далее запустить файл automat.exe.
8.2 Функциональное назначение
Программа имитирует работу конечного автомата. Программа применяется для распознавания входных цепочек символов право-линейной грамматики.
Для функционирования программы необходима любая ЭВМ, имеющая
транслятор языка Паскаль.
Для работы программы требуются следующие устройства:
дисплей;
клавиатура.
Для работы программы необходимо:
объем свободной оперативной памяти не менее 10 Kb;
При сбоях в работе устройств, программа прекращает свою работу.
Программа не предусматривает возможности продолжения работы с определенного этапа.
8.3 Описание информации
В качестве входной информации выступают строки, вводимые с клавиатуры, состоящие из символов исходной грамматики и являющиеся строкой для распознавания. Информация о допустимости цепочек выводится на дисплей. Входные данные имеют формат: хАхВхС , где А, В, С - числа от 1 до 7.
Перечень сообщений, используемых в работе программы, представлен в таблице 6.
Таблица 6. Сообщения программы
Сообщение |
Описание |
|
Введите цепочку: |
Приглашение к вводу цепочки. |
|
Цепочка не допускается |
Выводится, если введенная цепочка является недопустимой |
|
Цепочка допускается |
Выводится, если введенная цепочка является допустимой |
8.4 Описание логики
Логику написанной программы иллюстрирует схема программы, представленная на рис. 7
Рис. 7 Схема программы automat.pas
9. ОПИСАНИЕ КОНТРОЛЬНОГО ПРИМЕРА
9.1 Назначение
Контрольный пример предназначен для тестирования программы automat.pas, реализующей конечный автомат.
9.2 Исходные данные
Исходные данные - цепочка символов. В нее входят символы из множества: {x1,x2,x3,x4,x5,x6,x7}.
Построим правильные цепочки:
1. Sx7x6x6Ax7x6x6x6Dx7x6x6x6x3
1 5 12
Получаем цепочку: x7x6x6x6x3
2. Sx7x4x3Bx7x4x3x6Ex7x4x3x6x5S x7x4x3x6x5x4C x7x4x3x6x5x4x2
2 7 13 3 10
Получаем цепочку: x7x4x3x6x5x4x2
3. Sx4Cx4x6Ex4x6x5S x4x6x5x1F x4x6x5x1x5x1x3
3 9 13 4 17
Получаем цепочку: x4x6x5x1x5x1x3
4. Sx1Fx1x1x7x4x3
4 15
Получаем цепочку: x1x1x7x4x3
5. Sx1Fx1x3x7x4x3
4 16
Получаем цепочку: x1x3x7x4x3
Построим не правильные цепочки:
1. Sx7x6x6Ax7x6x6x3
1
Получаем цепочку: x7x6x6x3
2. Sx4x6x1
Получаем цепочку: x4x6x1
3. Sx4Cx4x6E x4x6x4
3 9
Получаем цепочку: x4x6x4
9.3 Результаты расчета
Следующие цепочки являются допустимыми т.к. после прочтения любой из них автомат переходит в допускающее состояние:
1. x7x6x6x6x3
13610813
2. x7x4x3x6x5x4x2
13410811013
3. x4x6x5x1x5x1x3
11081117913
4. x1x1x7x4x3
11125913
5. x1x3x7x4x3
11125913
Следующие цепочки являются не допустимыми т.к. после прочтения любой из них автомат переходит в не допускающее состояние:
1. x7x6x6x3
1361012
2. x4x6x1
13412
3. x4x6x4
110812
9.4 Результаты испытания программы
Результаты испытания программы представлены в таблице 7. Результаты совпадают с рассчитанными, отсюда следует, что программа, реализующая работу конечного автомата, работает правильно.
Таблица 7. Результаты тестирования программы
Цепочка |
Примечание |
|
x1x6x7x4x5 |
Цепочка допускается |
|
x7x1x5x6 |
Цепочка допускается |
|
x2 |
Цепочка допускается |
|
x1x1x6x7x2 |
Цепочка допускается |
|
x7x6x6x3 |
Цепочка не допускается |
|
x4x6x1 |
Цепочка не допускается |
|
x4x6x4 |
Цепочка не допускается |
ЗАКЛЮЧЕНИЕ
детерминированный автомат сеть петри программный
В ходе выполнения курсовой работы была построена праволинейная грамматика и ее граф. В дальнейшем по ней была построена автоматная грамматика, из которой в свою очередь был построен недетерминированный конечный автомат. Недетерминированный конечный автомат был сведен к эквивалентному детерминированному. Я произвела минимизацию детерминированного автомата методом разбиения.
Была построена сеть Петри, моделирующая работу распознающего автомата. В результате устранения в ней идентичных фрагментов была получена детерминированная сеть Петри.
Грамматики и автоматы сопровождены графическими изображениями. Результаты минимизации автоматов с помощью теории автоматов совпали с результатами программы реализующей распознающий автомат. Результаты программной реализации удовлетворительны.
СПИСОК ЛИТЕРАТУРЫ
Методические указания для самостоятельной работы студентов по дисциплине" Теория вычислительных процессов и структур ". Ч1/ Ижевск. гос.техн.университет; Сост. Сенилов М.А. ИжГТУ, 2000.
ГОСТ 19.003 - 80. Схемы алгоритмов и программ. Обозначения условные графические // Единая система программной документации. - М. : Издательство стандартов, 1980. - 9с.
ГОСТ 19.005 - 78. Общие требования к программным документам // Единая система программной документации. - М. : Издательство стандартов, 1980. - 2с.
Интернет сайты:www.wikipedia.org
ПРИЛОЖЕНИЯ
Приложение 1
ТЕКСТ ПРОГРАММЫ
Program Automat;
const
E=12;
Tabl:Array [1..13,0..7] of byte=
((E, 3, E, 10, E, E, E, 11),
(5, E, E, E, E, E, E, E),
(E, 4, 6, E, E, E, E, E),
(E, E, 10, E, E, E, E, E),
(E, E, E, E, E, E, 9, E),
(10, E, E, E, E, E, E, E),
(E, E, E, E, E, 9, E ,E),
(E, E, 1, E, E, 13, E, E),
(E, E, E, E, E, 13, E, E),
(E, E, E, E, 13, E, E, 8),
(7, 2, E, E, E, E, 2, E),
(E, E, E, E, E, E, E, E),
(E, E, E, E, E, E, E, E));
var X,S:byte;
Str:string;
Er:boolean;
BEGIN
Write('Введите цепочку: ');
ReadLn(Str);
S:=1;
Er:=FALSE;
X:=1;
While (X<=Length(Str)) and (Not(Er)) Do
Begin
If (Str[X]='x')and(Str[X+1] in ['0'..'7']) Then
S:=Tabl[S,Ord(Str [X+1])-Ord('0')] Else
Begin
WriteLn('Неверный входной символ');
S:=0;
Er:=TRUE;
End;
X:=X+2;
End;
Write('Цепочка ');
If S<>13 Then Write('не ');
WriteLn('допустима');
END.
Приложение 2
РЕЗУЛЬТАТЫ РАСЧЕТА НА ЭВМ КОНТРОЛЬНОГО ПРИМЕРА
Введите цепочку: x1x6x7x4x5
Цепочка допустима
Введите цепочку: x1x1x2x7x2 x3 x4
Цепочка не допустима
Введите цепочку: x3x7x2x7x0x5x5
Цепочка не допустима
Введите цепочку: x7x1x5x6
Цепочка допустима
Введите цепочку: x3x7x2x5x5
Цепочка не допустима
Введите цепочку: x5x3x7x5x5
Цепочка не допустима
Введите цепочку: x2
Цепочка допустима
Размещено на Allbest
Подобные документы
Сведение недетерминированного конечного автомата к детерминированному. Построение минимального детерминированного автомата из праволинейной грамматики двумя различными способами: с помощью сетей Петри и с помощью таблиц. Описание контрольного примера.
курсовая работа [903,9 K], добавлен 14.07.2012Изучение методов построения конечного автомата, распознающего заданный язык, и принципы его программной реализации. Проектирование комбинационной и принципиальной схем распознающего конечного автомата с использованием библиотеки интегральных микросхем.
дипломная работа [1,8 M], добавлен 18.08.2013Построение праволинейной грамматики, автоматной грамматики по полученным результатам. Построение недетерминированного конечного автомата. Сведение недетерминированного конечного автомата к детерминированному. Описание программы и контрольного примера.
курсовая работа [674,9 K], добавлен 13.06.2012Методика минимизации абстрактного автомата. Порядок построения графа полученного минимизированного автомата. Синтез на элементах ИЛИ-НЕ и Т-тригерах. Составление таблицы переходов. Разработка микропрограммного автомата, реализующего микропрограмму.
курсовая работа [997,7 K], добавлен 28.03.2011Синтез автомата для преобразования двоично-десятичного кода. Кодировка алфавитов и состояний. Построение булевых функций, минимизация. Разметка вход-выходных слов для автомата Мили и автомата Мура. Реализация на элементах малой степени интеграции.
контрольная работа [141,5 K], добавлен 14.10.2012Составление формальной грамматики, недетерминированный конечный автомат. Построение конечного автомата, программное моделирование работы конечного автомата. Граф детерминированного автомата, Синтаксическая диаграмма. Блок-схемы, примеры разбора строк.
курсовая работа [486,2 K], добавлен 19.11.2010Содержание и особенности этапов синтеза дискретного автомата. Граф переходов-выходов автомата Мура, кодирование входных и выходных сигналов. Построение функциональной схемы автомата Мура на RS–триггерах и элементах И-НЕ в программе Electronic WorkBench.
курсовая работа [964,2 K], добавлен 20.07.2015Важный частный случай недетерминированного конечного автомата. Проверка нечетности числа единиц в произвольной цепочке, состоящей из нулей и единиц. Составление формальной грамматики, блок-схемы и программы, моделирующей работу конечного автомата.
курсовая работа [210,8 K], добавлен 05.12.2013Минимизация абстрактного автомата Мили, моделирование его работы. Синтез схемы конечного автомата, микропрограммного автомата и счетчика числа микрокоманд. Разработка цифровой линии задержки. Построение граф-схем исходного и оптимизированного автоматов.
курсовая работа [823,8 K], добавлен 19.07.2012Разработка управляющего автомата, ориентированного на выполнение заданной микрооперации. Разработка алгоритма работы управляющего автомата. Листинг программы. Выбор оптимального варианта кодирования состояний автомата. Синтез функции возбуждения.
курсовая работа [506,9 K], добавлен 26.12.2012