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

Связь между регулярными выражениями и автоматными языками

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

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

Теорема 5.9.

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

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

Рассмотрим элементарные выражения , e и a. Автоматы, распознающие обозначаемые ими языки, представлены на рис. 5.1 в пунктах а), b) и с) соответственно:

a) b) c)

а

q0 q1 q0 q1 q0 q1

НКА, распознающий  НКА, распознающий {} НКА, распознающий {a}

Рис. 5.1. НКА для элементарных выражений

Пусть теперь p и q – произвольные регулярные выражения, а M(p) и M(q) – конечные автоматы, допускающие множества, обозначаемые этими выражениями. Договоримся схематично изображать автомат M(r), допускающий множество, обозначаемое регулярным выражением r, так, как это представлено на рис. 5.2.

M(r)

q0 qf

Рис. 5.2. Схематичное представление НКА, допускающего L(r)

На этой схеме левая вершина-кружок представляет собой начальное состояние в диаграмме переходов автомата M(r), а правая вершина-квадрат – его заключительное состояние. Так как для каждого конечного автомата существует эквивалентный ему конечный автомат с одним заключительным состоянием, то данное представление не уменьшает общность рассуждений. Пользуясь таким схема-тическим представлением для НКА M(p) и M(q), нетрудно построить диаграммы переходов НКА для множеств L(p + q) = L(p)  L(q) (см. рис. 5.3), для L(pq) = L(p) L(q) (см. рис. 5.4) и для L(p*) =(L(p))* (см. рис. 5.5).

M(p)

 

M(q) 

Рис. 5.3. НКА для L(p + q)

M(p) M(q)

  

Рис. 5.4. НКА для L(pq)

М(р)

 

Рис. 5.5. НКА для L(p*)

Как видно из рисунков, заключительные состояния автоматов M(p) и M(q) перестают быть таковыми при конструировании новых автоматов, имеющих свои собственные заключительные состояния, обозначаемые, как обычно, квадратиками.

На основании индукции заключаем, что, поступая так систематически, мы можем построить НКА для любого регулярного выражения r, а значит, язык L(r) – автоматный. Теорема доказана.

Пример 5.10.

Найти НКА, допускающий язык L(p), где

p = (a + bb)*  (ba* + ).

Сначала строим автоматы М1 и М2 для выражений (a + bb) и (ba* + ) (см. рис. 5.6). Затем, соединяя их по теореме 5.9, получаем требуемый НКА (рис. 5.7).

a

b b b

М1 a M2

a) НКА для (а + bb) б) НКА для (ba* + )

Рис. 5.6. Автоматы М1 и М2

a

b b   b  

М1 a M2

Рис. 5.7. НКА, допускающий язык L((a + bb)* (ba* + ))

Ожидаемым, но отнюдь не очевидным является обратное утверждение. Оно известно под названием "теорема Клини".

Теорема 5.11.

Для любого автоматного языка L существует регулярное выражение р такое, что L = L(p).

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

Пусть L – автоматный язык, т.е. существует ДКА

М = (Q, , , q0, F)

такой, что L = L(M). Если F = {qr1, qr2, ..., qrt}, тогда из ДКА М можно получить t автоматов М1, М2, ..., Ме, положив

Мi = (Q, , , q0, {qri}), i = 1, ..., t.

Нетрудно видеть, что

L = L(M1)  L(M2)  ...  L(Mt).

Если мы сможем доказать, что для любого L(Мi) существует регулярное выражение pi, которое обозначает это множество, тогда для L искомое регулярное выражение будет следующим:

p = p1 + p2 + ... + pt.

Таким образом, достаточно рассмотреть случай, когда ДКА М имеет одно-единственное заключительное состояние. Пусть

М = (Q, , , q1, { qn }),

где Q = {q1, q2, ..., qn}. Возьмем D(M) – диаграмму переходов автомата М и рассмотрим множество всех путей в D(M), ведущих из вершины qi в вершину qj и проходящих через вершины, номера которых не превышают s, sn. Если промежуточных вершин нет, то будем считать, что s = 0. Соответствующее множество строк, помечающих эти пути, обозначим через Lsij, 1  in, 1  jn, 1  sn.

Покажем индукцией по s, что для любых i, j, s, удовлетворяющих указанным выше условиям, множеству Lsij соответствует некоторое регулярное выражение psij, которое обозначает это множество.

Пусть s = 0. Возможны два случая:

  1. ij, т.е. вершины qi и qj различны. Если дуга между ними отсутствует, то L0ij =  и p0ij = . Если же дуга (qi, qj) существует, она может быть помечена любым символом из

 = {a1, a2, ..., am},

следовательно, множество L0ij в этом случае представимо выражением вида

где  , 1  ktm.

  1. i = j, т.е. вершины qi и qj совпадают. В этом случае дуга представляет собой петлю в вершине qi, помеченную некоторым символом из . Если же дуга отсутствует, то это можно интерпретировать как -переход из вершины qi в qi. Таким образом, можем положить здесь

Допустим, что для любого sk наше утверждение относительно множеств Lsij верно. Пусть теперь s = k + 1. Тогда множество Lk+1ij можно представить следующим образом:

Lk+1ij = LkijLki k+1(Lkk+1 k+1)* Lkk+1 j .

Действительно, множество путей из вершины qi в вершину qj в этом случае состоит из всех путей, либо не проходящих через вершину qk+1 (это Lkij), либо проходящих через qk+1 (и в этом случае весь путь разбивается на 3 участка: от qi до qk+1, из qk+1в qk+1 и от qk+1 до qj). По предположению индукции существуют регулярные выражения

pkij, pki k+1, pkk+1 k+1, pkk+1 j,

обозначающие, соответственно, множества Lkij, Lki k+1, Lkk+1 k+1 и Lkk+1 j. Но тогда выражение

pk+1ij = pkij + pki k+1  (pkk+1 k+1)*  pkk+1 j

будет искомым регулярным выражением для множества Lk+1ij. По индукции заключаем, что наше утверждение верно, т.е. для любого s  0 существует регулярное выражение psij, обозначающее множество Lsij. Для завершения доказательства теоремы нам теперь достаточно заметить, что

L(M) = Ln1n,

a следовательно, для автоматного языка L(M) тоже существует регулярное выражение, которое его обозначает.

Теорема доказана.

Следствие 5.12.

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

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