Изменения

Перейти к: навигация, поиск

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

1255 байт добавлено, 06:54, 26 октября 2011
Преобразование грамматики в нормальную форму Хомского
# Создание новой стартовой вершины.
#: Создадим новую стартовую вершину <tex> S_0 </tex> с новым правилом <tex> S_0 \rightarrow S </tex>, где <tex> S </tex> {{---}} старая стартовая вершина. Получим <tex> \Gamma_1 </tex>.
# Удаление вершин, которые могут породить пустую строку.
##Если <tex> A \rightarrow \varepsilon </tex>, то выкинем такое правило.##Если <tex> A \rightarrow w </tex>, где <tex> w </tex> не содержит <tex> \varepsilon </tex> и обнуляемых переменных, то добавим такое правило в <tex> \Gamma_2 </tex>.##Если <tex> A \rightarrow w </tex>, причем <tex> w </tex> содержит обнуляемые переменные, то представим <tex> w </tex> в виде <tex> w=w_0 N_0 w_1 N_1 ... w_{n-1} N_{n-1} w_n N_n </tex>, где <tex> N_i </tex> {{---}} вхождение обнуляемой переменной, <tex> w_i </tex> не содержит обнуляемых переменных. Добавим в <tex> \Gamma_2 </tex> все правила, которые можно получить удалением всевозможных комбинаций <tex> N_i </tex> из <tex> w </tex>. Таких вариантов будет <tex> 2^n </tex>. #: Если стартовая вершина <tex> \Gamma_1 </tex> является обнуляемой, то добавим в <tex> \Gamma_2 </tex> правило <tex> S_0 \rightarrow \varepsilon </tex>.
# Удаление вершин, которые могут породить друг друга.
# Преобразование правил с длинной правой частью.
271
правка

Навигация