Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчет по теории автоматов.docx
Скачиваний:
9
Добавлен:
11.04.2015
Размер:
4.42 Mб
Скачать
  1. Использование сетей Петри при переходе от грамматики к минимальному автомату

Возвратимся к заданной праволинейной грамматике G’. Построим для нее сеть Петри. Это можно сделать, поставив в соответствие нетерминальным символам позиции (кружки) сети, а терминалам – переходы (палочки) сети. Будем помечать позиции и переходы соответствующими нетерминалами и терминалами. Поскольку сеть Петри является двудольным графом, соединение дугами позиций разрешается только через переходы, а переходов – через позиции. Если в правой части некоторого правила вывода из R’ имеет место конкатенация терминалов, то в сети Петри между переходами, помеченными терминалами, должны появиться дополнительные позиции, которые можно помечать символами левой части правил вывода с верхними индексами 1,2,… Так, фрагмент сети Петри, соответствующий первому правилу вывода (Sx7 x3 x7A), будет иметь вид:

S x7 S1 x3 S2 x7 A

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

x1

x4

x5

x1

x0

S1

S2

A

D

x0

S

x0

x7

x5

x2

S3

S4

B

x2

x5

x3

x5

x0

E

x1

x2

C

x6

x3

x3

x3

F1

F2

F3

F

x7

x0

x3

x3

x3

F4

F5

F6

F8

x5

x3

x3

F7

Рис. 7 Сеть Петри, соответствующая исходной грамматике

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

От рисунка 8 можно перейти к графу переходов автомата, устранив переходы и взвесив дуги наименованиями этих переходов.

x0

x0

S2 (r5)

A, B,С(r0)

S1,S3(r4)

x5

D, E (r1)

S(r11)

x1

x5

S4 (r6)

x7

x1

Z (r10)

x3

x4

x2

F3,F6, F8 (r3)

F1(r8)

x6

x3

F2, F5, F7 (r2)

x3

F (r7)

x7

x3

x5

x0

x3

F4 (r9)

Рис.8 Сеть Петри, полученная в результате упрощения

  1. Размещение состояний автомата

На этапе кодирования (размещения) состояний автомата осуществляется выбор способа размещения, существенно зависящего от типа реализуемого автомата (синхронный или асинхронный). Для асинхронного автомата необходимо применить противогоночное кодирование, например, соседнее или квазисоседнее размещение. Синхронный автомат не требует противогоночного размещения, и его состояния могут быть закодированы кодами минимальной длины. Далее будем предполагать, что реализуемый автомат является асинхронным.

Длина кода измеряется числом переменных (двоичных), набор значений которых образует кодовую комбинацию из нулей и единиц. Наименьшее число переменных, необходимых для кодирования синхронного автомата с N состояниями, определяется как n = [log2N].

Один из способов размещения состояний синхронного автомата состоит в произвольном назначении им кодовых наборов. Состоянию r1поставим в соответствие вершину 4-мерного куба с десятичным номером i, который определяется по значению ее двоичных координат z1, z2, z3, z4 в соответствии с формулой i = z120 + z221 + z322 + z423. В этом случае вершине с координатами 0000 соответствует состояние r0, вершине с координатами 1000 – r3. При таком варианте кодирования переход автомата из одного состояния в другое в общем случае может сопровождаться изменениями значений нескольких кодирующих (внутренних) переменных.

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

r11111

r5

x0

x1

x0

x3

x7

r4

r7

r8

r9

r2

r3

x6

x4

r1

r0

x5

x3

x0

x7

x5

x2

x5

r6

r10550000000000

x1

x3

x3

x3

Рис.9 Результат вложения графа минимального автомата в 4-мерный куб