Об одном расширении класса конечных автоматов для задания контекстно-свободных языков

УДК 519.713

А. А. Вылиток1, М. А. Зубова2, Б. Ф. Мельников3

ОБ ОДНОМ РАСШИРЕНИИ КЛАССА КОНЕЧНЫХ АВТОМАТОВ ДЛЯ ЗАДАНИЯ КОНТЕКСТНО-СВОБОДНЫХ ЯЗЫКОВ

Предложен новый формализм для задания контекстно-свободных (КС) языков. Основной особенностью этого формализма является его сходство с недетерминированными конечными автоматами. Это позволяет применять классические алгоритмы эквивалентного преобразования недетерминированных конечных автоматов для объектов формализма, задающего КС-языки.

Ключевые слова: недетерминированные конечные автоматы, контекстно-свободные языки, алгоритмы эквивалентного преобразования.

1. Введение и применяемые обозначения. Известны различные формальные системы для описания КС-языков. Наряду с системами порождающего типа (пример — КС-грамматики) существуют и системы распознающего типа, являющиеся алгоритмами (возможно, в форме автомата). КС-языки задаются автоматами с магазинной памятью. Существуют и другие подходы (например, "графический" [1]) к описанию КС-языков. Упомянем здесь также монографию [2] и серию статей [3-5].

В статье предлагается новый формализм для описания КС-языков. С одной стороны, он является расширением класса недетерминированных конечных автоматов (НКА). С другой — его можно рассматривать как НКА над специальным алфавитом и, следовательно, применять различные алгоритмы эквивалентного преобразования НКА (построение минимальных автоматов, универсального автомата и др.) [6-8], получая более приемлемые по некоторым характеристикам (меньшее число вершин, дуг и др.) объекты в предлагаемом формализме.

Для недетерминированных конечных автоматов мы будем использовать обозначения из [8]. Пусть

К =

— недетерминированный конечный автомат Рабипа Скотта, определяющий язык, обозначаемый С(К), Q — множество состояний, S и F — подмножества множества Q, называемые множеством стартовых и множеством финальных состояний соответственно. Функция переходов 8 для автомата (1) будет иметь вид

(т.е. мы допускаем е-переходы), где V{Q) — множество всех подмножеств множества Q.

Кроме описанного способа задания функции переходов конечных автоматов мы будем использовать и другой. Для него функцию переходов мы задаем в виде

7:QxQ^?(SU{£}),

причем условие j(q,r) Э а (где g,r е Q и в е S U {е}) выполняется тогда и только тогда, когда S(q, а) Э г.

2. Специальные автоматы для КС-языков. Для каждого п из множества No, рассмотрим множества N(n) = {1, 2,..., п — 1, п} и

Z(n) = п! -(п -I),---, —2, -1,0,1,2,... ,п - 1,п} .

(Каждый элемент г из множества N(n) символизирует г-ю пару скобок. Также г символизирует г-ю открывающую скобку, а (—г) — соответствующую закрывающую скобку.) Иногда мы будем считать

1 Факультет ВМК МГУ, ст. преп., к.ф.-м.н., e-mail: vylitokQcs.msu.su

2 Тольяттинский гос. ун-т, асп., e-mail: nai_999801Qmail.ru

3 Тольяттинский гос. ун-т, проф., д.ф.-м.н., e-mail: В.MelnikovQtltsu.ru

множество Z(n) алфавитом, содержащим 2п + 1 символов, и, следовательно, рассматривать слова и языки над Например, можно сказать, что

4 0 4 3 0 3 0

