Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовик (Отчет).doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.49 Mб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ

БРЯНСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Кафедра «Информатика и программное обеспечение»

СИНТЕЗ КОНЕЧНОГО РАСПОЗНАЮЩЕГО АВТОМАТА

Курсовой проект

по дисциплине «Теория вычислительных процессов и структур»

Выполнил: студ. гр. 11-ИиВТ 2с

________________ Пасецкий И.А.

«___»___________ 2013 г.

Руководитель: асс. каф. ИиПО

________________ Трубаков Е.О.

«___»___________ 2013 г.

Брянск 2013

СОДЕРЖАНИЕ

Введение 1

1.Построение праволинейной грамматики 4

2.Построение автоматной грамматики по праволинейной 7

3.Построение недетерминированного конечного автомата 8

4.Преобразование недетерминированного конечного автомата в детерминированный 11

5.Минимизация числа состояний автомата 16

6.Программная реализация конечного автомата 20

7.Использование сетей Петри при переходе от грамматики к минимальному автомату 22

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

9.Структурный синтез автомата 29

10.Реализация автомата 40

Заключение 46

Список использованной литературы 47

Введение

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

Основой изучения данного раздела теории является

  • построение базовых формальных моделей описания логических

структур, динамики поведения вычислительных структур;

  • выработка навыков проектирования вычислительных систем;

  • формирование представления о методах, используемых при решении задач анализа, синтеза организации функционирования вычислительных структур и системного программного обеспечения.

1.Построение праволинейной грамматики

Исходными данными для курсового проекта являются две таблицы (табл.1, табл.2) и правила вывода R.

Табл.1 состоит из трех строк, первая из которых содержит перечисление 18 символов Ci. Во вторую строку Si записываются первые 18 символов фамилии, имени и отчества студента с обязательными пробелами между фамилией именем и отчеством. В третью строку для каждой из 18 букв строки Si заносится символ из алфавита {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

X1

X4

X6

X1

X7

X3

X0

X5

X3

X0

X6

X7

X5

X1

X7

X6

X0

Табл.2 построена на основе подсчета появлений каждой буквы русского алфавита в фамилиях, именах и отчествах. Затем буквы сформированы в восемь групп с таким расчетом, чтобы появление каждого из символов x0-x7 было равновероятным.

Таблица 2

А

Б

В

Г

Д

Е

Ж

3

И

Й

К

Л

М

Н

О

П

x1

x5

x2

x4

x6

x6

x4

x3

x3

х0

x7

х0

x3

x7

x4

x5

Р

С

Т

У

Ф

X

Ц

Ч

Ш

Щ

Ь

Ы

Э

Ю

Я

хо

x4

x5

x7

x2

x5

x1

x2

x2

хо

x6

x1

x1

x3

x7

x5

Грамматикой G[S] называется непустое множество правил вывода (продукционных правил), где S - начальный символ.

Правило вывода (продукция) представляет собой упорядоченную пару (R,х) и записывается в виде R::=х, где: R - левая часть правила (в данном случае символ); x - непустая цепочка, образующая правую часть правила.

Грамматика задается на алфавите V, называемым словарем. Алфавит V это непустое множество элементов (символов). В свою очередь, цепочка х представляет некоторую последовательность символов алфавита V (возможно повторяющихся). Число входящих в цепочку символов называют длиной цепочки.

Словарь состоит из двух непересекающихся подмножеств: Vn - словарь нетерминальных символов; Vt - словарь терминальных символов. Таким образом, формальная грамматика G есть четверка G=(VN,Vt,S,R), причем SVn.

Продукция (правило вывода) называется линейной, если как в правой, так и в левой части продукции используется не более одного нетерминального символа. Продукция называется праволинейной, если нетерминал находится справа от всех символов правой части правила. Аналогично, если нетерминал находится левее всех других символов правой части, продукция называется леволинейной. Грамматика также называется праволинейной или леволинейной, если каждая из ее продукций является соответственно праволинейной или леволинейной.

Для рассматриваемой в работе грамматики G=(Vn,Vt,S,R)

Vn={S,A,B,C,D,E,F}; Vt={C1,C23, ..., C18};

R - множество продукций (правил вывода): Sc1c2c3A; Sc1c4c5B; Sc6С; Sс7F; Ac8D; Ac9; Bc8E; Bc9; Cc8E; Cc9; Dc10S; Dc11; Ec10S; Eс11; Fc12c13c14c15; Fc16c13c14c15; Fс17 c18 c15.

Анализ продукций данной грамматики показывает, что все они праволинейны, следовательно, грамматика будет праволинейной.

Приведем грамматику к виду G'=(Vn,V't,S,R'), где

V't = {xo,x1, ..., x7} - новый терминальный словарь;

R' - множество правил вывода, получаемых заменой символов из словаря Vt, на символы из словаря Vт в соответствии с табл1.

В рассматриваемом примере эти правила имеют вид

S X5 X1 X4 A | X5 X6 X1 B | X7 C | X3 F

A X0 D | X5

B X0 E | X5

C X0 D | X5

D X3 S | X0

E X3 S | X0

F X6 X7 X5 X1 | X7 X7 X5 X1 | X6 X0 X1

здесь “ | ” это металингвистический символ «или».

Примерами цепочек, которые принадлежат языку L(G'), порождаемому грамматикой G', являются (x5x1x4x5, x7x0x0, x3x6x0x1). В то же время, цепочки (x5х5х6x1х5, х4x6x0x1) не принадлежат языку L(G'), так как их нельзя вывести в грамматике G'.

Языком L грамматики G(S) называется множество всех предложений L(Y), где Y - предложение. Предложением называется состоящая из терминальных символов сентенциальная форма Y. Сентенциальной формой называется цепочка Y, выводимая из начального символа S', грамматики G(S'),что можно записать как S=>*Y, где =>* это рефлексивное транзитивное замыкание отношения простого вывода.