Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


КОНЕЧНЫЕ АВТОМАТЫ И РЕГУЛЯРНЫЕ ЯЗЫКИ



Тема 1. Синтаксис языков

Алфавит, слово, язык

Рассмотрим самое простое понятие теории языков — понятие алфавита.

Алфавит — это произвольное непустое конечное множество V = {а 1, ..., а n}, элементы которого называют буквами или символами.

Обычно задают определенную нумерацию алфавита (как, скажем, для русского алфавита: «а» — первая буква, «б» — вторая и т. д. до 33-й — «я»). Впредь договоримся, фиксируя алфавит, записывать его буквы в порядке их номеров.

Определение 7.1. Словом или цепочкой в алфавите V называют произвольный кортеж из множества Vk( k декартовой степени алфавита V ) для различных k = 0, 1, 2,...

Например, если V = { a , b , c }, то (а ), ( b ), (с ), (а, b ), (а, b , с ), (с, b , a , а, с ) и т. д. есть слова в V .

При k = 0 получаем пустой кортеж, называемый в данном контексте пустым словом или пустой цепочкой и обозначаемый λ . Множество всех слов в алфавите V обозначают V * , а множество всех непустых слов в V — как V +. Слова, ради удобства чтения и простоты записи, будем записывать без скобок и запятых (ср. с записями кортежей). Так, для записанных выше слов получим: а, b , с, ab , abc , cbaac .

Такая запись слова согласуется с его интуитивным пониманием как цепочки следующих друг за другом символов. Тогда пустое слово — это слово, не имеющее символов, «пустой лист бумаги», на котором еще ничего не написано.

По определению, длина слова ω — число компонент кортежа, т. е. если ω V r, то длина слова ω равна r . Длину слова ω договоримся обозначать | ω |. Ясно, что для пустого слова | λ | = 0. Длину слова тем самым можно понимать как число составляющих это слово букв.

Докажем, что множество V * счетно. Для этого достаточно построить какую-либо нумерацию этого множества. Рассмотрим здесь нумерацию, называемую лексикографической.

В данной нумерации пустому слову присваивается номер 0, а буквам a 1, ..., апалфавита V — номера 1, ..., п соответственно. Если слово х имеет лексикографический номер lx, то слову х aiприсваивается номер nlx+ i . Отсюда следует, что лексикографический номер слова будет равен

Заметим, что последняя сумма напоминает запись числа в системе счисления по модулю n (мощности алфавита) с тем липа, различием, что используется цифра п, но не допускается цифра 0. Итак, по любому слову в алфавите V однозначно вычисляется его лексикографический номер. Обратно, любое натуральное число однозначно раскладывается по степеням п указанным выше образом.

Действительно, если дано число N , то при 0 ≤ N n оно служит номером пустого слова ( N = 0) или некоторой буквы алфавита. Иначе представим N в виде N = k 1n + r 0, где 1 < r 0< п.

Если k 1≤ n , то N есть номер слова . Иначе раскладываем k 1в виде где 1 < r 1< п. Тогда N = k 2n 2 + r 1n + r 0.

С числом k 2поступаем точно так же, как и с k 1. После конечного числа шагов получим разложение числа N в виде

где каждое число ri(0 ≤ i m ) находится в диапазоне от 1 до п. По полученному разложению N однозначно восстанавливается слово в V , имеющее номер N:

Пример 7.1. Вычислим номер слова cbaac в алфавите { a , b , с }. Имеем

З4· 3 + З3· 2 + З2· 1 + З1· 1 + 3 = 279.

Решим обратную задачу, найдя слово в данном трехбуквенном алфавите, имеющее номер 321.

Согласно приведенному выше алгоритму, получим

Следовательно, искомое слово есть cbbac.

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

Нам будет удобно в дальнейшем использовать следующую запись непустого слова х в алфавите V по буквам:

x = x (1) x (2)… x ( k ),

где x ( i ), 1 ≤ i k , — i -я буква слова х.

Определение. Языком в алфавите V называется произвольное подмножество множества V *.

Множество всех языков в алфавите V , т. е. множество 2 V*, есть булеан счетного множества, и, следовательно, оно в силу теоремы Кантора имеет мощность континуума.

Наша следующая задача — определить на множестве 2 V*всех языков в произвольном (но фиксированном! ) алфавите V алгебраическую структуру. На множестве 2 V*можно определять различные операции. Прежде всего языки — это множества, следовательно, над ними можно производить все те же операции, что и над множествами: объединение, пересечение, разность, дополнение и т. п. Универсальное множество в данном случае есть множество слов V * , которое называют универсальным языком.

Кроме перечисленных теоретико-множественных операций можно рассматривать и специальные операции над языками.

