Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекц_я 3.1перетв_НСАдоДСА_рег_вирази.doc
Скачиваний:
4
Добавлен:
27.11.2019
Размер:
116.74 Кб
Скачать

4.1.2. Конечные автоматы и а-грамматики

Установим теперь соответствие между А-грамматиками и конечными автоматами. Грамматика G = (N,T,P,S) и автомат A = (Q,T,t,q0,F) называются соответствующими друг другу, если N = Q, S = q0, X  aY  P     (X,a)   t,   X    P      F.

Для того, чтобы доказать, что в этом случае L(G) = L(A), введем понятие диаграммы А-грамматики. Это помеченный ориентированный граф, вершинами которого являются символы из N, помеченная дуга XaY соответствует правилу X  aY. Если X    P, то вершину X будем изображать двойным кружком.

Пример 4.2. Построенная в примере 3.11 А-грамматика для чисел представляется диаграммой

Очевидны также следующие леммы.

Л е м м а  4.2. G*Y     в диаграмме грамматики есть путь из X в Y, метки дуг которого образуют цепочку . 

Л е м м а  4.3. Графы соответствующих друг другу грамматики и автомата совпадают. 

Из лемм 4.1-4.3 непосредственно следует

Т е о р е м а  4.1.  L(G) = L(A) для соответствующих друг другу грамматики G и автомата A. 

Заметим, что автомат, соответствующий грамматике чисел, является детерминированным. Но не всегда легко записать детерминированный автомат для сложного регулярного языка. В следующем разделе рассматривается способ построения наиболее эффективного детерминированного автомата для произвольного регулярного языка. Это построение может осуществляться автоматически.

С л е д с т в и е  4.1. Класс регулярных языков совпадает с классом языков, допускаемых конечными автоматами. 

 

4.2. Детерминированные конечные автоматы

4.2.1. Детерминированные и недетерминированные автоматы

Автоматы A и A' называются эквивалентными, если L(A) = L(A').

Т е о р е м а   4.2. Для любого недетерминированного конечного автомата можно построить эквивалентный детерминированный конечный автомат.

Доказательство. Сначала заметим, что грамматика соответствует детерминированному автомату тогда и только тогда, когда в каждом ее правиле вида A  a1A1 | ... | anAn или A  a1A1 | ... | anAn |   выполняется условие: ai  aj при i  j. Поэтому достаточно преобразовать А-грамматику G = (N,T,P,S) к указанному виду. В процессе преобразования на грамматику будем смотреть, как на соответствующую систему уравнений.

Для каждого непустого подмножества {A1,...,An} множества N введем новый нетерминальный символ [A1,...,An] и определим его так, чтобы соответствующее уравнение имело вид [A1,...,An] = A1  ...  An. Для этого достаточно, как в доказательстве теоремы 3.10, задать правило [A1,...,An]  r1 | ... | rn, где ri  правая часть правила для Ai.

Теперь построим требуемую грамматику G' = (N',T,P',S), где N' получается из N добавлением определенных выше новых нетерминальных символов, а P' получено следующим образом из P и правил для новых нетерминальных символов: в каждом правиле все члены вида aA1, ..., aAn с одним и тем же a  T  заменяются одним членом a[A1,...,An]. Таким правилам соответствует детерминированный автомат, эквивалентный исходному, т.к. a[A1,...,An] = aA1   ...  aAn. 

Так как не все нетерминальные [A1,...,An] достижимы из S, то при построении P' достаточно включать только необходимые правила, начиная с правила для S.

Пример 4.3. Недетерминированный автомат, изображенный на следующем рисунке слева,

имеет соответствующую грамматику с правилами

q0  aq1 | bq2,  q1  aq1 | aq3 | bq1 | bq2, q2  aq1 | aq2 | bq2 | bq3,  q3  aq3 | bq3 |  .

Преобразуем его в детерминированный автомат по методу теоремы 4.2. В новую грамматику войдет старое правило для q0, т.к. оно удовлетворяет условию детерминированности. Правило для q1 преобразуется к виду q1  a(q1 | q3) | b(q1 | q2), или q1  aq13 | bq12.

Аналогично получается правило для q2q2  aq12 | bq23.

Для q13 = q1 | q3 правило имеет вид q13  aq1 | aq3 | bq1 | bq2 | bq3 |  , или, окончательно, q13  aq13 | bq123 |  , где q123 = q1 | q2 | q3. Аналогично, для q12 = q1 | q2, q23 = q2 | q3 и q123 правила (после преобразования) имеют вид q12  aq123 | bq123, q23  aq123 | bq23 |  , q123  aq123 | bq123 |  .

Диаграмма построенного детерминированного автомата изображена на том же рисунке справа. 

Отметим, что, как видно из доказательства и примера, построенный детерминированный автомат при анализе цепочки как бы одновременно ведёт все пути её анализа исходным автоматом.