100 likes | 409 Views
Лекция 9. Нормальная форма Хомского. Определение 9.1. КС-грамматика G=(N, S) называется грамматикой в нормальной форме Хомского (или в бинарной нормальной форме), если каждое правило из Р имеет один из следующих видов: 1) А ВС, где А, В и С принадлежат N, 2) А а, где а
E N D
Лекция 9 Нормальная форма Хомского
Определение 9.1 • КС-грамматика G=(N, S) называется грамматикой в нормальной форме Хомского (или в бинарной нормальной форме), если каждое правило из Р имеет один из следующих видов: • 1) А ВС, где А, В и С принадлежат N, • 2) А а, где а • 3) S , если L(G), причем S в этом случае не встречается в правых частях правил из . • Отметим особенность использования нетерминального символа S в правых частях правил грамматики в нормальной форме Хомского:
1) если грамматика в нормальной форме Хомского содержит правило S (т.е. пустая цепочка принадлежит языку, порождаемому этой грамматикой), то S не входит в правую часть ни одного правила этой грамматики (хотя правила, лево частью которых является S, могут входить в грамматику, так как в противном случае порождаемый грамматикой язык был бы пустым); • 2) если же грамматика в нормальной форме Хомского не содержит правила S (т.е. пустая цепочка не принадлежит языку, порождаемому этой грамматикой), то в этом случае нетерминальный символ S может входить как в левую часть, так и в правую часть каких-либо правил грамматики.
Алгоритм 9.1 • . Преобразование к нормальной форме Хомского. • Вход: Приведенная КС – грамматика G = (N, S) • Выход: КС – грамматика G' в нормальной форме Хомского, эквивалентная G, т.е. такая, что L(G’)= L(G) • Метод: Грамматика G’ строится по G следующим образом. • 1) Включить в Р’ каждое правило из Р вида А а • 2) Включить в Р’ каждое правило из Р вида А ВС • 3) Если правило S было в Р, то включить его в Р’ • 4) Для каждого правила из Р вида А X1X2…Xk, где k >2, включить в P’ правила
A X'1<X2…Xk> • <X2…Xk> X'2<X3…Xk> • <Xk-2Xk-1Xk> X'k-2<Xk-1…Xk> • <Xk-1Xk> X'k-1X'k, • где X'i = Xi, если Xi N ;X'i – новый нетерминал, если Xi; • <Xi…Xk> – новый нетерминал. • 5) Для каждого правила Р вида А X1X2 , где хотя бы один из символов X1 и X2 принадлежит , включить в Р’ правило А X'1X'2. • 6) Для каждого нетерминала вида а’, введенного на шагах (4) и (5) включить в Р’ правило a’ a.
7) Наконец, пусть N’ – это N вместе со всеми новыми нетерминальными символами, введенными при построении Р’. Тогда искомой грамматикой будет G' = (N’, , P’, S) • Заметим, что поскольку грамматика была приведенной, то в ней не было бесполезных и недостижимых символов, -правил, цепных правил и циклов, причем, если грамматика содержала правило S, то нетерминальный символ S не входил в правую часть ни одного правила исходной грамматики (см. алгоритмы устранения недостижимых и бесполезных символов грамматики, алгоритм преобразования грамматики в грамматику без -правил, а также алгоритм устранения цепных правил).
Пример. Пусть G – приведенная КС – грамматика, определяемая правилами. • (1) S aAB • (2) S BA • (3) A BBB • (4) A a • (5) B AS • (6) B b • Строим Р’ по алгоритму 9.1. При этом сохраняются правила (2), (4), (5), (6). Правило (1) заменим правилами S a’<AB> и <AB>AB, а правило (3) - правилами A B<BB> и <BB> BB . Наконец, добавляем правило а’ а. В результате получаем грамматику:
G’=(N’, {a,b}, P’, S), где N’={S, A, B, <AB>, <BB>, a’}, а Р’ состоит из правил • S a’<AB> • S BA • A B<BB> • A a • B AS • B b • <AB> AB • <BB> BB • a’ a
Поскольку в данном случае язык, порождаемый как исходной грамматикой, так и грамматикой в нормальной форме Хомского, не содержит пустой цепочки, то нетерминальный символ S может входить в правую часть правил результирующей грамматики. • Нормальная форма Хомского является простой формой представления грамматики. Кроме того, если грамматика является грамматикой в нормальной форме Хомского, то каждая вершина дерева вывода в такой грамматике будет иметь не более двух потомков.
Задание 12 • Привести пример грамматики, не представленной в нормальной форме Хомского. Преобразовать ее к нормальной форме Хомского.