Нормальная форма Хомского

advertisement
Тема 13: Нормальная форма Хомского
Определение:
Контекстно-свободная
грамматика
G
находится
в
нормальной форме Хомского, если все правила имеют один из
следующих видов: A->BC, A-> b, где A, B, C — нетерминалы, а, b —
терминалы. Эта нормальная форма ещё называется бинарной, так как
деревья вывода получаются бинарными.
Пример: Грамматика имеющая следующие правила P={1.S->RR,
2.S->AB, 3.R->RR, 4.R->AB, 5.A->a, 6.B->RB, 7.B->b} является в
нормальной форме Хомского.
Теорема. Каждая грамматика в нормальной форме Хомского (НФХ)
является контекстно-свободной и наоборот, каждая контекстно-свободная
грамматика (КСГ) может быть эффективно преобразована в эквивалентную
грамматику в НФХ.
Алгоритм преобразования КС-грамматики в НФХ:
Дана
КС-грамматика
G
без
непродуктивных
и
недостижимых
символов, без -правил и цепных правил. Проведём ряд преобразований в
этой грамматике и построим эквивалентную грамматику G'=(VT, VN, P, S),
где изменятся множества VN и P. Языки этих двух грамматик совпадают
L(G)=L(G).
I этап:
Все начальные правила G имеют один из следующих видов:
1.A->b
—
это
правило
подходит
для
НФХ
и
оставляем
ее
неизмененной.
2.A->, где ||>1 и  — любая последовательность терминалов или
нетерминалов, (VTVN).
Эти
правила
можно
представить
как
A->=X1X2...Xn,
где
x1,...,xn(VTVN) и их мы изменим.
3.Для всех символов Xi, которые являются терминалами вводятся
новые нетерминальные символы Yi, которые не включены в VN. Тогда
правило A->X1X2...Xn становится как A->Y1Y2...Yn, где Yi=Xi, если XiVN и Yi
— это новый символ если XiVT.
4.Создаем множества VN'=VN{Yi} и P'=P\{A->X1...Xn}
{A->Y1...Yn}{Yi->Xi / XiVT}.
5. Повторим это для всех правил типа A->.
В результате получим правила вида
А) A->b
B) A->Y1...Yn, где YiVN, и n 2.
II этап:
Для
правил
вида
A->Y1...Yn если
n=2,
то
A->Y1Y2
—
и есть
нормальная форма Хомского.
Если n>2, то вводим новые n-2 нетерминальных символов: Z1, Z2, ...
Zn-2. Тогда правила вида A->Y1...Yn становится:
A->Y1Z1
Z1->Y2Z2
...
Zn-2->Yn-1Yn.
Множество VN' меняется: VN'=VN'{Zi}.
P'=P'{Z->b}{Zi->Yi+1Zi+1}\{A->Y1Y2...Yn / n>2}.
Произведённые
изменения
в
множестве
правил
начальной
грамматики обеспечат существование в грамматике G правил следующего
вида:
1. A->b
2. A->Z1Z2, где A, Z1, Z2VN, bVT и тогда грамматика будет в
нормальной форме Хомского.
Download