является словом над Z(17y

Определение 1. Для заданного п ^ 0 определим язык [Z(«)*]• Будем называть его языком, согласованным по скобкам (а каждое его слово — словом, согласованным по скобкам). Рекурсивно определим слово, согласованное по скобкам:

• е и 0 — согласованные по скобкам слова;

• если w и v — согласованные слова, то и = vw — тоже согласованное по скобкам слово;

• если w — согласованное слово, i € N(n), то и = iw — г — тоже согласованное по скобкам слово;

• никакое другое слово не является согласованным по скобкам.

Таким образом, мы получаем новое согласованное слово из уже имеющегося путем заключения последнего в скобки и (или) приписывания к нему другого согласованного слова. Например, слово (2) является согласованным по скобкам.

Определение 2. Определим скобочный автомат В следующим образом:

S =

где Q — множество состояний, S — заданный алфавит, S ж F — множества стартовых и финальных состояний соответственно, п из No определяет множество скобок Z(n), — функция переходов вида

f:QxQ^?((EU{e})xZ(B)).

Будем считать, что мы одновременно определяем функции и ^ вида

f7:QxQ^?(EU{e}), f с : Q х Q V (Z(n)) .

При этом, если для состояний g', q" из множества Q выполняется условие Э (а, г), то будем

считать, что выполнены условия rt7(q',q") Э а и 't^(q',q") Э г. Никаких иных значений функции и ^ не содержат.

Отметим, что для скобочного автомата (3) пятерку (Q, S, S, F) можно рассматривать как "обычный" недетерминированный конечный автомат. Язык, который этим автоматом определяется, будем обозначать как £7(Б), а записью обозначим язык автомата (Q, Z(n), 't^, S, F).

Далее определим язык автомата (3) — будем обозначать его записью С{В).

Определение 3. Пусть для последовательности g0,gi,...,gTO состояний из Q выполняются следующие условия: g0 € S, gm € F; 't(qk,Qk+1) Э (a,k,ik) Для каждого к из множества {0,... ,m — 1}; i\i'2   - im G [Z(n)*]. Тогда мы считаем, что слово а\а,2    а,т принадлежит С(В). Никаких иных слов язык С(В) не содержит.

Определение 4. Скобочные автоматы В\ и /ij называются эквивалентными, если £(В1) = £(В2).

Теорема 1. Язык, распознаваемый автоматом (3), является контекстно-свободным. Доказательство. Мы докажем этот факт путем построения соответствующего магазинного автомата. Будем использовать расширенный автомат с магазинной памятью (МП-автомат), допускающий слова опустошением магазина (см. строгое определение в [9, гл. 2.5.2]). Для заданного в (3) скобочного автомата В рассмотрим МП-автомат

P=

где Q, S и F совпадают с соответствующими объектами автомата В, Г = N(n) U {^о}, а функция переходов S задается следующим образом:

• для каждого s из множества S выполняется 6(ро,е, zq) Э (s,zq);

• для каждой пары (а, г) из "£(д', д") автомата В (где а € SU{e} иге и каждого z из множества Г выполнены условия:

— если г = 0, то S(q', a, z) Э (g", z);

- если i > 0, то S(q',a,e) Э (q",i);

— если г < 0, то 5(д',а, —г) Э (д77,^) (заметим, что (—г) является буквой алфавита Ъ^). Рассмотрим некоторое слово и в алфавите X, распознаваемое этим автоматом:

и = а±а2а3 .. .ап.

Работу автомата В при принятии слова и можно представить так, как показано на рис. 1.

Рис. 1. Работа автомата В при принятии слова и

Представленную на рис. 1 схему можно трактовать как работу МП-автомата (4) над словом и, считая, что переход из состояния в состояние обусловлен соотношениями:

• 5(ро,£,го) Э (до, ¿О);

• 5(дк,ак+ие) Э (^+1,^(^,^+1)) при ^¿(д*, д*+1) > 0;

• ак+иг) Э (д&+ь г) при ^(д*, 1) = 0 и г Е Г;

• э {Чк+ъе) при ^(^,^+1) <0

для каждого к из множества {0,... ,п — 1}. По построению МП-автомата все переходы из состояния в состояние обусловлены соотношениями одного из следующих трех видов:

1) Э

2) %,а,е) Э (р,г);

3) Э

где 2 Е Г, р, д Е Поэтому доказательство того, что любое слово, принимаемое МП-автоматом,

также принимается и скобочным автоматом, проводится аналогично (см. схему на рис. 1).

В следующем разделе показывается, что по КС-грамматике можно построить скобочный автомат, задающий тот же язык, так что справедливо утверждение, обратное теореме 1: любой КС-язык задается скобочным автоматом.

3. Построение скобочного автомата по КС-грамматике. В этом разделе мы приводим один из возможных способов построения скобочного автомата на основе заданной КС-грамматики. Сначала опишем общий алгоритм построения, после чего продемонстрируем его работу на примере. Строгое доказательство корректности приведенного алгоритма (т. е. доказательство эквивалентности заданной КС-грамматики и получаемого скобочного автомата) — предмет отдельной публикации.

Алгоритм (алгоритм построения скобочного автомата на основе КС-грамматики). Вход. КС-грамматика. Выход. Скобочный автомат. Метод.

Шаг 1. Нумеруем все нетерминалы КС-грамматики и для каждого правила строим синтаксическую

диаграмму согласно [10]. Шаг 2. Трансформируем каждую диаграмму в граф следующим образом:

а) входная и выходная дуги трансформируются в пару вершин, помеченных определяемым синтаксической диаграммой нетерминалом с индексами соответственно 1 и 2, все остальные дуги трансформируются в вершины с произвольными попарно различными пометками;

б) все терминальные вершины диаграмм заменяются на дуги с соответствующей терминальной пометкой (для функции перехода и пометкой 0 (для функции перехода пС^)'

Шаг 3. Объединяем получившиеся графы. Для этого для каждого г-го нетерминала А:

а) заменяем входы в каждую соответствующую вершину (также помеченную А) на переходы с пометкой (+г) в каждую из вершин, помеченных

б) аналогично заменяем выходы из соответствующих вершин (также помеченных а) на переходы с пометкой (—г) из каждой вершины, помеченной А2;

в) после этого вершины, помеченные А, удаляются.

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

Рассмотрим этот алгоритм на примере КС-грамматики с итерациями для модельных арифмети-

ческих выражении:

Е Т{+Т}, Е ^а\Ъ\{Е).

Здесь нетерминал Е символизирует выражение, он является начальным символом (аксиомой) грамматики, нетерминал Т означает слагаемое, нетерминал Е — сомножитель, а терминалы а и Ь — простые выражения (переменные или константы).

На основе приведенной грамматики очевидным образом строятся следующие синтаксические диаграммы (рис. 2, а). Преобразуем каждую диаграмму в граф согласно шагу 2 алгоритма (рис. 2, б). Подставим в граф Е переход на подграф Т и возврат из него (рис. 3). Аналогично подставляем переход и возврат для Е (рис. 4). Реализуем рекурсию на получившемся графе — сделаем переход на Е1 и возврат из Еъ- В итоге получаем граф для арифметических выражений (см. рис. 5).

Рис. 2. Синтаксические диаграммы для выражений

Приведем пример разбора выражения а * (а + Ь):

—> Т\ —^ Ех

+2 +3

Т? V Т^ * V 'Т1 V Т? ^ к Т? V Т^ V т?

Г 2 -т ±2 -7 1 1 -7 -> -7 1 1 -7 Г 1

-3 +3 +1 +2 +3

—> Тх —> Ех

+2 +3

Е2 —> Т2 —> Е2 —Е\

-3 -2

)

77> ч ГТ1 . 771 ' \ Т7* у Т1 Г2 -7 ±2 -' -7 Г 2 -' ^ 2 -

-3 -2 -1 -3 -2

+2 е2.

4. Эквивалентные преобразования скобочных автоматов. Рассмотрим новый алфавит Е х Z{n) и введем для него обозначение Ф. Для скобочного автомата (3) рассмотрим построенный на его основе "обычный" недетерминированный конечный автомат

где функция переходов 6^ строится следующим образом:

+

Рис. 3. Графы, построенные на основе синтаксических диаграмм

+

Ех Г ""( Е2

Рис. 4. Граф, построенный на основе синтаксических диаграмм

+

Рис. 5. Граф, построенный на основе синтаксических диаграмм

• для каждого соотношения я") Э (а, г) (автомата В) справедливо соотношение (а, г)) Э д77 автомата К (В);

• никакие иные соотношения вида (а, г)) Э д77 не выполняются для автомата 1С(В).

Рассмотрим также "обратное" преобразование, а именно: для каждого недетерминированного автомата над алфавитом Ф (пусть для определенности это будет автомат К = ((3, Ф, ¿>, Р)) определим скобочный автомат В (К) = (0, Ф, п), где значение п может быть выбрано по алфавиту Ф = Е х а функция переходов ^ строится аналогичным образом: для каждого соотношения (а, г)) Э я" (автомата К) справедливо соотношение ^¿(д7, д") Э (а,«) автомата В (К). Теорема 2. Пусть К\ и К2 — некоторые недетерминированные конечные автоматы над алфавитом Ф, причем С(К\) = С(К2). Тогда С(В(К\)) = С(В(К2)).

Доказательство. Рассмотрим любое слово г>, принадлежащее языку С(К\) и, следовательно, языку С(К2). Построим В(К\) и В(К2), как это определено выше. Образуем из слова у два: у^ Е которое содержит символы слова и, принадлежащие алфавиту в том же порядке, в котором они

встречаются в и, и г?7 Е 2*, которое содержит символы из алфавита X, в том же порядке в котором они встречаются в у. Так как у Е С(К\), г>7 Е С(В(К\)) и у^ Е /^(Б^х)). Более того, г>7 Е С(В(К2)) и ^ Е С^(В(К2)), поскольку г> Е С(К2). Следовательно, С(В(К 1)) = С(В(К2)).

В качестве примера рассмотрим скобочные автоматы

Вг = и В2 = ({Л}, {а, Ъ},^, {Л}, {Л},1),

изображенные на рис. 6Они задают язык скобочных систем*, где а — открывающая скобка, а Ь — закрывающая.

а б

Рис. 6. Автомат Б\

Функции нС^э нС<52 определяются по изображениям автоматов на рисунках. Нетрудно заметить, что конечные автоматы

ЦВг) =

эквивалентны, и /С(£>2) является минимальным по числу вершин. Согласно теореме 2, скобочные автоматы £>i и £>2 также эквивалентны. Кроме того, скобочный автомат £>2 имеет минимально возможное число вершин.

5. Заключение. В статье описаны скобочные автоматы — новый формализм для задания КС-языков. Основной особенностью скобочных автоматов является возможность рассматривать их двумя способами, одним из которых являются недетерминированные конечные автоматы над новым, расширенным алфавитом. Это позволяет пользоваться любыми алгоритмами эквивалентного преобразования НКА и получать соответствующие алгоритмы преобразования скобочных автоматов. Среди возможных алгоритмов эквивалентного преобразования отметим минимизацию автоматов (как вершинную [6], так и и дуговую [8, 11]), а также алгоритмы, описанные в [7]. Отметим также, что известная теорема Хомского-Шютценберже о представлении КС-языка морфическим образом пересечения языка Дика и регулярного языка [12] может быть получена как следствие определения языка скобочного автомата.

СПИСОК ЛИТЕРАТУРЫ

1. Вы литок А. А. О построении графа магазинного автомата // Вестн. Моск. ун-та. Сер. 15. Вычисл. матем. и киберн. 1996. № 3. С. 68-73.

2. Оллонгрен А. Определение языков программирования интерпретирующими автоматами. М.: Мир, 1977.

3. Станевичене Л.И. Об одном средстве исследования бесконтекстных языков / / Кибернетика. 1989. № 4. С. 135-136.

4. Staneviciené L. D-graphs in context-free language theory // Informática (Lithuanian Acad. Sci. Ed.). 1997. 8. N 1. P. 43-56.

5. Станевичене Л.И. О некоторых определениях класса КС-языков // Программирование. 1999. № 5. С. 15-25.

6. М el ni ко v В. A new algorithm of the state-minimization for the nondeterministic finite autómata // The Korean J. Сотр. and Appl. Math. 1999. 6. N 2. P. 277-290.

7. Мельников Б.Ф., Сайфуллина M.P. О некоторых алгоритмах эквивалентного преобразования недетерминированных конечных автоматов // Изв. вузов. Математика. 2009. № 4. С. 67-71.

8. М el ni ко v В. Once more on the edge-minimization of nondeterministic finite autómata and the connected problems // Fundamenta Informaticae. 2010. 104. N 3. P. 267-283.

* Множество слов, порождаемых грамматикой S —> (S)S\e.

9. Ахо А., Ульман Дж. Теория синтаксического анализа, перевода и компиляции. Т. 1. М.: Мир, 1979.

10. Абрамов В. Г., Трифонов Н. П., Трифонова Г. Н. Введение в язык Паскаль. М.: Наука, 1988.

11. Melnikov В., Melnikova A. Edge-minimization of non-deterministic finite automata // The Korean J. Сотр. and Appl. Math. 2001. 8. N 3. P. 469-479.

12. Chomsky N., Schiitzenberger M.-P. The algebraic theory of context-free languages // Computer Programming and Formal Systems. North Holland, 1963. P. 118-161.

Поступила в редакцию 29.02.12

ВЕСТН. МОСК. УН-ТА. СЕР. 15. ВЫЧИСЛ. МАТЕМ. И КИБЕРН. 2013. № 1

AN EXTENSION OF THE CLASS OF FINITE AUTOMATA TO SPECIFY THE CONTEXT-FREE LANGUAGES

Vylitok A. A., Zubova M. A., Melnikov B. F.

A new formalism for specifying context-free (CF) languages is offered. The main feature of this formalism is its similarity to the non-deterministic finite automata. It allows you to use algorithms of equivalent transformation of nondeterministic finite automata for the formalism that defines CF-languages.

Keywords: nondeterministic finite automata, context-free languages, algorithms of equivalent transformation.