Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
[01] Соколов В.А. Формальные языки и грамматики....doc
Скачиваний:
96
Добавлен:
29.10.2018
Размер:
1.44 Mб
Скачать

Лекция 7 Свойства регулярных языков

И

так, мы установили совпадение трех классов: автоматных языков, регулярных множеств и регулярных языков, а это означает эквивалентность всех трех определений и позволяет использовать то или иное определение класса регулярных языков в зависимости от конкретной задачи. Но этот результат дает повод задать вопрос: существуют ли другие классы языков, не совпадающие с регулярными? И нельзя ли из регулярных языков с помощью обычных теоретико-множественных операций и некоторых других (таких, как сцепление, итерация) получить языки, не являющиеся регулярными? Последний вопрос относится к свойствам алгебраической замкнутости класса регулярных языков.

Следующий вопрос связан с существованием алгоритмов, позволяющих определять те или иные свойства языков, например, конечен язык или бесконечен. Мы убедимся, что в классе регулярных языков для целого ряда важных случаев удается найти положительный ответ на вопрос о существовании алгоритма.

И наконец, последний вопрос: можно ли по данному языку определить, регулярен он или нет? Если язык регулярен, можно попытаться построить для него ДКА, регулярное выражение или регулярную грамматику. Но если язык не является регулярным, то требуется иной способ для ответа на вопрос. В частности, если известно некоторое свойство, которым в обязательном порядке обладают все регулярные языки, то можно попытаться показать, что данный язык не обладает этим свойством, и тогда этот язык, очевидно, не будет регулярным.

Замкнутость класса регулярных языков

теорема 7.1.

Класс регулярных языков замкнут относительно операции объединения, пересечения, дополнения, сцепления и итерации, т.е. если L1 и L2 – регулярные языки, то языки

L1L2, L1 L2, 1, L1 L2, L1*

также будут регулярными.

Доказательство.

Пусть L1 и L2 – регулярные языки, тогда существуют регулярные выражения p1 и p2 такие, что L1 = L(p1) и L2 = L(p2). По определению,

p1 + p2, p1p2 и p1*

– регулярные выражения, обозначающие языки L1 L2, L1L2, L1* соответственно. Следовательно, эти языки тоже регулярны, т.е. класс регулярных языков замкнут относительно объединения, конкатенации и итерации.

Для доказательства замкнутости относительно дополнения рассмотрим ДКА M = (Q, , , q0, F), который допускает язык L1. Тогда нетрудно видеть, что ДКА

= (Q, , , q0, Q\F)

допускает именно язык 1, являющийся дополнением к L1 в множестве * ( т.е. 1 = * \ L1). Действительно, заметим, что в определении ДКА мы предполагали, что * является всюду определенной функцией, т.е. для любой строки   * *(q0, ) определено. Следовательно, либо *(q0, )  F, т.е. является заключительным состоянием автомата М и в этом случае   L1, или же *(q0, )  = Q \ F и   1, откуда и получаем, что

1 = L().

Наконец, для доказательства замкнутости относительно пересечения воспользуемся известным соотношением:

L1L2 = .

Так как 1 и 2 регулярны, то их объединение тоже регулярно, а следовательно, и его дополнение - регулярный язык.

Следствие 7.2.

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

Действительно, это немедленно получается из равенства

L1 \ L2 = L12

и предыдущей теоремы.

Определение 7.3.

Пусть и Г - алфавиты, тогда функция

h : Г*

называется гомоморфизмом.

Иными словами, гомоморфизм - это подстановка, в которой каждый символ одного алфавита заменяется некоторой строкой в другом алфавите.

Область определения функции h может быть расширена на множество строк * очевидным образом:

если  = а1а2...аn и   *,

то h() = h(а1)h(а2)...h(аn).

Если L – язык в алфавите , то его гомоморфный образ по отношению к функции h определяется так:

h(L) = {h()    L}.

Пусть p – регулярное выражение для языка L, тогда регулярное выражение для языка h(L) может быть получено простой заменой в p каждого символа на его гомоморфный образ.

Пример 7.4.

Пусть  = {0,1} и Г = {a, b, c}.

Определим отображение h так:

h(0) = ab,

h(1) = bbc.

Тогда h(010) = abbbcab. Гомоморфный образ языка L = {00,010} – это язык h(L) = {abab, abbbcab}.

Пример 7.5.

Возьмем = {a, b}, Г = {b, c, d}. Положим

h(a) = dbcc,

h(b) = bdc.

Предположим, что язык L обозначается выражением

p = (a + b*)  (aa)*.

Тогда выражение

p1 = (dbcc + (bdc)*)  (dbccdbcc)*

будет обозначать язык h(L).

Теорема 7.6.

Пусть L – регулярный язык, а h – гомоморфизм, тогда h(L) – регулярный язык. Следовательно, класс регулярных языков замкнут относительно гомоморфизмов.

Доказательство.

Пусть L – регулярный язык, обозначаемый некоторым регулярным выражением p. Находим h(p), подставляя в p вместо каждого символа а   его образ h(a). Нетрудно видеть из определения регулярного выражения, что h(p) – тоже регулярное выражение. Кроме того, легко заметить, что это выражение h(p) обозначает именно язык h(L). Действительно, достаточно показать, что если строка   L(p), то образ этой строки h() принадлежит L(h(p)), и, наоборот, для каждой строки   L(h(p)) существует   L(p) такая, что  = h(). Оставляя детали этого рассуждения читателю в качестве упражнения, мы завершаем тем самым доказательство.