Прежде чем обратиться к этим операциям, определим операцию соединения (или конкатенации ) слов. Соединением слов х = х (1)х (2)... х ( k ) и y = у (1)у (2)... у (т ) называют слово

ху = х (1)х (2)... х ( k ) у (1)у (2)... у (т ).

По определению, считаем х λ = λ х = х для любого х. Соединение иногда обозначают точкой (.).

Неформально соединение ху получается приписыванием слова у справа к слову х. Таким образом, для любых двух слов х Vkи у Vmконкатенация ху Vk+m( k , m > 0). Следовательно, |ху | = | x | + | y |.

Из определения также следует, что соединение слов ассоциативно, т. е. для произвольных трех слов x , у, z имеет место x ( yz ) = (ху ) z , и поэтому — с учетом написанного выше свойства пустого слова — множество V * всех слов в алфавите V с операцией соединения образует моноид ( V * , ..., λ ). Единица моноида — пустое слово. Этот моноид есть не что иное, как свободный моноид, порожденный алфавитом V . Для него используют то же обозначение, что и для самого множества всех слов в алфавите V , т. е. V * .

На основе понятия соединения слов определим понятие вхождения одного слова в другое.

Определение. Вхождение слова х V * в слово у V * — это упорядоченная тройка слов ( u , х, v ), такая, что y = uxv .

При этом слово и называют левым, а слово v правым крылом указанного вхождения. Слово х называют основой вхождения.

Говорят, что слово х входит в слово у, если существует вхождение х в у. При этом также слово (цепочку) х называют подсловом (или подцепочкой ) слова (цепочки) у. Подцепочку х цепочки у называют началом (или префиксом ) цепочки у, если у = xz для некоторой непустой цепочки z ; если же для некоторой непустой цепочки z имеет место у = zx , то цепочку х называют концом (или постфиксом ) цепочки у.

Заметим, что каждое слово входит в себя само и пустое слово входит в любое слово.

Например, слова «цикл» и «циклоп» входят в слово «энциклопедия». Соответствующие вхождения записывают следующим образом:

(эн, цикл, опедия), (эн, циклоп, едия).

Может существовать несколько разных вхождений одного и того же слова х в некоторое слово у. Так, слово «абра» дважды входит в слово «абракадабра». Число вхождений пустого слова в данное слово р на единицу больше длины слова р. Среди всех вхождений слова х в слово у вхождение с наименьшей длиной левого крыла называют первым или главным вхождением x в y .

Так, вхождение ( λ , абра, кадабра) есть первое вхождение слова «абра» в слово «абракадабра».

Определение. Говорят, что вхождения (и, х, v ) и ( s, z , t ) слов х и z в одно и то же слово у не пересекаются , если существуют такие (может быть, и пустые) слова р и q , что у = uxpzt (и тогда v = pzt , a s = uxp ) или у = szqxv (и тогда и = szq , a t = qxv ) (рис. 7.1). В противном случае говорят, что указанные вхождения пересекаются.

Рис. 7.1

Так, вхождения слов «цикл» и «циклоп» в слово «энциклопедия» пересекаются, а два разных вхождения слова «абра» в слово «абракадабра» не пересекаются. Мы иногда будем использовать обозначение х у для утверждения «слово х входит в слово y ». Можно доказать, что ⊑ — отношение порядка.

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

Определение. Соединением (конкатенацией ) языков L L 2называют язык L 1L 2, состоящий из всех возможных соединений слов ху, в которых слово х принадлежит первому, а слово у — второму языку, т. е.

Итерацией языка L называют объединение всех его степеней:

Рассматривая объединение всех степеней языка L , начиная с первой, получим позитивную итерацию

Сформулируем основное алгебраическое свойство множества всех языков в алфавите V.

Теорема. Алгебра есть замкнутое полукольцо.

Проверка аксиом полукольца сводится к доказательству:

1) того, что по операции объединения множество всех языков образует коммутативный и идемпотентный моноид (с пустым множеством в качестве нейтрального элемента (нуль полукольца )); это тривиально ввиду известных свойств операции объединения множеств;

2) того, что по операции конкатенации множество языков образует моноид (с языком { λ }, состоящим из одного пустого слова, в качестве нейтрального элемента (единицы полукольца )); для этого достаточно доказать, что операция соединения языков ассоциативна, а также доказать для любого языка L тождество

{ λ } L = L { λ } = L ,

что вытекает из ассоциативности операции соединения слов и из тождества λ х = х λ = х для любого слова x ;

3) следующих тождеств:

(эти тождества определяют свойство дистрибутивности операции соединения относительно объединения).


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-03-16; Просмотров: 1294; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.022 с.)
Главная | Случайная страница | Обратная связь