Теория языков программирования
Процесс перехода от праволинейной грамматики к автоматной. Правила построения недетерминированного конечного автомата. Характеристика метода разбиения, его принцип действия. Преобразование праволинейной грамматики в модифицированную автоматную.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | методичка |
Язык | русский |
Дата добавления | 27.06.2013 |
Размер файла | 120,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
8
Размещено на http://www.allbest.ru/
Министерство образования и науки российской федерации
Федеральное агентство по образованию РФ
Государственное образовательное учреждение
высшего профессионального образования
"Ижевский государственный технический университет"
Методические указания
к курсовой работе
Ижевск 2008
УДК 62-50 (076.5)
Составитель: д-р техн. наук проф. М. А. Сенилов
Рецензент: д-р техн. наук, проф. А. И. Мурынов
Методические указания к курсовой работе по дисциплине «Теория языков программирования и методы трансляции» / Сост. М. А. Сенилов. - Ижевск:
Изд-во ИжГТУ, 2008. - 28 с.
Методические указания освещают основные вопросы выполнения курсовой работы по дисциплине «Теория языков программирования и методы трансляции», включающей тематику теории автоматов, теории формальных грамматик и языков. В них дается индивидуальное задание, а также приводятся рекомендации и сведения, необходимые для выполнения курсовой работы.
Методические указания предназначены для студентов направления 230100 - «Информатика и вычислительная техника» и специальности 230105 - «Программное обеспечение вычислительной техники и автоматизированных систем».
© Сенилов М. А. составление, 2008
© Издательство Ижевского государственного технического университета
недетерминированный разбиение автоматика грамматика
Оглавление
1. Тема, цель и содержание курсовой работы
2. Индивидуальное задание
3. Переход от праволинейной грамматики к автоматной
4. Построение недетерминированного конечного автомата
5. Сведение недетерминированного конечного автомата к детерминированному
6. Построение минимального автомата
7. Использование сетей Петри при переходе от грамматики к минимальному автомату
8. Порядок выполнения курсовой работы
9. Рекомендации по выполнению курсовой работы
Список литературы
1. Тема, цель и содержание курсовой работы
Тема курсовой работы: Синтез распознающего автомата.
Цель курсовой работы состоит в изучении способов задания языков грамматиками, распознающими автоматами и сетями Петри, построении модели конечного автомата, распознающего заданный язык, и его программной реализации.
Содержание и основные этапы работы:
построение праволинейной грамматики;
построение автоматной грамматики по праволинейной;
построение недетерминированного конечного автомата;
сведение недетерминированного конечного автомата к детерминированному;
построение минимального автомата;
выполнение этапов 2-5 с использованием аппарата сетей Петри;
программная реализация автомата.
2. Индивидуальное задание
Исходными данными для курсовой работы являются две таблицы - табл. 1 и табл. 2 - и правила вывода R, приведенные ниже.
В табл. 1 первоначально записана лишь первая строка, содержащая перечисление 18 символов сi. Во вторую строку si записываются первые 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 |
|
si |
Б |
Е |
Р |
Е |
С |
Н |
Е |
В |
_ |
В |
И |
К |
Т |
О |
Р |
_ |
В |
Я |
|
xi |
x5 |
x6 |
x0 |
x6 |
x4 |
x7 |
x6 |
x2 |
x5 |
x2 |
x3 |
x7 |
x5 |
x4 |
x0 |
x5 |
x2 |
x7 |
Таблица 2 построена на основе подсчета появлений каждой буквы русского алфавита в фамилиях, именах и отчествах контингента студентов.
Затем буквы были сформированы в восемь групп с таким расчетом, чтобы появление каждого из символов x0 - x7 было равновероятным.
Таблица 2
А |
Б |
В |
Г |
Д |
Е |
Ж |
З |
И |
Й |
К |
Л |
М |
Н |
О |
П |
|
x1 |
x5 |
x2 |
x4 |
x6 |
x6 |
x4 |
x3 |
x3 |
x0 |
x7 |
x0 |
x3 |
x7 |
x4 |
x5 |
|
P |
С |
Т |
У |
Ф |
Х |
Ц |
Ч |
Ш |
Щ |
Ь |
Ы |
Э |
Ю |
Я |
_ |
|
x0 |
x4 |
x5 |
x7 |
x2 |
x5 |
x1 |
x2 |
x2 |
x0 |
x6 |
x1 |
x1 |
x3 |
x7 |
x5 |
Наконец, задана формальная грамматика:
G=<Vt, Vn, S, R>,
где Vt={c1, c2, c3, … , c18} - терминальный словарь;
Vn={S, A, B, C, D, E, F} - нетерминальный словарь;
SVn - начальный символ грамматики;
R - множество правил вывода, которые имеют следующий вид:
Sc1 c2 c3 A; Sc1 c4 c5 B; Sc6 C; Sc7 F;
Ac8 D; Ac9; Bc8 E; Bc9; Cc8E; Cc9;
Dc10 S; Dc11; Ec10 S; Ec11;
Fc12 c13 c14 c15; Fc16 c13 c14 c15; Fc17 c18 c15.
Эта грамматика, являющаяся праволинейной, приводится к виду
G'=<V't, V'n, S, R'>,
где V't={x0, …, x7} - новый терминальный словарь;
R' - множество правил вывода, получаемых из заданных заменой символов из алфавита Vt символами из алфавита V't в соответствии с таблицей 1.
В данном примере они имеют вид:
Sx5 x6 x0 A | x5 x6 x4 B | x7 C | x6 F;
Ax2 D | x5;
Bx2 E | x5;
Cx2 E | x5;
Dx2 S | x3;
Ex2 S | x3;
Fx7 x5 x4 x0 | x5 x5 x4 x0 | x2 x7 x0.
Здесь “|” - металингвистический символ (связка), читаемый как "ИЛИ".
Примеры цепочек, принадлежащих языку L(G'), порождаемому грамматикой G': x5 x6 x0 x5, x7 x2 x3, x6 x7 x5 x4 x0. Напротив, цепочки x2 x7 x0 x2 x7, x6 x5 x2 x5 x6 не принадлежат L(G'), так как они не выводимы в грамматике G'. Грамматика G', порождаемая из заданной грамматики G, является индивидуальным заданием студента.
Примечание. Мощность |V't| словаря V't (число символов в нем) в рассмотренном случае равна 7: словарь не содержит символа x1.
3. Переход от праволинейной грамматики к автоматной
Этот этап выполняется путем расширения нетерминального словаря способом, вытекающим из возможности преобразования праволинейной грамматики в модифицированную автоматную G''=< V't, V''n, S, R''>. Для рассматриваемого примера, который будет сквозным в данных указаниях, получим множество R'' правил вывода:
Sx5 S1; S1x6 S2; S2x0 A;
Sx5 S3; S3x6 S4; S4x4 B;
Sx7 C;
Sx6 F;
Ax2 D; Ax5 A1; A1;
Bx2 E; Bx5 B1; B1;
Cx2 E; Cx5 C1; C1;
Dx2 S; Dx3D1; D1;
Ex2 S; Ex3 E1; E1;
Fx7 F1; F1x5 F2; F2x4 F3; F3x0 F4; F4;
Fx5 F5; F5x5 F6; F5x4 F7; F7x0 F8; F8;
Fx2 F9; F9x7 F10; F10x0 F11; F11.
Таким образом, нетерминальный словарь теперь имеет вид V''n = {S, S1, S2, S3, S4, A, A1, B, B1, C, C1, D, D1, E, E1, F, F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11} и его мощность |V''n| равна 27.
4. Построение недетерминированного конечного автомата
Построим на основе грамматики G'' конечный автомат. При этом нетерминальным символам грамматики V''n поставим в соответствие состояния автомата (оставим для них те же обозначения).
Начальному нетерминалу S поставим в соответствие начальное состояние автомата S. Правилам вывода поставим в соответствие переходы автомата.
В результате получим таблицу 3 - таблицу переходов недетерминированного конечного автомата, соответствующего рассматриваемому примеру.
Таблица 3 Таблица переходов недетерминированного частичного автомата
x0 |
x2 |
x3 |
x4 |
x5 |
x6 |
x7 |
|||
S |
S1,S3 |
F |
C |
0 |
|||||
S1 |
S2 |
0 |
|||||||
S2 |
A |
0 |
|||||||
S3 |
S4 |
0 |
|||||||
S4 |
B |
0 |
|||||||
A |
D |
A1 |
0 |
||||||
A1 |
1 |
||||||||
B |
E |
B1 |
0 |
||||||
B1 |
1 |
||||||||
C |
E |
C1 |
0 |
||||||
C1 |
1 |
||||||||
D |
S |
D1 |
0 |
||||||
D1 |
1 |
||||||||
E |
S |
E1 |
0 |
||||||
E1 |
1 |
||||||||
F |
F9 |
F5 |
F1 |
0 |
|||||
F1 |
F2 |
0 |
|||||||
F2 |
F3 |
0 |
|||||||
F3 |
F4 |
0 |
|||||||
F4 |
1 |
||||||||
F5 |
F6 |
0 |
|||||||
F6 |
F7 |
0 |
|||||||
F7 |
F8 |
0 |
|||||||
F8 |
1 |
||||||||
F9 |
F10 |
0 |
|||||||
F10 |
F11 |
0 |
|||||||
F11 |
1 |
Полученный автомат является неполностью определенным (частичным), поскольку в таблице переходов (табл. 3) есть незаполненные клетки, и, кроме того, недетерминированным, поскольку в той же таблице есть клетки, содержащие пары состояний.
Чтобы получить полностью определенный автомат, следует ввести дополнительное состояние Er (ошибка). Для этого нужно дополнить автомат соответствующей строкой с состоянием Er и во все пустые клетки таблицы переходов вписать это состояние Er (см. табл. 4).
Таблица 4 Таблица переходов недетерминированного полностью определенного автомата
x0 |
x2 |
x3 |
x4 |
x5 |
x6 |
x7 |
|||
S |
Er |
Er |
Er |
Er |
S1,S3 |
F |
C |
0 |
|
S1 |
Er |
Er |
Er |
Er |
Er |
S2 |
Er |
0 |
|
S2 |
A |
Er |
Er |
Er |
Er |
Er |
Er |
0 |
|
S3 |
Er |
Er |
Er |
Er |
Er |
S4 |
Er |
0 |
|
S4 |
Er |
Er |
Er |
B |
Er |
Er |
Er |
0 |
|
A |
Er |
D |
Er |
Er |
A1 |
Er |
Er |
0 |
|
A1 |
Er |
Er |
Er |
Er |
Er |
Er |
Er |
1 |
|
B |
Er |
E |
Er |
Er |
B1 |
Er |
Er |
0 |
|
B1 |
Er |
Er |
Er |
Er |
Er |
Er |
Er |
1 |
|
C |
Er |
E |
Er |
Er |
C1 |
Er |
Er |
0 |
|
C1 |
Er |
Er |
Er |
Er |
Er |
Er |
Er |
1 |
|
D |
Er |
S |
D1 |
Er |
Er |
Er |
Er |
0 |
|
D1 |
Er |
Er |
Er |
Er |
Er |
Er |
Er |
1 |
|
E |
Er |
S |
E1 |
Er |
Er |
Er |
Er |
0 |
|
E1 |
Er |
Er |
Er |
Er |
Er |
Er |
Er |
1 |
|
F |
Er |
F9 |
Er |
Er |
F5 |
Er |
F1 |
0 |
|
F1 |
Er |
Er |
Er |
Er |
F2 |
Er |
Er |
0 |
|
F2 |
Er |
Er |
Er |
F3 |
Er |
Er |
Er |
0 |
|
F3 |
F4 |
Er |
Er |
Er |
Er |
Er |
Er |
0 |
|
F4 |
Er |
Er |
Er |
Er |
Er |
Er |
Er |
1 |
|
F5 |
Er |
Er |
Er |
Er |
F6 |
Er |
Er |
0 |
|
F6 |
Er |
Er |
Er |
F7 |
Er |
Er |
Er |
0 |
|
F7 |
F8 |
Er |
Er |
Er |
Er |
Er |
Er |
0 |
|
F8 |
Er |
Er |
Er |
Er |
Er |
Er |
Er |
1 |
|
F9 |
Er |
Er |
Er |
Er |
Er |
Er |
F10 |
0 |
|
F10 |
F11 |
Er |
Er |
Er |
Er |
Er |
Er |
0 |
|
F11 |
Er |
Er |
Er |
Er |
Er |
Er |
Er |
1 |
|
Er |
Er |
Er |
Er |
Er |
Er |
Er |
Er |
0 |
Граф переходов автомата, построенный по таблице 4, показан на рис. 1.
8
Размещено на http://www.allbest.ru/
Рис. 1 Граф переходов исходного (недетерминированного) автомата
Примечание. Для того чтобы не затемнять картину, на рисунке опущены дуги, исходящие из недопускающих состояний и ведущие в состояние Er (ошибка). Так, например, опущена дуга, ведущая из состояния S в состояние Er, которая должна быть помечена дизъюнкцией входных символов x0x2x3x4.
Все дуги, ведущие из допускающих состояний в состояние Er, должны быть помечены дизъюнкцией x0x2x3x4x5x6x7.
Нетрудно убедиться, что построенный автомат допускает все те и только те цепочки символов, которые принадлежат языку L(G'), порождаемому грамматикой G'.
5. Сведение недетерминированного конечного автомата к детерминированному
Процедура построения детерминированного автомата Ад, эквивалентного недетерминированному автомату Ан, задается следующими шагами:
Пометить первую строку таблицы переходов для Ад множеством начальных состояний автомата Ан.
Применить к этому множеству шаг 2.
По данному множеству состояний В, помечающему строку таблицы переходов автомата Ад, для которой переходы еще не вычислены, вычислить те состояния автомата Ан, которые могут быть достигнуты из В с помощью каждого входного символа х, и поместить полученные множества состояний в соответствующие ячейки таблицы для автомата Ад.
Символически это выражается так: если - функция недетерминированных переходов, то функция детерминированных перехода ' задается формулой '(B, x) = {S | S (T, x), Т В}
Для каждого нового множества, порожденного переходами на шаге 2, посмотреть, имеется ли уже в Ад строка, помеченная этим множеством.
Если нет, то создать новую строку и пометить ее этим множеством. Если множество уже использовалось как метка, никаких действий не требуется.
Если в таблице автомата Ад есть строка, для которой еще не вычислены переходы, вернуться назад и применить к этой строке шаг 2. Если все переходы вычислены, перейти к шагу 5.
Пометить строку как допускающее состояние автомата Ад тогда и только тогда, когда она содержит допускающее состояние недетерминированного автомата. В противном случае пометить как отвергающее состояние.
Описанная процедура гарантирует, что детерминированный автомат не содержит недостижимых состояний.
В результате применения этого алгоритма от недетерминированного автомата (табл. 4, рис. 1) можно перейти к эквивалентному детерминированному автомату, таблица переходов которого приведена в таблице 5.
Таблица 5 Таблица переходов детерминированного автомата
x0 |
x2 |
x3 |
x4 |
x5 |
x6 |
x7 |
|||
{S} |
{Er} |
{Er} |
{Er} |
{Er} |
{S1,S3} |
{F} |
{C} |
0 |
|
{S1,S3} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{S2,S4} |
{Er} |
0 |
|
{S2,S4} |
{A} |
{Er} |
{Er} |
{B} |
{Er} |
{Er} |
{Er} |
0 |
|
{A} |
{Er} |
{D} |
{Er} |
{Er} |
{A1} |
{Er} |
{Er} |
0 |
|
{A1} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
1 |
|
{B} |
{Er} |
{E} |
{Er} |
{Er} |
{B1} |
{Er} |
{Er} |
0 |
|
{B1} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
1 |
|
{C} |
{Er} |
{E} |
{Er} |
{Er} |
{C1} |
{Er} |
{Er} |
0 |
|
{C1} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
1 |
|
{D} |
{Er} |
{S} |
{D1} |
{Er} |
{Er} |
{Er} |
{Er} |
0 |
|
{D1} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
1 |
|
{E} |
{Er} |
{S} |
{E1} |
{Er} |
{Er} |
{Er} |
{Er} |
0 |
|
{E1} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
1 |
|
{F} |
{Er} |
{F9} |
{Er} |
{Er} |
{F5} |
{Er} |
{F1} |
0 |
|
{F1} |
{Er} |
{Er} |
{Er} |
{Er} |
{F2} |
{Er} |
{Er} |
0 |
|
{F2} |
{Er} |
{Er} |
{Er} |
{F3} |
{Er} |
{Er} |
{Er} |
0 |
|
{F3} |
{F4} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
0 |
|
{F4} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
1 |
|
{F5} |
{Er} |
{Er} |
{Er} |
{Er} |
{F6} |
{Er} |
{Er} |
0 |
|
{F6} |
{Er} |
{Er} |
{Er} |
{F7} |
{Er} |
{Er} |
{Er} |
0 |
|
{F7} |
{F8} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
0 |
|
{F8} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
1 |
|
{F9} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{F10} |
0 |
|
{F10} |
{F11} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
0 |
|
{F11} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
1 |
|
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
{Er} |
0 |
Перейдем к более простым обозначениям состояний автомата:
{S}Y; {S1,S3}Y1; {S2,S4}Y2;
{A}Y3; {A1}Y4; {B}Y5; {B1}Y6;
{C}Y7; {C1}Y8; {D}Y9; {D1}Y10;
{E}Y11; {E1}Y12; {F}Y13; {F1}Y14;
{F2}Y15; {F3}Y16; {F4}Y17; {F5}Y18;
{F6}Y19; {F7}Y20; {F8}Y21; {F9}Y22;
{F10}Y23; {F11}Y24; {Er}Er.
В новых обозначениях таблица переходов автомата приведена в табл. 6.
Таблица 6 Таблица переходов детерминированного автомата (новые обозначения состояний)
x0 |
x2 |
x3 |
x4 |
x5 |
x6 |
x7 |
|||
Y |
Er |
Er |
Er |
Er |
Y1 |
Y13 |
Y7 |
0 |
|
Y1 |
Er |
Er |
Er |
Er |
Er |
Y2 |
Er |
0 |
|
Y2 |
Y3 |
Er |
Er |
Y5 |
Er |
Er |
Er |
0 |
|
Y3 |
Er |
Y9 |
Er |
Er |
Y4 |
Er |
Er |
0 |
|
Y4 |
Er |
Er |
Er |
Er |
Er |
Er |
Er |
1 |
|
Y5 |
Er |
Y13 |
Er |
Er |
Y6 |
Er |
Er |
0 |
|
Y6 |
Er |
Er |
Er |
Er |
Er |
Er |
Er |
1 |
|
Y7 |
Er |
Y11 |
Er |
Er |
Y8 |
Er |
Er |
0 |
|
Y8 |
Er |
Er |
Er |
Er |
Er |
Er |
Er |
1 |
|
Y9 |
Er |
Y |
Y10 |
Er |
Er |
Er |
Er |
0 |
|
Y10 |
Er |
Er |
Er |
Er |
Er |
Er |
Er |
1 |
|
Y11 |
Er |
Y |
Y12 |
Er |
Er |
Er |
Er |
0 |
|
Y12 |
Er |
Er |
Er |
Er |
Er |
Er |
Er |
1 |
|
Y13 |
Er |
Y22 |
Er |
Er |
Y18 |
Er |
Y14 |
0 |
|
Y14 |
Er |
Er |
Er |
Er |
Y15 |
Er |
Er |
0 |
|
Y15 |
Er |
Er |
Er |
Y16 |
Er |
Er |
Er |
0 |
|
Y16 |
Y17 |
Er |
Er |
Er |
Er |
Er |
Er |
0 |
|
Y17 |
Er |
Er |
Er |
Er |
Er |
Er |
Er |
1 |
|
Y18 |
Er |
Er |
Er |
Er |
Y19 |
Er |
Er |
0 |
|
Y19 |
Er |
Er |
Er |
Y20 |
Er |
Er |
Er |
0 |
|
Y20 |
Y21 |
Er |
Er |
Er |
Er |
Er |
Er |
0 |
|
Y21 |
Er |
Er |
Er |
Er |
Er |
Er |
Er |
1 |
|
Y22 |
Er |
Er |
Er |
Er |
Er |
Er |
Y23 |
0 |
|
Y23 |
Y24 |
Er |
Er |
Er |
Er |
Er |
Er |
0 |
|
Y24 |
Er |
Er |
Er |
Er |
Er |
Er |
Er |
1 |
|
Er |
Er |
Er |
Er |
Er |
Er |
Er |
Er |
0 |
Граф переходов автомата, построенный по таблице 6, показан на рис. 2.
8
Размещено на http://www.allbest.ru/
Рис. 2 Граф переходов детерминированного автомата эквивалентного исходному
Примечание. Чтобы не загромождать рисунок, не изображено состояние Er а также дуги, ведущие в него из других состояний.
Построенный автомат не является минимальным, поэтому необходимо выполнить этап минимизации автомата, на котором строится минимальный (иначе - приведенный) автомат.
6. Построение минимального автомата
Произвольный конечный автомат можно превратить в эквивалентный ему минимальный, выбрасывая недостижимые и объединяя эквивалентные состояния. Разбиение состояний на классы эквивалентности можно осуществить с помощью метода разбиения.
Метод разбиения заключается в разбиении множества состояний на непересекающиеся подмножества или блоки, такие, что неэквивалентные состояния попадают в разные блоки.
Начальное разбиение P0 заключается в разбиении всего множества состояний на подмножества допустимых и недопустимых состояний:
P0=({Y, Y1, Y2, Y3, Y5, Y7, Y9, Y11, Y13, Y14, Y15, Y16, Y18, Y19, Y20, Y22, Y23, Er}, {Y4, Y6, Y8, Y10, Y12, Y17, Y21, Y24})
Далее произведем разбиение блока 1 по входу X5 и получим разбиение
P1=({Y, Y1, Y2, Y9, Y11, Y13, Y14, Y15, Y16, Y18, Y19, Y20, Y22, Y23, Er}, {Y3, Y5, Y7}, {Y4, Y6, Y8, Y10, Y12, Y17, Y21, Y24})
Произведем разбиение блока 1 по входу X0, получим разбиение
P2=({Y, Y1, Y9, Y11, Y13, Y14, Y15, Y18, Y19, Y22, Er}, {Y16, Y20, Y23}, {Y2}, {Y3, Y5, Y7}, {Y4, Y6, Y8, Y10, Y12, Y17, Y21, Y24})
Произведем разбиение блока 1 по входу X7, получим разбиение
P3=({Y1, Y9, Y11, Y13, Y14, Y15, Y18, Y19, Er}, {Y}, {Y22}, {Y16, Y20, Y23}, {Y2}, {Y3, Y5, Y7}, {Y4, Y6, Y8, Y10, Y12, Y17, Y21, Y24})
Произведем разбиение блока 1 по входу X6, получим разбиение
P4=({Y9, Y11, Y13, Y14, Y15, Y18, Y19, Er}, {Y1}, {Y}, {Y22}, {Y16, Y20, Y23}, {Y2}, {Y3, Y5, Y7}, {Y4, Y6, Y8, Y10, Y12, Y17, Y21, Y24})
Произведем разбиение блока 1 по входу X3, получим разбиение
P5=({Y13, Y14, Y15, Y18, Y19, Er}, {Y9, Y11}, {Y1}, {Y}, {Y22}, {Y16, Y20, Y23}, {Y2}, {Y3, Y5, Y7}, {Y4, Y6, Y8, Y10, Y12, Y17, Y21, Y24})
Произведем разбиение блока 1 по входу X4, получим разбиение
P6=({Y13, Y14, Y18, Er}, {Y15, Y19}, {Y9, Y11}, {Y1}, {Y}, {Y22}, {Y16, Y20, Y23}, {Y2}, {Y3, Y5, Y7}, {Y4, Y6, Y8, Y10, Y12, Y17, Y21, Y24})
Произведем разбиение блока 1 по входу X2, получим разбиение
P7=({Y14, Y18, Er}, {Y13}, {Y15, Y19}, {Y9, Y11}, {Y1}, {Y}, {Y22}, {Y16, Y20, Y23}, {Y2}, {Y3, Y5, Y7}, {Y4, Y6, Y8, Y10, Y12, Y17, Y21, Y24})
Произведем разбиение блока 1 по входу X5, получим разбиение
P8=({Er}, {Y14, Y18}, {Y13}, {Y15, Y19}, {Y9, Y11}, {Y1}, {Y}, {Y22}, {Y16, Y20, Y23}, {Y2}, {Y3, Y5, Y7}, {Y4, Y6, Y8, Y10, Y12, Y17, Y21, Y24})
Множество Р8 не допускает дальнейшего разбиения ни по одному входу, оно содержит подмножества (блоки) эквивалентных состояний, которые и являются состояниями минимального автомата.
Введем обозначения для этих подмножеств - состояний минимального автомата (табл. 7).
Таблица 7 Состояния минимального автомата
Блок эквивалентных состояний |
Состояние минимального автомата |
|
{Y} |
1 |
|
{Y1} |
2 |
|
{Y2} |
3 |
|
{Y3, Y5, Y7} |
4 |
|
{Y9, Y11} |
5 |
|
{Y13} |
6 |
|
{Y14, Y18} |
7 |
|
{Y15, Y19} |
8 |
|
{Y16, Y20, Y23} |
9 |
|
{Y22} |
10 |
|
{Y4, Y6, Y8, Y10, Y12, Y17, Y21, Y24} |
11 |
|
{Er} |
Er |
Таблица переходов минимального автомата показана в табл. 8.
Таблица 8 Таблица переходов минимального автомата
x0 |
x2 |
x3 |
x4 |
x5 |
x6 |
x7 |
|||
1 |
Er |
Er |
Er |
Er |
2 |
6 |
4 |
0 |
|
2 |
Er |
Er |
Er |
Er |
Er |
3 |
Er |
0 |
|
3 |
4 |
Er |
Er |
4 |
Er |
Er |
Er |
0 |
|
4 |
Er |
5 |
Er |
Er |
11 |
Er |
Er |
0 |
|
5 |
Er |
1 |
11 |
Er |
Er |
Er |
Er |
0 |
|
6 |
Er |
10 |
Er |
Er |
7 |
Er |
7 |
0 |
|
7 |
Er |
Er |
Er |
Er |
8 |
Er |
Er |
0 |
|
8 |
Er |
Er |
Er |
9 |
Er |
Er |
Er |
0 |
|
9 |
11 |
Er |
Er |
Er |
Er |
Er |
Er |
0 |
|
10 |
Er |
Er |
Er |
Er |
Er |
Er |
9 |
0 |
|
11 |
Er |
Er |
Er |
Er |
Er |
Er |
Er |
1 |
|
Er |
Er |
Er |
Er |
Er |
Er |
Er |
Er |
0 |
Граф переходов минимального автомата, построенный по табл. 8, показан на рис. 3.
8
Размещено на http://www.allbest.ru/
Рис. 3 Граф переходов минимального распознающего автомата
Примечание. Чтобы не загромождать рисунок, не изображено состояние Er, а также дуги, ведущие в него из других состояний.
7. Использование сетей петри при переходе от грамматики к минимальному автомату
Построим для грамматики G' сеть Петри. Это можно сделать, поставив в соответствие нетерминальным символам позиции (кружки) сети, а терминалам - переходы (планки) сети. Будем помечать позиции и переходы соответствующими нетерминалами и терминалами. Поскольку сеть Петри является двудольным графом, соединение дугами позиций разрешается только через переходы, а переходов - через позиции. Если в правой части некоторого правила вывода из R' имеет место конкатенация терминалов, то в сети Петри между переходами, помеченными терминалами, должны появляться дополнительные позиции, которые можно помечать символами левой части правила вывода с верхними индексами 1, 2, ... . Так, фрагмент сети Петри, соответствующий первому правилу вывода (S x5 x6 x0 A) , будет иметь вид, показанный на рис. 4. При построении остальных фрагментов, соответствующих последующим правилам вывода, следует использовать ранее обозначенные позиции (но не переходы!). Таким образом, позиции могут иметь несколько входящих и исходящих дуг, но переходы - в точности по одной входящей и не более чем одной исходящей дуге (исходящая дуга может отсутствовать, если в правой части правила вывода отсутствует замыкающий нетерминал).
8
Размещено на http://www.allbest.ru/
Рис. 4 Фрагмент интерпретированной сети Петри, соответствующий правилу вывода S x5 x6 x0 A
Маркером отмечается позиция, соответствующая начальному символу грамматики G' (в данном случае это позиция S).
В остальном правила построения сети Петри ясны из рассматриваемого сквозного примера - сравнить правила R' с рис. 5.
8
Размещено на http://www.allbest.ru/
Рис. 5 Сеть Петри, соответствующая исходной грамматике
Понятно, что сеть на рис. 5 представляет собой ни что иное, как автоматную сеть Петри (подкласс сетей Петри) и что позиции можно трактовать как состояния конечного автомата, а переходы - как входные символы.
Для полноты соответствия построенной сети Петри распознающему автомату Мура введем не показанную на рис. 5 заключительную позицию Z, в которую направим дуги из всех переходов, ранее не имевших исходящих дуг (см. рис. 6).
8
Размещено на http://www.allbest.ru/
Рис. 6 Сеть Петри, дополненная заключительной позицией Z
Теперь следует заметить, что в сети на рис. 6 имеются три идентичных фрагмента, содержащие позиции A, B и C, каждой из которых инцидентны по два выходных перехода x2 и x5, и еще два идентичных фрагмента с позициями D и E, каждой из которых инцидентен выходной переход x3.
Функционирование сети не изменится, если склеить идентичные фрагменты. Позиции S1 и S3; F1 и F4; F2 и F5; F3, F6 и F8 также можно склеить (см. рис. 7).
8
Размещено на http://www.allbest.ru/
Рис. 7 Преобразованная недетерминированная сеть Петри
Этот этап соответствует минимизации числа состояний автомата, но он выполнен для автомата, сохраняющего недетерминированность. Источником недетерминированности, очевидно, могут являться лишь позиции свободного выбора, исходящие дуги которых являются входящими дугами переходов, помеченных одинаковыми терминалами. В данном случае к таким позициям следует отнести лишь позицию (S1, S3). Способ устранения недетерминированности виден из рисунка 9.
8
Размещено на http://www.allbest.ru/
Рис. 8 Типичный пример устранения недетерминированности
Недетерминированность устраняется склеиванием двух позиций Pl и Pk в одну (Pl, Pk). При этом позиции (Pl, Pk) инцидентны все исходящие дуги, ведущие в переходы tr, tq, ts, являющиеся исходящими дугами позиций Pl и Pk.
Применим этот способ к сети на рис. 7, получим сеть, показанную на рисунке 9.
8
Размещено на http://www.allbest.ru/
Рис. 9 Минимизированная детерминированная сеть Петри
В данном случае можно установить взаимно однозначное соответствие между сетью рис. 9 и графом переходов минимального автомата - рис. 3. (В скобках на рис. 9 указаны соответствующие состояния минимального автомата).
Указание. Выполнение обоих способов построения минимальнного автомата обязательно, так как это обеспечивает контроль правильности выполнения этапов курсовой работы.
От рис. 9 можно перейти к графу переходов автомата, заменив переходы сети Петри дугами автомата, переименовав позиции сети соответствующими им состояниями автомата и взвесив дуги наименованиями этих переходов.
8. Порядок выполнения курсовой работы
Этап 1. Получение задания. Построение праволинейной грамматики. Переход от праволинейной грамматики к автоматной.
Результаты: праволинейная грамматика, ее граф, автоматная грамматика.
Этап 2. Построение недетерминированного распознающего автомата.
Результаты: таблица переходов и граф переходов недетерминированного автомата.
Этап 3. Переход от недетерминированного автомата к полностью определенному детерминированному автомату.
Результаты: таблица переходов и граф переходов детерминированного автомата.
Этап 4. Минимизация автомата.
Результаты: таблица переходов и граф переходов минимального автомата. Этап 5. Выполнение предыдущих этапов с использованием аппарата сетей Петри. Результаты: исходная сеть Петри, сеть свободного выбора, детерминированная сеть Петри, сравнение полученной автоматной сети с графом минимального автомата.
Этап 6. Написание программы, реализующей распознающий автомат.
Результаты: текст программы и документация к ней.
Этап 7. Тестирование программы.
Результаты: Примеры тестов (правильно построенные цепочки, порождаемые исходной грамматикой, и неправильные цепочки); Результат проверки допустимости тестовых цепочек автоматом (построение соответствующих последовательностей переходов автомата); Сравнение результатов работы программы с результатами работы автомата на тестовом множестве цепочек.
9. Рекомендации по выполнению курсовой работы
Ниже приведено типовое содержание пояснительной записки.
Содержание
Введение
Постановка задачи
Индивидуальное задание. Построение праволинейной грамматики
Построение автоматной грамматики по праволинейной
Построение недетерминированного конечного автомата
Сведение недетерминированного конечного автомата к детерминированному
Построение минимального автомата
Построение сети Петри, моделирующей работу распознающего автомата
Описание программы, реализующей распознающий автомат
Вводная часть
Функциональное назначение
Описание информации
Описание логики
Описание контрольного примера
Назначение
Исходные данные
Результаты расчета
Результаты испытания программы
Заключение
Список литературы
Приложения
Приложение 1. Текст программы
Приложение 2. Результаты расчета на ЭВМ контрольного примера
Во «Введении» показывается актуальность темы и формулируется цель курсовой работы.
Здесь можно показать значение формальных грамматик, конечных автоматов(распознавателей), сетей Петри для решения задач построения лингвистических процессоров.
Целью курсовой работы является изучение способов задания языков грамматиками, распознающими автоматами и сетями Петри, синтез и программная реализация конечного автомата, распознающего заданный язык.
В разделе 1 необходимо дать четкую формулировку задачи, описать подход к ее решению, отразить основные этапы разработки(синтеза) распознающего автомата, описать входную и выходную информацию.
В разделе 2 описывается формирование индивидуального задания, построение праволинейной грамматики на основе индивидуального задания, приводится граф этой грамматики.
В разделе 3 приводится процедура перевода праволинейной грамматики в автоматную, описывается построение автоматной грамматики.
В разделе 4 приводится процедура построения недетерминированного автомата по автоматной грамматике, описывается
построение таблицы переходов и графа переходов недетерминированного автомата.
В разделе 5 приводится процедура перевода недетерминированного автомата в детерминированный, описывается построение таблицы переходов и графа переходов детерминированного автомата.
В разделе 6 описывается метод минимизации автомата, приводится процедура минимизации автомата, описывается построение таблицы переходов и графа переходов минимального автомата.
В разделе 7 описывается процедура построения сети Петри по праволинейной грамматике. Описывается построение для заданной праволинейной грамматики исходной сети Петри, описывается минимизация сети Петри - построение сети с позициями свободного выбора (недетерминированной сети), описывается устранение недетерминированности - построение детерминированной сети Петри. Описывается построение по полученной детерминированной сети Петри графа переходов минимального автомата. Производится сравнение графа автомата, построенного на основе сети Петри, с графом минимального автомата, полученным ранее.
Список литературы
1. Льюис Ф., Розенкранц Д., Стирнз Р. «Теоретические основы проектирования компиляторов». - М.: Мир, 1979.
2. Компаниец Р. И., Маньяков Е. В., Филатов Н. Е., «Системное программирование. Основы построения трансляторов». - СПб.: КОРОНА принт, 2000.
3. Мозговой М. В. «Классика программирования: алгоритмы, языки, автоматы, компиляторы. Практический подход». - СПб.: Наука и Техника, 2006.
4. Молчанов А. Ю. «Системное программное обеспечение: Учебник для вузов». - СПб.: Питер, 2003.
5. Синтез распознающего автомата. Методические указания к курсовой работе. - Новочеркасск: издание НПИ, 1987.
Размещено на Allbest.ru
...Подобные документы
Построение праволинейной грамматики, автоматной грамматики по полученным результатам. Построение недетерминированного конечного автомата. Сведение недетерминированного конечного автомата к детерминированному. Описание программы и контрольного примера.
курсовая работа [674,9 K], добавлен 13.06.2012Сведение недетерминированного конечного автомата к детерминированному. Построение минимального детерминированного автомата из праволинейной грамматики двумя различными способами: с помощью сетей Петри и с помощью таблиц. Описание контрольного примера.
курсовая работа [903,9 K], добавлен 14.07.2012Специфика построения и минимизации детерминированного автомата методом разбиения. Построение детерминированной сети Петри, моделирующей работу распознающего автомата. Особенности программной реализации праволинейной грамматики, построение ее графа.
курсовая работа [615,1 K], добавлен 19.06.2012Важный частный случай недетерминированного конечного автомата. Проверка нечетности числа единиц в произвольной цепочке, состоящей из нулей и единиц. Составление формальной грамматики, блок-схемы и программы, моделирующей работу конечного автомата.
курсовая работа [210,8 K], добавлен 05.12.2013Теоретические и практические основы грамматик, теория конечных автоматов-распознавателей. Эквивалентные и недостижимые состояния конечных автоматов. Классификация грамматик и порождаемых ими языков. Разработка программного комплекса построения грамматик.
курсовая работа [654,2 K], добавлен 14.11.2010Содержательная часть языка программирования С++. Правила автоматной грамматики, классификация Хомского. Принцип построения графов, разработка проекта средствами среды программирования Builder C++. Алгоритм синтаксического анализа оператора вывода.
контрольная работа [228,4 K], добавлен 22.05.2012Особенности и суть языков программирования, способы их задания, цепочки символов и операции над ними. Классификация языков и грамматик, форма Бэкуса-Наура. Определение и свойства регулярных выражений, конечные автоматы и грамматики, описание программы.
курсовая работа [231,5 K], добавлен 23.06.2011Составление формальной грамматики, недетерминированный конечный автомат. Построение конечного автомата, программное моделирование работы конечного автомата. Граф детерминированного автомата, Синтаксическая диаграмма. Блок-схемы, примеры разбора строк.
курсовая работа [486,2 K], добавлен 19.11.2010Изучение методов построения конечного автомата, распознающего заданный язык, и принципы его программной реализации. Проектирование комбинационной и принципиальной схем распознающего конечного автомата с использованием библиотеки интегральных микросхем.
дипломная работа [1,8 M], добавлен 18.08.2013Роль информационных технологий в быту. Теоретические аспекты формальных грамматик и их преобразование, алфавит нетерминалов. Распознаватель для преобразованной грамматики и реализация его в виде программы для проверки текстовых файлов и вводимых цепочек.
курсовая работа [129,4 K], добавлен 15.06.2009Применение правил грамматики. Синтаксический анализатор, нис- и восходящий разбор, полный перебор правил подстановки. Классификация грамматик по Хомскому. Определение языков с помощью автоматов. Форма Бекуса-Наура описания синтаксиса формальных языков.
лекция [270,1 K], добавлен 19.10.2014Рассмотрение общих сведений и уровней языков программирования. Ознакомление с историей развития, использования языков программирования. Обзор достоинств и недостатков таких языков как Ассемблер, Паскаль, Си, Си++, Фортран, Кобол, Бейсик, SQL, HTML, Java.
курсовая работа [759,5 K], добавлен 04.11.2014Основные методы описания синтаксиса языков программирования: формальные грамматики, формы Бэкуса-Наура и диаграммы Вирта. Разработка алгоритма решения задачи. Лексический и синтаксический анализатор, семантический анализ. Структурная организация данных.
курсовая работа [680,1 K], добавлен 12.06.2011Характеристика базовых конструкций языков программирования. Изучение истории их развития и классификации. Определение основных понятий языков программирования. Описание основных операторов, которые используются в языках программирования высокого уровня.
курсовая работа [400,6 K], добавлен 10.11.2016Основные концепции языков программирования, механизмы типизации данных. Описание языков программирования и методов трансляции. Конечные автоматы и преобразователи. Общие методы синтаксического анализа. Формальные методы описания языкового перевода.
курс лекций [5,5 M], добавлен 04.12.2013Разработка программы для осуществления приведения КС-грамматики к нормальному виду. Особенности преобразования грамматик. Создание алгоритма удаления бесплодных и недостижимых символов, устранения правил с пустой правой частью. Исключение цепных правил.
курсовая работа [1,5 M], добавлен 06.01.2012Понятия языка программирования, разновидности и характеристика языков. Исторический обзор их создания и применения. Классификация, примеры использования. Характеристики языков программирования с точки зрения элементов объектной модели, их популярность.
реферат [463,6 K], добавлен 07.09.2009Устройство управления и синхронизации в структуре микропроцессора. Порядок синтеза конечного автомата (КА) для устройства управления ЭВМ. Алгоритм функционирования КА, заданный с помощью графа, функции переходов. Состояние триггеров в микросхеме.
методичка [1019,0 K], добавлен 28.04.2009Входная грамматика в структурированной форме. Функции переходов символьного преобразователя. Работа лексического анализатора. Структуры данных, символы действия. Описание семантики перевода. Построение и программная реализация атрибутного преобразователя.
курсовая работа [128,9 K], добавлен 03.07.2013Понятие, последовательность построения и схемная реализация цифрового автомата. Описание форм представления функций алгебры логики. Принципы минимизации функций выходов и переходов автомата, их перевода в базис. Сведенья о программе Electronics Workbench.
курсовая работа [2,0 M], добавлен 27.10.2010