Upload
raducan-mihai
View
214
Download
1
Embed Size (px)
DESCRIPTION
asdasdasd
Citation preview
Тема 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 и — любая последовательность терминалов или
нетерминалов, (VTVN).
Эти правила можно представить как A->=X1X2...Xn, где
x1,...,xn(VTVN) и их мы изменим.
3.Для всех символов Xi, которые являются терминалами вводятся
новые нетерминальные символы Yi, которые не включены в VN. Тогда
правило A->X1X2...Xn становится как A->Y1Y2...Yn, где Yi=Xi, если XiVN и Yi —
это новый символ если XiVT.
4.Создаем множества VN'=VN{Yi} и P'=P\{A->X1...Xn}
{A->Y1...Yn}{Yi->Xi / XiVT}.
5. Повторим это для всех правил типа A->.
В результате получим правила вида
А) A->b
B) A->Y1...Yn, где YiVN, и 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, Z2VN, bVT и тогда грамматика будет в
нормальной форме Хомского.