2011 !Л13 ДМ КОБ Миним.ppt
- Количество слайдов: 74
• ДИСКРЕТНАЯ МАТЕМАТИКА
С. 130 -134, 134 -143
ДМ 2. Теория формальных языков и автоматов. • Тема 4. Логические автоматы • Тема 5. Тестирование логических автоматов • Тема 6. Элементы теории кодирования • Тема 7. Автоматы и формальные языки
• Т 7. Автоматы, и формальные языки
• Регулярные языки и конечные автоматы
• Множество всех слов, распознаваемых автоматом, мы назвали языком.
Автоматный язык • Грамматика типа 3 – имеют правила вида А a. B, либо A b, где А, В N; a, b T. • Здесь A, B, a, b – одиночные символы (не цепочки) соответствующих словарей. • A, B - состояния автомата, a, b - входные символы
. • Суммой языков L и L´ называется язык, который обозначается L + L´ и получается объединением множеств L и L´, т. е. • L + L´ = • Сумма языков состоит из слов, принадлежащих хотя бы одному из языков L и L´. Поэтому L + L´ = L´ + L.
. • Далее конкатенацией (или соединением) слов w и w´ будем называть слово ww´, полученное приписываем справа слова w´ к слову w. • Например, конкатенацией слов ba и cba будет слово bacba. • Из этих же слов можно получить слово cbaba, которое является конкатенацией cba и ba. • В общем случае конкатенации ww´ и w´w различаются.
• Произведением языков L и L´ называется язык, который обозначается L·L´ и получается в результате конкатенации всех возможных слов w и w´, где w принадлежит языку L, а w´ – языку L´, • Пример 1. Пусть L = {a, cb}, L´ = {ab, bсb}. Тогда • L·L´ = {aab, abcb, cbab, cbbcb}, • L´·L = {aba, abcb, bcba, bcbcb}. • Слово abcb принадлежит обоим языкам L·L´ и L´·L.
• Итерацией языка L называется язык, который обозначается L* и получается в результате сложения бесконечного числа языков
• Пусть имеется алфавит • А = {а 1, а 2, …, аs}. Одноэлементные языки а 1, а 2, …, аs, а также язык, содержащий только пустое слово Λ, будем называть элементарными языками.
• Регулярным языком называется такой язык, который можно получить из элементарных языков с помощью конечного числа операций сложения, умножения и итерации.
• Пусть автомат с начальным состоянием v 1 и заключительным состоянием v 3 задан графом • Язык L можно задать регулярным выражением • b·(a + b)* + a·b*·а·(a + b)* v 2 b a a v 3 v 1 b a+b
• ТЕОРЕМА КЛИНИ (основная теорема теории автоматов). • Язык L распознается конечным детерминированным автоматом тогда и только тогда, когда L – регулярный язык.
Stephen C Kleene-19091994. США.
Хомский, Аврам Ноам
• Это теоретическая основа многих информационных технологий, таких как разработка математического обеспечения вычислительных систем, проектирование компиляторов и синтаксических анализаторов для языков программирования, создание лингвистических структур для баз данных и знаний
• Понятие о задании автомата сетью Петри
Начальное состояние — маркировка 100; возбуждены переходы t 1 и t 2.
Матричное задание СП р 1 1 р 0 2 р 0 3 Шаг 0
Если срабатывает t 1, то фишка забирается из р1 и передается в р2. р 1 р 2 р 3 Шаг 0 0 0 1
Получаем маркировку 010, возбужден только переход t 3; после его срабатывания сеть возвращается к начальной маркировке 100. р1 р2 р3 Шаг 1 0 0 1 0 1 1 0 0 2
Если срабатывает t 2, то фишки появляются в р2 и р3. Получаем маркировку 011, при которой возбуждены переходы t 3 и t 4, каждый из которых может сработать. р1 р2 р3 Шаг 1 0 0 1 1 1
Если срабатывает t 4, то сеть возвращается к начальной маркировке р1 р2 р3 Шаг 1 0 0 1 1 0 0 2
срабатывание t 3 приводит к маркировке 101. р1 р2 р3 Шаг 1 0 0 1 1 0 1 2
• Магазинный автомат
Магазин - стек • Стек (англ. stack — стопка) — структура данных с методом доступа к элементам LIFO (англ. Last In — First Out, «последним пришел — первым вышел» ). • Стек - магазин - по аналогии с магазином в огнестрельном оружии (стрельба начнётся с патрона, заряженного последним
Стек
• Стеки широко используются в вычислительной технике — так для отслеживания точек возврата из подпрограмм стек вызовов, который является неотъемлемой частью архитектуры большинства современных процессоров.
• Языки программирования высокого уровня используют стек вызовов для передачи параметров при вызове процедур.
Стек FIFO First In First Out
• Лекция 13
• Эквивалентность автоматов. Теорема Мура
Автоматы А и В
• Их реакции на входную цепочку aabbabb одинаковы:
• Эквиваленты ли эти автоматы? • Перебрать все входные цепочки невозможно – их бесконечно много.
• Поэтому проблема эквивалентности автоматов нетривиальна. • К счастью, существует метод решения этой проблемы. • Он основан на понятии прямого произведения автоматов.
Теорема Мура.
Теорема Мура. Два конечных автомата с одинаковым входным алфавитом эквивалентны тогда и только тогда, когда для любого достижимого состояния в их прямом произведении А × В функции выходов одинаковы:
Два конечных автомата с одинаковым входным алфавитом эквивалентны тогда и только тогда, когда для любого достижимого состояния в их прямом произведении А × В функции выходов одинаковы:
Параллельно работающие на одном входе автоматы
Граф прямого произведения автоматов А и В - автомат А × В
Удалим недостижимые состояния
Видно, что для каждого состояния выполняется выдача пар одинаковых выходных сигналов. Следовательно, автоматы А и В эквивалентны.
Минимизация автоматов
• Минимизация конечных автоматов • Разные автоматы могут функционировать одинаково, даже если у них разное число состояний. • Важной задачей теории автоматов является нахождение минимального автомата, реализующего заданное автоматное отображение.
№ y(t) π 0 Функции переходов и выходов ψ z(t) y(t+1) а b 1 3 6 1 0 2 4 8 0 1 3 1 4 1 0 4 7 9 0 1 5 9 1 1 0 6 3 5 1 0 7 4 3 0 1 8 4 2 1 0 9 5 7 1 0
Начальное разбиение – это один блок, включающий все состояния: 0= {А 0 <1, 2, 3, 4, 5, 6, 7, 8, 9>}.
• Строим 1 – те состояния, которые не различаются цепочкой длины 1 – то есть символом либо а, либо b. • Видим, что состояния разбиваются на два блока – в первом реакции 1, 0, во втором – 0, 1: 1= {А 1=<1, 3, 5, 6, 8, 9>; В 1=<2, 4, 7>}
№ y(t) π 0 Функции переходов и выходов ψ z(t) y(t+1) Разбиение а b π 1 1 3 6 1 0 А 1 2 4 8 0 1 В 1 3 1 4 1 0 А 1 4 7 9 0 1 В 1 5 9 1 1 0 А 1 6 3 5 1 0 А 1 7 4 3 0 1 В 1 8 4 2 1 0 А 1 9 5 7 1 0 А 1
• Теперь смотрим, в какие блоки переходит автомат из блоков 1 под воздействием символов а, либо b.
Итак, в первой строчке под воздействием «а» осуществляется переход в состояние 3 – это блок А 1, под воздействием «b» осуществляется переход в состояние 6, это тоже блок А 1. Так и записываем. π 1= {А 1 = <1, 3, 5, 6, 8, 9>; В 1=<2, 4, 7>}. № y(t) Функции переходов и выходов y(t+1) π1 y(t+1) ψ z(t) а b а b π 2 1 3 6 1 0 А 1 А 2 2 4 8 0 1 3 1 4 1 0 4 7 9 0 1 5 9 1 1 0 6 3 5 1 0 7 4 3 0 1 8 4 2 1 0 9 5 7 1 0
Во второй строчке под воздействием «а» осуществляется переход в состояние 4 – это блок В 1, под воздействием «b» осуществляется переход в состояние 6, это блок А 1. π 1= {А 1 = <1, 3, 5, 6, 8, 9>; В 1=<2, 4, 7>}. № y(t) Функции переходов и выходов y(t+1) π1 y(t+1) ψ z(t) а b а b π 2 1 3 6 1 0 А 1 А 2 2 4 8 0 1 В 1 А 1 В 2 3 1 4 1 0 4 7 9 0 1 5 9 1 1 0 6 3 5 1 0 7 4 3 0 1 8 4 2 1 0 9 5 7 1 0
В третьей строчке под воздействием «а» осуществляется переход в состояние 1 – это блок А 1, под воздействием «b» осуществляется переход в состояние 4, это блок В 1. π 1= {А 1 = <1, 3, 5, 6, 8, 9>; В 1=<2, 4, 7>}. № y(t) Функции переходов и выходов y(t+1) π1 y(t+1) ψ z(t) а b а b π 2 1 3 6 1 0 А 1 А 2 2 4 8 0 1 В 1 А 1 В 2 3 1 4 1 0 А 1 В 1 С 2 4 7 9 0 1 5 9 1 1 0 6 3 5 1 0 7 4 3 0 1 8 4 2 1 0 9 5 7 1 0
В четвёртой строчке под воздействием «а» осуществляется переход в состояние 7 – это блок В 1, под воздействием «b» осуществляется переход в состояние 9, это блок А 1. Действуя аналогично, получаем всю таблицу № y(t) y(t+1) π 1= {А 1 = <1, 3, 5, 6, 8, 9>; В 1=<2, 4, 7>}. Функции переходов и выходов π1 y(t+1) ψ z(t) а b а b π 2 1 3 6 1 0 А 1 А 2 2 4 8 0 1 В 1 А 1 В 2 3 1 4 1 0 А 1 В 1 С 2 4 7 9 0 1 В 1 А 1 В 2 5 9 1 1 0 А 1 А 2 6 3 5 1 0 А 1 А 2 7 4 3 0 1 В 1 А 1 В 2 8 4 2 1 0 В 1 D 2 9 5 7 1 0 А 1 В 1 С 2
Получили π2 = {А 2 = <1, 5, 6>; В 2=<2, 4, 7>; С 2=<3, 9>; D 2=<8>}. № y(t) Функции переходов и выходов y(t+1) π1 π y(t+1) ψ z(t) 2 а b а b 1 3 6 1 0 А 1 А 2 2 4 8 0 1 В 1 А 1 В 2 3 1 4 1 0 А 1 В 1 С 2 4 7 9 0 1 В 1 А 1 В 2 5 9 1 1 0 А 1 А 2 6 3 5 1 0 А 1 А 2 7 4 3 0 1 В 1 А 1 В 2 8 4 2 1 0 В 1 D 2 9 5 7 1 0 А 1 В 1 С 2
Строим π3. При его построении уже не нужно анализировать, в какой блок π2 переходит автомат из состояния 8, поскольку оно единственное в π2 и дальше дробиться не будет. π2 = {А 2 = <1, 5, 6>; В 2=<2, 4, 7>; С 2=<3, 9>; D 2=<8>}. № y(t) Функции переходов и выходов y(t+1) π2 y(t+1) ψ z(t) а b а b π3 1 3 6 1 0 С 2 А 3 2 4 8 0 1 В 2 D 2 В 3 3 1 4 1 0 А 2 В 2 D 3 4 7 9 0 1 В 2 С 2 5 9 1 1 0 С 2 А 3 6 3 5 1 0 С 2 А 3 7 4 3 0 1 В 2 С 2 8 4 2 1 0 В 2 Е 3 9 5 7 1 0 А 2 В 2 D 3
Получаем разбиение π3= {А 3 = <1, 5, 6>; В 3=<2>; С 3=<4, 7>; D 3=<3, 9>; Е 3=<8>}. π2 = {А 2 = <1, 5, 6>; № Функции переходов π2 В 2=<2, 4, 7>; С 2=<3, 9>; D 2=<8>}. y(t) и выходов y(t+1) ψ z(t) а b а b π3 1 3 6 1 0 С 2 А 3 2 4 8 0 1 В 2 D 2 В 3 3 1 4 1 0 А 2 В 2 D 3 4 7 9 0 1 В 2 С 2 5 9 1 1 0 С 2 А 3 6 3 5 1 0 С 2 А 3 7 4 3 0 1 В 2 С 2 8 4 2 1 0 В 2 Е 3 9 5 7 1 0 А 2 В 2 D 3
Строим π4 № y(t) Функции переходов и выходов y(t+1) π3 y(t+1) ψ z(t) а b а b 1 3 6 1 0 D 3 А 4 2 4 8 0 1 С 3 Е 3 В 4 3 1 4 1 0 А 3 С 4 4 7 9 0 1 С 3 D 4 5 9 1 1 0 D 3 А 4 6 3 5 1 0 D 3 А 4 7 4 3 0 1 С 3 D 4 8 4 2 1 0 С 3 В 3 Е 4 9 5 7 1 0 А 3 С 4
Получаем разбиение π4= {А 4 = <1, 5, 6>; В 4=<2>; С 4=<4, 7>; D 4=<3, 9>; Е 4=<8>}. Поскольку π4 = π3, искомое разбиение найдено. Минимальный автомат имеет 5 состояний, а его функции переходов и выходов определяются так (берём за основу разбиение π3): (А 3, а)= D 3, ψ (А 3, а)=1 и так далее.
• Рассмотрим особенности нахождения классов эквивалентности для автомата Мили
Первый шаг • Находясь в состояниях 1, 2, 3 и 6, автомат преобразует входной символ a в выходной символ a, а в состояниях 4 и 5 преобразует а в b. • По входному символу b классы А 1 и В 1 не разбиваются. № a b 1 a, 2 b, 5 2 a, 5 b, 4 3 a, 1 b, 5 4 b, 6 a, 1 5 b, 3 a, 1 6 a, 1 b, 4
• Поэтому на первом этапе множество состояний V расщепляется по входному символу а на два класса: 1 А 1 = {1, 2, 3, 6} и В 1 = {4, 5}.
Второй шаг • Класс В 1 не разбивается, т. к. из состояний 4 и 5 под действием входного сигнала а автомат переходит в состояния 6 и 3, которые принадлежат одному классу А 1, а под действием сигнала b – в состояние 1, которое тоже принадлежат классу А 1. № a b 1 a, 2 b, 5 2 a, 5 b, 4 3 a, 1 b, 5 4 b, 6 a, 1 5 b, 3 a, 1 6 a, 1 b, 4
Второй шаг • Класс А 1 разбивается по символу а на два класса: А 2 = {1, 3, 6} и В 2 = {2}. Действительно, под действием входного символа а из состояний 1, 3 и 6 автомат переходит в состояния 2 и 1, которые принадлежат классу А 1, а из состояния 2 – в состояние 5, которое классу А 1 не принадлежит. № a b 1 a, 2 b, 5 2 a, 5 b, 4 3 a, 1 b, 5 4 b, 6 a, 1 5 b, 3 a, 1 6 a, 1 b, 4
Второй шаг • Поэтому группа состояний 1, 3 и 6 после разбиения класса А 1 не может попасть в один новый класс вместе с состоянием 2. • Класс А 2 далее не разбивается, поскольку под действием символа b автомат из состояний 1, 3 и 6 попадает в состояния 5 и 4, которые принадлежат одному классу C 2. № a b 1 a, 2 b, 5 2 a, 5 b, 4 3 a, 1 b, 5 4 b, 6 a, 1 5 b, 3 a, 1 6 a, 1 b, 4
Второй шаг Таким образом, по окончании второго этапа получаем разбиение на три класса: № a b π1 π2 1 2/a 5/b А 1 А 2 2 5/a 4/b А 1 В 2 3 1/a 5/b А 1 А 2 2={А 2 = <1, 3, 6>; 4 6/b 1/a В 1 С 2 5 3/b 1/a В 1 С 2 6 1/a 4/b А 1 А 2 В 2 = <2>; С 2 = <4, 5>}.
• М =< К, Σ, π, s, F, S, ε > • K — конечное множество состояний автомата; • Σ — допустимый входной алфавит, из которого формируются строки, считываемые автоматом; • s— единственно допустимое начальное состояние автомата; • π -функция переходов из состояний в другие состояния; • F— множество конечных состояний, причём допустимо F=Ø, и F=K, • S — алфавит памяти (магазина), • ε— нулевой символ памяти. • Память работает как стек, то есть для чтения доступен последний записанный в неё элемент
• Таким образом, функция перехода является отображением • То есть, по комбинации текущего состояния, входного символа и символа на вершине магазина автомат выбирает следующее состояние и, возможно, символ для записи в магазин. • В случае, когда в правой части автоматного правила присутствует ε, в магазин ничего не добавляется, а элемент с вершины стирается. • Если магазин пуст, то срабатывают правила с ε в левой части.


