Формальные языки

Пусть А= { а, b, и т.д. все малые латинские буквы}. Введем процедуру, порождающую все возможные слова в алфавите А, сначала слова длины «1», далее – «2» и т.д. – длины «n». Полученное множество слов обозначается как А* («*» – знак операции итерации).Понятно, что А* есть бесконечное множество слов. Процедура порождения слов описывается индуктивной схемой с единственной операцией, которая называется «конкатенация» (приписывание) и обозначается «·».

1°. Вводится пустое слово –Æ(А 0 = Æ)

2°. К пустому слову приписываются последовательно все буквы из алфавита А, получается слово длины «1», которые составляют множество А= { a, b,… }.

(n-1)°. Пусть порождено множество слов длины «n – 1 » – Аn 1

n°. Каждое слово y Î An получается из x Î An 1 приписыванием букв из алфавита, так что и т.д.

Формальным языком L называется любое подмножество A *, т.е. L Í A, таким образом язык L является отношением на А *.

Пример 1.6. Задан двухбуквенный алфавит А = { a,b }. А* – множество слов, состоящих из двух букв, приписанных в произвольном порядке. Например множество всех слов длины «2» – А2 = { aa, bb, ab, ba }, A3 = { aaa, aab,bba, bbb, aba, abb baa, bab } и т.д. для любого «n». Определим несколько примеров языков.

а) Язык L 1 = { aab, aabb } состоит из двух слов (конечный язык).

б) Язык L 2 = anbm; n = 1, 2, …, m = 1,2,…. Слово , а слово bab Ï L 2.

в) Язык L 3 = anbn; n = 1, 2, … содержит все слова, которые имеют одинаковое число букв а и b, например, aaabbbÎL 3, aaaabbbb Î L 3, а слова abab Ï L 3, bbaa Ï L 3.

г) Язык L 4 = x × x –1 – так называемый «зеркальный» язык, где x Î A *.

Слова abba Î L 4, baaaab Î L 4, а слова aba Ï L 4, aaa Ï L 4.

Из определения формального языка вытекает, что любой язык L суть некоторое n – арное отношение на А*, где n = 1, 2, ….


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: