УДК 519.713
А. А. Вылиток1, М. А. Зубова2, Б. Ф. Мельников3
ОБ ОДНОМ РАСШИРЕНИИ КЛАССА КОНЕЧНЫХ АВТОМАТОВ ДЛЯ ЗАДАНИЯ КОНТЕКСТНО-СВОБОДНЫХ ЯЗЫКОВ
Предложен новый формализм для задания контекстно-свободных (КС) языков. Основной особенностью этого формализма является его сходство с недетерминированными конечными автоматами. Это позволяет применять классические алгоритмы эквивалентного преобразования недетерминированных конечных автоматов для объектов формализма, задающего КС-языки.
Ключевые слова: недетерминированные конечные автоматы, контекстно-свободные языки, алгоритмы эквивалентного преобразования.
1. Введение и применяемые обозначения. Известны различные формальные системы для описания КС-языков. Наряду с системами порождающего типа (пример — КС-грамматики) существуют и системы распознающего типа, являющиеся алгоритмами (возможно, в форме автомата). КС-языки задаются автоматами с магазинной памятью. Существуют и другие подходы (например, "графический" [1]) к описанию КС-языков. Упомянем здесь также монографию [2] и серию статей [3-5].
В статье предлагается новый формализм для описания КС-языков. С одной стороны, он является расширением класса недетерминированных конечных автоматов (НКА). С другой — его можно рассматривать как НКА над специальным алфавитом и, следовательно, применять различные алгоритмы эквивалентного преобразования НКА (построение минимальных автоматов, универсального автомата и др.) [6-8], получая более приемлемые по некоторым характеристикам (меньшее число вершин, дуг и др.) объекты в предлагаемом формализме.
Для недетерминированных конечных автоматов мы будем использовать обозначения из [8]. Пусть
К = (Q, £, 5, S, F) (1)
— недетерминированный конечный автомат Рабипа Скотта, определяющий язык, обозначаемый С(К), 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 (2)
является словом над Z(17y
Определение 1. Для заданного п ^ 0 определим язык [Z(«)*]• Будем называть его языком, согласованным по скобкам (а каждое его слово — словом, согласованным по скобкам). Рекурсивно определим слово, согласованное по скобкам:
• е и 0 — согласованные по скобкам слова;
• если w и v — согласованные слова, то и = vw — тоже согласованное по скобкам слово;
• если w — согласованное слово, i € N(n), то и = iw — г — тоже согласованное по скобкам слово;
• никакое другое слово не является согласованным по скобкам.
Таким образом, мы получаем новое согласованное слово из уже имеющегося путем заключения последнего в скобки и (или) приписывания к нему другого согласованного слова. Например, слово (2) является согласованным по скобкам.
Определение 2. Определим скобочный автомат В следующим образом:
S = (3)
где 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=(QU{pa},Z,r,8,pa,zQ,F), (4)
где 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;
в) после этого вершины, помеченные А, удаляются.
Скобочный автомат определяется построенным графом. Вершины графа соответствуют состояниям. Функция переходов определяется дугами. Начальное и финальное состояния соответствуют паре вершин, полученной по начальному символу исходной грамматики.
Рассмотрим этот алгоритм на примере КС-грамматики с итерациями для модельных арифмети-
ческих выражении:
Е Т{+Т}, Е ^а\Ъ\{Е).
(5)
(6) (7)
Здесь нетерминал Е символизирует выражение, он является начальным символом (аксиомой) грамматики, нетерминал Т означает слагаемое, нетерминал Е — сомножитель, а терминалы а и Ь — простые выражения (переменные или константы).
На основе приведенной грамматики очевидным образом строятся следующие синтаксические диаграммы (рис. 2, а). Преобразуем каждую диаграмму в граф согласно шагу 2 алгоритма (рис. 2, б). Подставим в граф Е переход на подграф Т и возврат из него (рис. 3). Аналогично подставляем переход и возврат для Е (рис. 4). Реализуем рекурсию на получившемся графе — сделаем переход на Е1 и возврат из Еъ- В итоге получаем граф для арифметических выражений (см. рис. 5).
Рис. 2. Синтаксические диаграммы для выражений (5)-(7) (а); графы, построенные на основе синтаксических диаграмм (б)
Приведем пример разбора выражения а * (а + Ь):
—> Т\ —^ Ех
+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. Автомат Б\ (а); автомат В2 (б)
Функции нС^э нС<52 определяются по изображениям автоматов на рисунках. Нетрудно заметить, что конечные автоматы
ЦВг) = ({X, Y, Z}, {(а, +1), (Ь,-1)},6Ъ {X}, {X, У, Z}), 1С(В2) = ({Л}, {(а, +1), (6, -1)}, 62, {Л}, {Л})
эквивалентны, и /С(£>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.