Главная Промышленная автоматика. Правая часть каждого Р-правила начинается терминалом, как и должно быть, так как F - наибольший нетерминал в этом упорядочении. Предшествующий ему нетерминал Т имеет правила Т -F \ FT, так что, заменив в них F, получаем Т{Е)\а\{Е)Т \ аТ. Переходя к Т\ обнаруживаем, что здесь ничего менять не надо. Затем заменяем £-правила правилами £->(£) I й I {£) Т I аТ I {£) Е \ аЕ \ [Е] ТЕ \ аГЕ В -правилах ничего менять не надо. На шагах (5) и (6) появляются новый нетерминал ) и правило )-»-), поэтому все вхождения ) в предыдущих правилах надо заменить на ). Таким образом, в результате получится грамматика в нормальной форме Грейбах с правилами Е {Еу \ а\ (ЕуТ \ аТ \ {ЕУ Е \аЕ \ (Е) ТЕ \аГЕ Е ~ + Т\ТЕ Т(Еу\а\{ЕуТ\аТ Т --x-Fl-FT F(Ey \а □ Недостаток описанной техники преобразования грамматики к нормальной форме Грейбах в том, что она дает много новых правил. Чтобы не вводить слишком много новых правил, можно применить другой метод, который излагается в следующем разделе. Однако он может давать больше нетерминалов. 2.4.5. Другой метод преобразования к нормальной форме Грейбах Изложим другой способ построения грамматики, в которой каждое правило имеет вид Л аа. Здесь грамматика переписывается только один раз. Пусть G = (N, 2, Я, 5)~КС-грам-матика, в которой нет е-правил (даже вида 5->е) и цепных правил. Вместо того чтобы описывать этот метод в терминах правил, воспользуемся системами определяющих уравнений того типа, что был введен в разд. 2.2.2. Например, множество правил ЛЛаВ\ВВ\Ь BaA\BAa\Bd\c (2.4.6) можно представить в виде системы уравнений А ---АаВ + ВВЬ B=aABAaBd+c где А и В - неизвестные, представляющие множества. Определение. Пусть Д и S-два непересекающихся алфавита. Системой определяющих уравнений в алфавитах S и Д назовем систему уравнений вида Д = « + «2 + • • •где Л G А и a/G(All2)*. Если kO, то уравнение имеет вид Л = 0. Для каждого Л G Д в системе есть одно уравнение. Решением системы определяющих уравнений назовем такое отображение / множестваД в 5(2*), что если подставить f [А] в каждое уравнение вместо каждого Л G Д, уравнения станут равенствами. Решение / назовем наименьшей неподвижной точкой, если f{A) eg-(Л) для любого решения g и любого ЛД- Чтобы получить КС-грамматику, соответствующую системе определяющих уравнений, надо для каждого уравнения - Л = ...-hcc/j построить правила А-а\а1.. .\af. Нетерминалами будут символы алфавита Д. Очевидно, что это соответствие взаимно однозначно. Приведем несколько результатов о системах определяющих уравнений, обобщающих результаты о стандартных системах уравнений с регулярными коэффициентами (частном случае систем-определяющих уравнений). Доказательства оставим в качестве упражнений. Лемма 2.17. Ншшеньшая неподвижная точка системы определяющих уравнений в алфавитах Д w S единственна и имеет вид / (Л) {ш Л =>оШ и w*}, где G соответствующая КС-грамматика. Доказательство. Упражнение. □ Мы будем пользоваться матричным представлением систем определяющих уравнений. Допустим, что Д {Л, Л, Л,,}. Матричное уравнение A = ARH В представляет п уравнений. Здесь Л - вектор-строка [А, А, Л„], R - матрица порядка п, элементами которой служат регулярные выражения, и В - вектор-строка, состоящая из п регулярных выражений. В качестве «скалярного» умножения возьмем конкатенацию, а в качестве сложения - операцию + (т. е. объединение). Сложение и умножение векторов и матриц определяются, как обычно. Элементом матрицы R, стоящим в i-й строке и j-u столбце, будет регулярное выражение а~\-.. .-\-cif, если Аа, . . ., Ла,,- все члены уравнения для Aj, первым символом которых является Л,-. В качестве j-u компоненты вектора В возьмем сумму тех членов уравнения для Aj, которые начинаются символом из множества 2. Таким образом, Bj и -такие выражения, что уравнение для Aj (в КС-грамматнке ему соответствует множе- ство Лу-правил) можно записать в виде Aj AJj -V Л,;?,у Н- ... + Л fi,j + ... Н- A,R,j 4- Bj где Bj-сумма выражений, начинающихся терминалами. Система определяющих уравнений (2.4.6) примет вид \аВ 0 В Aa + d\ (2.4.7) [Л, В] = [А, В] + [6, аА-\-с] Теперь для матричного уравнения AAR-B найде.м такую эквивалентную систему определяющих уравнений, что все правые части соответствующих ей правил начинаются терминальными символами. Этот переход основан на следующей лемме: Лемма 2.18. Пусть А -AR + B-система определяющих уравнений. Тогда ее наименьшей неподвижной точкой будет A = BR*, где R* = I + R + R- "Ь R "Г • > -единичная матрица {е на диагонали и 0-е остальных местах), R- -RR, R3 RRR и т. д. Доказательство. Упражнение. □ Если положить R" - RR*, то наименьшую неподвижную точку матричного уравнения A = AR -В можно записать в виде A-B(R+ + I) = BR+ + B1-BR+ + B. К сожалению, для этой системы нельзя найти соответствующую грамматику: она не является системой определяющих уравнений, так как элементы матрицы R могут быть бесконечными суммами членов исходных уравнений. Однако R+ можно заменить новой матрицей „неизвестных" Q, каждый элемент которой, расположенный в 1-й строке и /-М столбце,- это новый символ. Тогда, заметив, что R+RR + R, можно получить систему определяющих уравнений Q=RQ-hR с неизвестными gj. Отметим, что если Q и R - матрицы порядка п, то система состоит из п- уравнений. Лемма 2.19. Пусть AAR + B-система определяющих уравнений в алфавитах А « 2. Пусть Q -матрица того же порядка, что и R, причем все ее элементы-различные новые символы. Тогда система определяющих уравнений, состоящая из А - BQ+B и Q = RQ-i-R, имеет наименьшую нвподвиоюную точку, которая совпадает на Л. с наименьшей неподвижной точкой системы A-AR + B. Доказательство. Упражнение. □ Дадим другой алгоритм преобразования приведенной грамматики к нормальной форме Грейбах. 186 Алгоритм 2.15. Преобразование к нормальной форме Грейбах. Вход. Приведенная грамматика G(N, 2, Р, 5) без правил вида S-e. Выход. Эквивалентная грамматика G = (N, 2, Р S) в нормальной форме Грейбах. Метод. (1) По грамматике G построить систему определяющих уравнений AARhB в алфавитах N и 2. (2) Пусть Q -матрица порядка п, состоящая из новых символов, и 4iN = /2. Построить новую систему определяющих уравнений А - BQ-f В, Q - RQ + R и соответствующую грамматику G. Так как в векторе В каждая компонента, отличная от 0, начинается терминалом, а такие компоненты должны быть в силу приведенности грамматики G, то для ЛN все Л-правила грамматикиG будут начинаться терминалами. (3) Так как G -приведенная грамматика, то е не является элементом матрицы R. Поэтому для каждого элемента д матрицы Q все соответствующие д-правпла грамлатики G, начинаются символами из NU2. В тех правых частях этих правил, которые начинаются нетерминалом, заменить этот нетерминал Л правыми частями всех Л-правил. В результате получится грамматика, у которой правые части всех правил начинаются терминалом. (4) Если в правой части некоторого правила терминал а встречается не на первом месте, заменить его новым нетерминалом а и добавить правило а~>-а. Результирующую грамматику обозначить через G. □ Теорема 2.20. Алгоритм 2.15 дает грамматику G в нормальной форме Грейбах и L{G) = L(G). Доказательство. Так как грамматика G приведенная и не содержит S->е, то G -грамматика в нормальной форме Грейбах, поскольку е не является компонентой вектора В и матрпгсы R. Из лемм 2.14, 2.17 и 2.19 следует, что L{G) = Пример 2.30. Рассмотрим грамматику, соответствующую системе определяющих уравнений (2.4.7): Л АаВ \ВВ\Ь BaA\BAa\Bd\c Перепишем систему (2.4.7), согласно шагу (2) алгоритма 2.15, в виде (2.4.8) [Л, В][Ь, аЛ+<:][ Затем добавим систему (2.4.9)
Системам (2.4.8) и (2.4.9) соответствует грамматика А ~bW\aAy\cy\b -bX\aAZ\cZ\aA\c В Х-у Z aBW\aB аВХ BW\Aay\dy\B BX]AaZ\dZ\Aa\d Заметим, что X - бесполезный символ. На шаге (3) в правилах Y-BW\Aay\B и ZBX\AaZ\Aa нетерминалы А и 5 заменяются соответствующими правыми частями правил. Так как это преобразование и преобразование на шаге (4) уже знакомы читателю, мы их опускаем. □ УПРАЖНЕНИЯ 2.4.1. Пусть G определяется правилами 5 -> Д5 ААа\ ЬВ B->a\Sb Постройте деревья выводов следующих выводимых цепочек: (а) baabaab, (б) ЬВАВЬ, (в) baSb. 2.4.2. Постройте левый и правый выводы цепочки baabaab в грамматике из упр. 2.4.1. 2.4.3. Постройте все сечения дерева, изображенного на рис. 2.14. Рис. 2.14. Непомеченное дерево вывода 2.4.4. Покажите, что следующие утверждения о КС-грамматике G и цепочке ш эквивалентны; (а) W-крона двух различных деревьев выводов в G, (б) W имеет два различных левых вывода в G, (в) W имеет два различных правых вывода в G. **2.4.5. Каково наибольшее число выводов, которые представляются одни.м и тем же деревом с п вершинами? 2.4.6. Преобразуйте грамматику SA\B AaB\bS\b В~АВ\Ва B-AS\b в эквивалентную КС-грамматику, не содержащую бесполезных символов. 2.4.7. Докажите, что алгоритм 2.8 правильно устраняет недостижимые символы. 2.4.8. Дополните доказательство теоремы 2.13. 2.4.9. Оцените временную и емкостную сложности алгоритма 2.8. В качестве вычислительной модели возьмите машину с произвольным доступом к памяти. 2.4.10. Постройте алгориТхМ, вычисляющий для КС-грамма-тики G---(N, S, Р, S) множество {ЛЛ=Ф*е, ЛGN}. Насколько быстр Ваш алгоритм? 2.4.11. Найдите грамматику без е-правил, эквивалентную грамматике S-*ABC A-BBle В-уСС\а C~AAlb 2.4.12. Дополните Доказательство теоремы 2.14. 2.4.13. Найдите приведенную грамматику, эквивалентную грамматике в-с- D~ Е- -А\В C\D D\E S\a\e S\c\e 2.4.14. Докажите теорему 2.16. 2.4.15. Докажите лемму 2.14. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 [30] 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 0.002 |