Регулярна мова
Регулярна мова (регулярна множина) — формальна мова третього (найвужчого) класу в ієрархії Чомскі.
Регулярну мову можна задати регулярною граматикою або регулярним виразом, або ж ДСкА чи НДСкА, що її розпізнають.
Від контекстно-вільних мов регулярні відрізняються додатковими умовами: права частина правил виведення має бути порожнім словом, термінальним, нетермінальним, або нетермінальний вслід за яким стоїть термінальний символ.
Для визначення приналежності мови до класу регулярних існує Лема про накачку для регулярних мов та теорема Майхілла-Нероде.
Означення
ред.Нехай — скінченний алфавіт. Регулярна мова в цьому алфавіті визначається рекурсивно:
- — пуста множина — це регулярна множина в алфавіті
- — пусте слово — це регулярна множина в алфавіті
- — однолітерна множина — регулярна множина в алфавіті
- Якщо та — регулярні множини, то такими є наступні множини:
- (операція об‘єднання);
- (операція конкатенації);
- (операція ітерації).
- Ніякі інші множини, окрім побудованих на основі ПП 1-4 не є регулярними множинами.
«Стандартними» способами опису регулярної мови є представлення її у вигляді скінченного автомату, регулярної граматики, або ж регулярного виразу[1].
Теорія автоматів
ред.Формальна мова є регулярною тоді й лише тоді, коли існує детермінований скінченний автомат здатний її розпізнати (акцептор)[2].
При чому, для кожної регулярної мови можна побудувати недетермінований скінченний автомат, що її розпізнає. Та навпаки, кожен недетермінований скінченний автомат розпізнає певну регулярну мову[3].
Властивості
ред.Регулярні мови замкнені відносно операцій об'єднання, перетину, конкатенації, доповнення та зірочки Кліні. Тобто, якщо та регулярні мови, тоді регулярними будуть мови: , , , , та [4].
Існують й інші операції, відносно яких замкнені регулярні мови. Так, наприклад, гомоморфне відображення регулярної мови також є регулярною мовою. Таким чином, регулярні мови замкнені відносно гомоморфізму[5].
Крім того, для будь-якої регулярної мови у стандартному представленні існує алгоритм, що визначає приналежність заданого слова до цієї мови[6]. Стандартне представлення регулярної мови також дає можливість створити алгоритм, який би перевіряв чи ця мова порожня, скінченна, або ж нескінченна[7].
Стандартне представлення регулярних мов також дає можливість створити алгоритм, який би перевіряв їх на рівність[8].
Примітки
ред.- ↑ (Розділ 4.2 в Linz)
- ↑ Визначення 2.3 в: Peter Linz (January 2016). 2.1 Deterministic Finite Accepters. An Introduction to Formal Languages and Automata (вид. 6-те). Jones & Bartlett Learning. ISBN 9781284077254.
- ↑ Теореми 3.4.1.2 та 3.4.1.3 в: by George Tourlakis (April 2012). 3.4 REGULAR GRAMMARS AND LANGUAGES. Theory of Computation. John Wiley & Sons. ISBN 9781118014783.
- ↑ теорема 4.1 у Linz
- ↑ теорема 4.3 у Linz
- ↑ (теорема 4.5 у Linz)
- ↑ (теорема 4.6 у Linz)
- ↑ (теорема 4.7 у Linz)
Див. також
ред.Це незавершена стаття про мови програмування. Ви можете допомогти проєкту, виправивши або дописавши її. |