Нормальная форма Куроды — различия между версиями
| Строка 83: | Строка 83: | ||
{{Определение | {{Определение | ||
| − | |definition=Грамматика имеет '''порядок n''', если |\alpha| <= n и |\beta| <= n для любого ее правила \alpha \rightarrow \beta. | + | |definition=Грамматика имеет '''порядок n''', если <tex>|\alpha| <= n</tex> и <tex>|\beta| <= n</tex> для любого ее правила <tex>\alpha \rightarrow \beta</tex>. |
}} | }} | ||
| Строка 90: | Строка 90: | ||
|about=об уменьшении порядка грамматики | |about=об уменьшении порядка грамматики | ||
|statement=(Уменьшение порядка грамматики) | |statement=(Уменьшение порядка грамматики) | ||
| − | Для любой грамматики G = (N, T, P, S) порядка n >= 3, такой что: любое правило из P' имеет вид \alpha \rightarrow \beta, где \alpha \in (N')^+ и \beta \in (N')^+ и |\alpha| <= |\beta| или A \rightarrow a или A \rightarrow \varepsilon, где A \in N' и a \in T | + | Для любой грамматики <tex>G = (N, T, P, S)</tex> порядка <tex>n >= 3</tex>, такой что: любое правило из <tex>P'</tex> имеет вид <tex>\alpha \rightarrow \beta</tex>, где <tex>\alpha \in (N')^+</tex> и <tex>\beta \in (N')^+</tex> и <tex>|\alpha| <= |\beta|</tex> или <tex>A \rightarrow a</tex> или <tex>A \rightarrow \varepsilon</tex>, где <tex>A \in N'</tex> и <tex>a \in T</tex> может быть построена грамматика <tex>G' = (N', T, P', S)</tex> порядка <tex>n - 1</tex> такая, что <tex>L(G') = L(G)</tex>. |
| − | может быть построена грамматика G' = (N', T, P', S) порядка n - 1 такая, что L(G') = L(G). | + | |proof= |
| − | |proof= Разделим P на три подмножества: | + | Разделим <tex>P</tex> на три подмножества: |
| − | P_1 = \{ \alpha \rightarrow \beta | \alpha \rightarrow \beta \in P, |\alpha| <= 2, |\beta| <= 2 \} | + | <tex>P_1 = \{ \alpha \rightarrow \beta | \alpha \rightarrow \beta \in P, |\alpha| <= 2, |\beta| <= 2 \}</tex>, |
| − | |||
| − | |||
| − | |||
| − | + | <tex>P_2 = \{ \alpha \rightarrow \beta | \alpha \rightarrow \beta \in P, |\alpha| >= 2, |\beta| >= 3 \}</tex>, | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | Тогда N' = N | + | <tex>P_3 = \{ \alpha \rightarrow \beta | \alpha \rightarrow \beta \in P, |\alpha| = 1, |\beta| >= 3 \}</tex>. |
| − | Из построения очевидно, что G' имеет порядок n - 1. | + | |
| + | Очевидно, что <tex>P = P_1 \cup P_2 \cup P_3</tex>. | ||
| + | |||
| + | Построим <tex>G'</tex> следующим образом: | ||
| + | * Если правило <tex>p \in P_2</tex>, то оно имеет вид <tex>AB\alpha' \rightarrow CDE\beta'</tex>, где <tex>\alpha' \in N^*</tex> и <tex>\beta' \in N^*</tex>. | ||
| + | |||
| + | Полагаем <tex>N_p = \{ A_p, B_p \}</tex>, <tex>P_p = \{ AB \rightarrow A_pB_p, A_p \rightarrow C, B_p\alpha' \rightarrow DE\beta'\}</tex>, где <tex>A_p, B_p</tex> {{---}} дополнительные символы не из <tex>N: \{A_p, B_p\} \cap \{A_q, B_q\} = 0</tex> для разных правил <tex>p</tex> и <tex>q</tex> из <tex>P_2</tex>. | ||
| + | |||
| + | * Если правило <tex>p \in P_3</tex>, то оно имеет вид <tex>A \rightarrow CDE\beta'</tex>, где <tex>\beta' \in N^*</tex>. | ||
| + | |||
| + | Полагаем <tex>N_p = \{B_p \}</tex>, <tex>P_p = \{A \rightarrow CB_p, B_p \rightarrow DE\beta'\}</tex>, где <tex>A_p, B_p</tex> {{---}} дополнительные символы. | ||
| + | |||
| + | Тогда <tex>N' = N \bigcup_{p \in (P_2 \cup P_3)} N_p</tex>, <tex>P' = P_1 \bigcup_{p \in (P_2 \cup P_3)} P_p</tex>. | ||
| + | |||
| + | Из построения очевидно, что <tex>G'</tex> имеет порядок <tex>n - 1</tex>. | ||
Покажем, что L(G') = L(G). | Покажем, что L(G') = L(G). | ||
Версия 13:42, 4 января 2015
| Определение: |
Грамматика представлена в нормальной форме Куроды (англ. Kuroda normal form), если каждое правило имеет одну из четырех форм:
|
Данная грамматика названа в честь Куроды (англ. Sige-Yuki Kuroda), который изначально назвал ее линейно ограниченной грамматикой.
| Определение: |
Грамматика представлена в нормальной форме Пенттонена (англ. Penttonen normal form), если каждое правило имеет одну из трех форм:
|
Также грамматику Пенттонена называют односторонней нормальной формой (англ. one-sided normal form). Как можно заметить, она является частным случаем нормальной формы Куроды: когда в первом правиле определения.
Для каждой контестно-зависимой грамматики существует слабо эквивалентная ей грамматика в форме Пенттонена.
| Лемма (об удалении терминалов): |
Для любой грамматики может быть построена грамматика такая, что:
|
| Доказательство: |
|
Каждому терминалу поставим в соотвествие новый символ , которого нет в , такой что для разных терминалов и . Пусть . Пусть — часть правила, тогда , где , если ; , если для . Построим грамматику , где . Покажем, что . Пусть . Тогда в G существует вывод . Согласно конструкции , в существует вывод . Для в переходах используем правило , так как правило было использовано при выводе . Для в переходах используем правила вида . Заменяем разрешенные в символы на новые и получаем, что . Тогда . Пусть . Тогда в существует вывод . Мы можем поменять порядок применения правил в этом выводе: сначала применяем только правила вида , а потом только правила вида . Из построения: после применения правила вида полученное не может быть использовано при применении правил из . Изменение порядка вывода не меняет язык, то есть в существует вывод: , где для и в переходе было использовано правило вывода и для было использовано правило , чтобы получить . Получаем вывод в : . Тогда . Таким образом, . Очевидно, что если грамматика была неукорочивающейся, то она такой и останется. |
| Лемма (об удалении длинных правил): |
Для любой грамматики может быть построена грамматика такая, что:
|
| Доказательство: |
|
Сначала по построим грамматику , как в доказательстве леммы 1. По построим грамматику , в которой:
Теперь все правила в имеет требуемую форму. Покажем, что . Заметим, что замена правила на не меняет язык грамматики, потому что дополнительная буква запрещается при добавлении перехода , а других правил для нет. Тогда получаем, что , аналогично обратные изменения не меняют язык, то есть . |
| Определение: |
| Грамматика имеет порядок n, если и для любого ее правила . |
| Лемма (об уменьшении порядка грамматики): |
(Уменьшение порядка грамматики)
Для любой грамматики порядка , такой что: любое правило из имеет вид , где и и или или , где и может быть построена грамматика порядка такая, что . |
| Доказательство: |
|
Разделим на три подмножества: , , . Очевидно, что . Построим следующим образом:
Полагаем , , где — дополнительные символы не из для разных правил и из .
Полагаем , , где — дополнительные символы. Тогда , . Из построения очевидно, что имеет порядок . Покажем, что L(G') = L(G). Сначала докажем, что L(G) <= L(G'). Это следует из того, что:
\gamma_1AB\alpha'\gamma_2 => \gamma_1A_pB_p\alpha'\gamma_2 => \gamma_1CB_p\alpha'\gamma_2 => \gamma_1CDE\beta\gamma_2, с использованием правил из P_p и вывода \gamma_1A\gamma_2 => \gamma_1CDE\beta'\gamma_2 на основе правила p = A\alpha \rightarrow CDE\beta' \in P_3 в G, которое может быть применено в G' с помощью трех шагов вывода: \gamma_1A\alpha1'\gamma_2 => \gamma_1A_pB_p\alpha'\gamma_2 => \gamma_1CB_p\alpha'\gamma_2 => \gamma_1CDE\beta\gamma_2. Таким образом, любой вывод в G может быть преобразован в вывод в G'. Чтобы показать обратное включение, рассмотрим вывод w \in L(G') в G', который содержит применение правил вида AB \rightarrow A_pB_p для какого-то правила p = AB\alpha' \rightarrow CDE\beta' \in P_2 (Заметим, что другие два правила из P_p могут быть применены только если правило AB \rightarrow A_pB_p было применено в этом выводе ранее). Данный вывод имеет вид: (1) S =>* \gamma_1AB\alpha'\gamma_2 => \gamma_1A_pB_p\alpha'\gamma_2 =>(q_1) \gamma_1'A_pB_p\alpha'\gamma_2' => \gamma_1'CB_p\alpha'\gamma_2' =>(q_2) \gamma_1B_p\alpha'\gamma_2 => \gamma_1DE\beta'\gamma_2 =>* w \in T^*, где q_1 — последовательность правил, примененых после AB \rightarrow A_pB_p и до A_p \rightarrow C, которая осуществляет \gamma_1 =>* \gamma_1' и \gamma_2 =>* \gamma_2', где q_2 — последовательность правил, осуществляющих \gamma_1'C =>* \gamma_1 и \gamma_2' =>* \gamma_2. Или (2) S =>* \gamma_1AB\alpha'\gamma_2 => \gamma_1A_pB_p\alpha'\gamma_2 =>(q_1') \gamma_1'A_pB_p\alpha'\gamma_2' => \gamma_1'A_pDE\beta'\alpha'\gamma_2' =>(q_2') \gamma_1A_p\gamma_2 => \gamma_1C\gamma_2 =>* w \in T^*, где q_1' — последовательность правил, которая осуществляет \gamma_1 =>* \gamma_1' и \gamma_2 =>* \gamma_2', где q_2' — последовательность правил, осуществляющих \gamma_1' =>* \gamma_1 и DE\beta'\gamma_2' =>* \gamma_2. Таким образом, существует вывод: S =>* \gamma_1AB\alpha'\gamma_2 => \gamma_1CDE\beta'\gamma_2 => (q_1) \gamma_1'CDE\beta'\gamma_2' => (q_2) \gamma_1DE\beta'\gamma_2 =>* w \in T^*, который получается из (1) заменой правил P_p на применение p = AB\alpha' \rightarrow CDE\beta \in P. Аналогично, в случае (2) мы можем заменить применение P_p на p. Кроме того, это верно и для применения P_q, где q \in P_3. Таким образом, для r \in P_2 U P_3 мы можем заменить все применения P_r на r, то есть получаем вывод w, который состоит только из правил из P. Тогда w \in L(G) и L(G') <= L(G). |
| Теорема: |
Любую грамматику G можно преобразовать к грамматике G_K в нормальной форме Куроды, так что L(G) = L(G_K). |
| Доказательство: |
|
По лемме 1 построим из G грамматику G', затем по лемме 2 построим из G' грамматику G, Тогда G удовлетворит требованиям леммы 3. Пусть G имеет порядок n. Нсли n = 2, то G в нормальной форме Куроды и G_K = G. Если n >= 3, построим G порядка n - 1 из G по лемме 3. Понятно, что G удовлетворяет условиям леммы 3, будем повторять процесс, пока не получим грамматику порядка 2, которую и примем за G_K. |