Нормальная форма Куроды — различия между версиями
| Строка 47: | Строка 47: | ||
Заменяем разрешенные в <tex>w'</tex> символы на новые и получаем, что <tex>w \in L(G')</tex>. | Заменяем разрешенные в <tex>w'</tex> символы на новые и получаем, что <tex>w \in L(G')</tex>. | ||
| − | Тогда <tex>L(G) | + | Тогда <tex>L(G) \subseteq L(G')</tex>. |
Пусть <tex>x \in L(G')</tex>. Тогда в <tex>G'</tex> существует вывод <tex>S \Rightarrow^* x</tex>. Мы можем поменять порядок применения правил в этом выводе: сначала применяем только правила вида <tex>\alpha' \rightarrow \beta'</tex>, а потом только правила вида <tex>a' \rightarrow a</tex>. | Пусть <tex>x \in L(G')</tex>. Тогда в <tex>G'</tex> существует вывод <tex>S \Rightarrow^* x</tex>. Мы можем поменять порядок применения правил в этом выводе: сначала применяем только правила вида <tex>\alpha' \rightarrow \beta'</tex>, а потом только правила вида <tex>a' \rightarrow a</tex>. | ||
| Строка 57: | Строка 57: | ||
Получаем вывод в <tex>G</tex>: <tex>S = x_0 \Rightarrow x_1 \Rightarrow ... \Rightarrow x_n = x</tex>. | Получаем вывод в <tex>G</tex>: <tex>S = x_0 \Rightarrow x_1 \Rightarrow ... \Rightarrow x_n = x</tex>. | ||
| − | Тогда <tex>L(G') | + | Тогда <tex>L(G') \subseteq L(G)</tex>. |
Таким образом, <tex>L(G') = L(G)</tex>. | Таким образом, <tex>L(G') = L(G)</tex>. | ||
| Строка 79: | Строка 79: | ||
Заметим, что замена правила <tex>\alpha \rightarrow \beta</tex> на <tex>\alpha \rightarrow \beta D^{|\alpha| - |\beta|}</tex> не меняет язык грамматики, потому что дополнительная буква <tex>D</tex> запрещается при добавлении перехода <tex>D \rightarrow \varepsilon</tex>, а других правил для <tex>D</tex> нет. | Заметим, что замена правила <tex>\alpha \rightarrow \beta</tex> на <tex>\alpha \rightarrow \beta D^{|\alpha| - |\beta|}</tex> не меняет язык грамматики, потому что дополнительная буква <tex>D</tex> запрещается при добавлении перехода <tex>D \rightarrow \varepsilon</tex>, а других правил для <tex>D</tex> нет. | ||
| − | Тогда получаем, что <tex>L(G) | + | Тогда получаем, что <tex>L(G) \subseteq L(G')</tex>, аналогично обратные изменения не меняют язык, то есть <tex>L(G') \subseteq L(G)</tex>. |
}} | }} | ||
| Строка 117: | Строка 117: | ||
Покажем, что <tex>L(G') = L(G)</tex>. | Покажем, что <tex>L(G') = L(G)</tex>. | ||
| − | Сначала докажем, что <tex>L(G) | + | Сначала докажем, что <tex>L(G) \subseteq L(G')</tex>. Это следует из того, что: |
* все правила из <tex>P_1</tex> применимы к обеим грамматикам, | * все правила из <tex>P_1</tex> применимы к обеим грамматикам, | ||
* шаг вывода <tex>\gamma_1AB\alpha'\gamma_2 \Rightarrow \gamma_1CDE\beta'\gamma_2</tex>, благодаря правилу <tex>p = AB\alpha \rightarrow CDE\beta' \in P_2</tex> в <tex>G</tex>может быть использавано в <tex>G'</tex> с помощью трех шагов: | * шаг вывода <tex>\gamma_1AB\alpha'\gamma_2 \Rightarrow \gamma_1CDE\beta'\gamma_2</tex>, благодаря правилу <tex>p = AB\alpha \rightarrow CDE\beta' \in P_2</tex> в <tex>G</tex>может быть использавано в <tex>G'</tex> с помощью трех шагов: | ||
| Строка 142: | Строка 142: | ||
Таким образом, для <tex>r \in P_2 \cup P_3</tex> мы можем заменить все применения <tex>P_r</tex> на <tex>r</tex>, то есть получаем вывод <tex>w</tex>, который состоит только из правил из <tex>P</tex>. | Таким образом, для <tex>r \in P_2 \cup P_3</tex> мы можем заменить все применения <tex>P_r</tex> на <tex>r</tex>, то есть получаем вывод <tex>w</tex>, который состоит только из правил из <tex>P</tex>. | ||
| − | Тогда <tex>w \in L(G)</tex> и <tex>L(G') | + | Тогда <tex>w \in L(G)</tex> и <tex>L(G') \subseteq L(G)</tex>. |
}} | }} | ||
Версия 14:19, 4 января 2015
| Определение: |
Грамматика представлена в нормальной форме Куроды (англ. Kuroda normal form), если каждое правило имеет одну из четырех форм:
|
Данная грамматика названа в честь Куроды (англ. Sige-Yuki Kuroda), который изначально назвал ее линейно ограниченной грамматикой.
| Определение: |
Грамматика представлена в нормальной форме Пенттонена (англ. Penttonen normal form), если каждое правило имеет одну из трех форм:
|
Также грамматику Пенттонена называют односторонней нормальной формой (англ. one-sided normal form). Как можно заметить, она является частным случаем нормальной формы Куроды: когда в первом правиле определения.
Для каждой контестно-зависимой грамматики существует слабо эквивалентная ей грамматика в форме Пенттонена.
| Лемма (об удалении терминалов): |
Для любой грамматики может быть построена грамматика такая, что:
|
| Доказательство: |
|
Каждому терминалу поставим в соотвествие новый символ , которого нет в , такой что для разных терминалов и . Пусть . Пусть — часть правила, тогда , где , если ; , если для . Построим грамматику , где . Покажем, что . Пусть . Тогда в G существует вывод . Согласно конструкции , в существует вывод . Для в переходах используем правило , так как правило было использовано при выводе . Для в переходах используем правила вида . Заменяем разрешенные в символы на новые и получаем, что . Тогда . Пусть . Тогда в существует вывод . Мы можем поменять порядок применения правил в этом выводе: сначала применяем только правила вида , а потом только правила вида . Из построения: после применения правила вида полученное не может быть использовано при применении правил из . Изменение порядка вывода не меняет язык, то есть в существует вывод: , где для и в переходе было использовано правило вывода и для было использовано правило , чтобы получить . Получаем вывод в : . Тогда . Таким образом, . Очевидно, что если грамматика была неукорочивающейся, то она такой и останется. |
| Лемма (об удалении длинных правил): |
Для любой грамматики может быть построена грамматика такая, что:
|
| Доказательство: |
|
Сначала по построим грамматику , как в доказательстве леммы 1. По построим грамматику , в которой:
Теперь все правила в имеет требуемую форму. Покажем, что . Заметим, что замена правила на не меняет язык грамматики, потому что дополнительная буква запрещается при добавлении перехода , а других правил для нет. Тогда получаем, что , аналогично обратные изменения не меняют язык, то есть . |
| Определение: |
| Грамматика имеет порядок n, если и для любого ее правила . |
| Лемма (об уменьшении порядка грамматики): |
(Уменьшение порядка грамматики)
Для любой грамматики порядка , такой что: любое правило из имеет вид , где и и или или , где и может быть построена грамматика порядка такая, что . |
| Доказательство: |
|
Разделим на три подмножества: , , . Очевидно, что . Построим следующим образом:
Полагаем , , где — дополнительные символы не из для разных правил и из .
Полагаем , , где — дополнительные символы. Тогда , . Из построения очевидно, что имеет порядок . Покажем, что . Сначала докажем, что . Это следует из того, что:
, с использованием правил из и вывода на основе правила в , которое может быть применено в с помощью трех шагов вывода: . Таким образом, любой вывод в может быть преобразован в вывод в . Чтобы показать обратное включение, рассмотрим вывод в , который содержит применение правил вида для какого-то правила . Заметим, что другие два правила из могут быть применены только если правило было применено в этом выводе ранее. Данный вывод имеет вид (1) : , где — последовательность правил, примененых после и до , которая осуществляет и , где — последовательность правил, осуществляющих и . Или вид (2) : , где — последовательность правил, которая осуществляет и , где — последовательность правил, осуществляющих и . Таким образом, существует вывод: , который получается из (1) заменой правил на применение . Аналогично, в случае (2) мы можем заменить применение на . Кроме того, это верно и для применения где . Таким образом, для мы можем заменить все применения на , то есть получаем вывод , который состоит только из правил из . Тогда и . |
| Теорема: |
Любую грамматику можно преобразовать к грамматике в нормальной форме Куроды так, что . |
| Доказательство: |
|
По лемме 1 построим из грамматику , затем по лемме 2 построим из грамматику , Тогда удовлетворит требованиям леммы 3. Пусть имеет порядок . Если , то в нормальной форме Куроды и . Если , построим порядка из по лемме 3. Понятно, что удовлетворяет условиям леммы 3. Будем повторять процесс, пока не получим грамматику порядка , которую и примем за . |