Нормальная форма Хомского — различия между версиями
Vincent (обсуждение | вклад) |
Vincent (обсуждение | вклад) |
||
| Строка 18: | Строка 18: | ||
Если <tex> (A, B) </tex> {{---}} узловая пара, а <tex> B \rightarrow C </tex>, то <tex> (A, C) </tex> тоже узловая пара. | Если <tex> (A, B) </tex> {{---}} узловая пара, а <tex> B \rightarrow C </tex>, то <tex> (A, C) </tex> тоже узловая пара. | ||
| + | }} | ||
| + | |||
| + | {{Определение | ||
| + | |definition=Правило <tex> A \rightarrow w </tex> называется '''смешанным''', если <tex> w </tex> содержит хотя бы один терминал и хотя бы один нетерминал. | ||
}} | }} | ||
| Строка 25: | Строка 29: | ||
|statement=Любую контекстно-свободную грамматику можно привести к нормальной форме Хомского. | |statement=Любую контекстно-свободную грамматику можно привести к нормальной форме Хомского. | ||
|proof= | |proof= | ||
| − | Рассмотрим контекстно-свободную грамматику <tex> \Gamma </tex>. Для приведения ее к нормальной форме Хомского необходимо выполнить | + | Рассмотрим контекстно-свободную грамматику <tex> \Gamma </tex>. Для приведения ее к нормальной форме Хомского необходимо выполнить четыре шага. На каждом шаге мы строим новую <tex> \Gamma_i </tex>, которая допускает тот же язык, что и <tex> \Gamma </tex>. |
# Удаление <tex> \varepsilon </tex>-правил. | # Удаление <tex> \varepsilon </tex>-правил. | ||
| Строка 31: | Строка 35: | ||
# Преобразование узловых пар. | # Преобразование узловых пар. | ||
#:Для каждой узловой пары <tex> (A, B) </tex>, найдем все правила <tex> B \rightarrow w </tex>, где <tex> w </tex> {{---}} произвольная строка терминалов и нетерминалов, и добавим <tex> A \rightarrow w </tex> в <tex> \Gamma_2 </tex>. | #:Для каждой узловой пары <tex> (A, B) </tex>, найдем все правила <tex> B \rightarrow w </tex>, где <tex> w </tex> {{---}} произвольная строка терминалов и нетерминалов, и добавим <tex> A \rightarrow w </tex> в <tex> \Gamma_2 </tex>. | ||
| + | # Преобразование смешанных правил. | ||
| + | #:Если <tex> A \rightarrow w </tex> {{---}} смешанное правило, то можно представить <tex> w </tex> в виде <tex> w=v_0 c_1 v_1 c_2 ... v_{n-1} c_n v_n </tex>, где <tex> v_i </tex> {{---}} строка нетерминалов, а <tex> c_i </tex> является терминалом. Тогда для каждого <tex> c_i </tex> добавим нетерминал <tex> C_i </tex> и правило <tex> C_i \rightarrow c_i </tex> в <tex> \Gamma_3 </tex>. Получим <tex> w'=v_0 C_1 v_1 C_2 ... v_{n-1} C_n v_n </tex>. Добавим правило <tex> A \rightarrow w' </tex> в <tex> \Gamma_3 </tex>. | ||
# Преобразование длинных правил. | # Преобразование длинных правил. | ||
| − | #:Воспользуемся [[Удаление длинных правил из грамматики|алгоритмом удаления длинных правил]] из грамматики. Получим <tex> \ | + | #:Воспользуемся [[Удаление длинных правил из грамматики|алгоритмом удаления длинных правил]] из грамматики. Получим <tex> \Gamma_4 </tex>. |
| − | Таким образом мы получили грамматику <tex> \ | + | Таким образом мы получили грамматику <tex> \Gamma_4 </tex> в нормальной форме Хомского, которая допускает тот же язык, что и <tex> \Gamma </tex>. |
}} | }} | ||
==Литература== | ==Литература== | ||
* http://www.enseignement.polytechnique.fr/informatique/profs/Luc.Maranget/IF/09/chomsky.pdf | * http://www.enseignement.polytechnique.fr/informatique/profs/Luc.Maranget/IF/09/chomsky.pdf | ||
Версия 06:04, 4 ноября 2011
Несколько определений
| Определение: |
| Грамматикой в нормальной форме Хомского (Chomsky normal form) называется контекстно-свободная грамматика, в которой могут содержатся правила только следующего вида:
, , , где — терминал, — нетерминалы, — стартовая вершина, — пустая строка, стартовая вершина не содержится в правых частях правил. |
| Определение: |
| Пара нетерминалов и называется узловой, если .
выполняется — узловая пара. Если — узловая пара, а , то тоже узловая пара. |
| Определение: |
| Правило называется смешанным, если содержит хотя бы один терминал и хотя бы один нетерминал. |
Приведение грамматики к нормальной форме Хомского
| Теорема: |
Любую контекстно-свободную грамматику можно привести к нормальной форме Хомского. |
| Доказательство: |
|
Рассмотрим контекстно-свободную грамматику . Для приведения ее к нормальной форме Хомского необходимо выполнить четыре шага. На каждом шаге мы строим новую , которая допускает тот же язык, что и .
|