2.1.2 Автоматні граматики й регулярні вирази
Розглянемо мову L = {anbn | nі1}. Множина рядків цієї мови є підмножиною рядків мови, певного регулярного виразу R = aa*bb*. Дійсно в L всі рядки складаються тільки з тих послідовностей a й b, у яких символи a повторюються один і більше раз, за ними треба послідовність символів b, які точно повторюють попереднє їм кількість символів а. Для L(R) – ланцюжка включають всі послідовності символів а, за яких треба b, причому й таких у тому числі послідовностей, де кількість може бути й не рівним b. Тому в загальному випадку регулярний вираз R відповідає мові, породжуваному граматикою G[I]; такому що L (G[I]) = {anbm| n, m і 1} із графом переходів представленим на рис.12
Рисунок 12 Регулярний вираз R
Регулярний вираз R відповідний мові, породжуваної граматики G[I] із графом переходів
Відповідна автоматна граматика легко підбирається по графу G[I]:
I→a
B→Ab | b
C→a | e
У такий спосіб автоматна граматика G[I] породжує ту ж мову, що й мова L(R), визначений регулярним виразам L(R) = L (G[I]). У цьому випадку можна говорити про еквівалентності регулярного виразу R й автоматної граматики G[I]. Тому автоматну граматику G[I] ще називають регулярною, що й було зроблено в класифікації Хомського.
Змістовними прикладами використання регулярного виразу (РВ) є побудовані на принципах РВ сучасні лексичні аналізатори. На поняттях РВ і регулярних визначень побудована мова специфікацій генератора лексичних аналізаторів LEX. Багато конструкцій ОС UNIX використають РВ. Всі шаблони, де немає збалансованих конструкцій можуть легко представлятися регулярними виразами. Збалансованими конструкціями в цьому випадку є конструкції типу {a nbn| n>=1}. До таких конструкцій належить, наприклад, інфіксна форма арифметичних скобкових виразів.
Висновок
Отже, скінченний автомат – в теорії алгоритмів математична абстракція, що дозволяє описувати шляхи зміни стану об'єкту залежно від його поточного стану і вхідних даних, за умови, що загальна можлива кількість станів скінченна.
Скінченні автомати широко використовуються на практиці, наприклад в синтаксичних, лексичних аналізаторах, і тестуванні програмного забезпечення на основі моделей.
Мислення в термінах скінченних автоматів (тобто розбиття виконання програми на кроки автомата й передача інформації від кроку до кроку через стани) необхідно при побудові об'єктно-орієнтованих додатків. У цьому випадку програмування в стилі скінченних автоматів виявляється єдиною альтернативою породженню множин процесів або потоків управління.
Часто поняття станів і машин станів використається для специфікації програм. Так, при проектуванні програмного забезпечення за допомогою UML для опису поведінки об'єктів використаються діаграми станів. Крім того, явне виділення станів використовується в описі мережних протоколів.
Література
1 Бабич Микола Павлович,Жуков Ігор Анатолійович Комп`ютерна схемотехніка.
2 Бронштейн, И.Н. Справочник по математике для инженеров и учащихся вузов / И.Н. Бронштейн, К.А. Семендяев. – М.: Наука, 2007. – 708 с.
3 Дехтярь М.И. Введение в схемы, автоматы и алгоритмы. – М.: Наука, 2002. С. 642.
4 Коган Д.И., Бабкина Т.С. Концепции конечного автомата и регулярного языка. Операции над регулярными языками. М.: Наука, 2000.
5 Конечный автомат–http://ru/wikipedia.org/wiki/Конечный_автомат.
6 Лупал А.М. Теория автоматов. Учебное пособие/СПбГУАП. – СПб., 2000. – 120 с., ил.
7 Мозговой, М.В. Классика программирования: алгоритмы, языки, автоматы, компиляторы. Практический подход. / М.В. Мозговой. – М.: Наука и Техника, 2006. С. 320.
8 Семакин, И.Г. Основы программирования. / И.Г. Семакин, А.П. Шестаков. – М.: Мир, 2006. C. 346.
9 Симанков, В.С. Основы функционального программирования / В.С. Симанков, Т.Т. Зангиев, И.В. Зайцев. – Краснодар: Куб ГТУ, 2002. – 160 с.
10 Регулярные выражения – http: // www.spo-theory.ru/ yazyki-i-regulyarnye-vyrazheniya/4–6-celesoobraznost-perehoda-ot-nka-k-dka.html
11 Фридл Дж. Регулярные выражения. СПб.: Питер, 2002.