Нормальная форма Куроды — различия между версиями
Строка 114: | Строка 114: | ||
Из построения очевидно, что <tex>G'</tex> имеет порядок <tex>n - 1</tex>. | Из построения очевидно, что <tex>G'</tex> имеет порядок <tex>n - 1</tex>. | ||
− | Покажем, что L(G') = L(G). | + | Покажем, что <tex>L(G') = L(G)</tex>. |
− | Сначала докажем, что L(G) <= L(G'). Это следует из того, что: | + | Сначала докажем, что <tex>L(G) <= L(G')</tex>. Это следует из того, что: |
− | * все правила из P_1 применимы к обеим грамматикам, | + | * все правила из <tex>P_1</tex> применимы к обеим грамматикам, |
− | * шаг вывода \gamma_1AB\alpha'\gamma_2 => \gamma_1CDE\beta'\gamma_2, благодаря правилу p = AB\alpha \rightarrow CDE\beta' \in P_2 в G | + | * шаг вывода <tex>\gamma_1AB\alpha'\gamma_2 => \gamma_1CDE\beta'\gamma_2</tex>, благодаря правилу <tex>p = AB\alpha \rightarrow CDE\beta' \in P_2</tex> в <tex>G</tex>может быть использавано в <tex>G'</tex> с помощью трех шагов: |
− | \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' с помощью трех шагов вывода: | + | <tex>\gamma_1AB\alpha'\gamma_2 => \gamma_1A_pB_p\alpha'\gamma_2 => \gamma_1CB_p\alpha'\gamma_2 => \gamma_1CDE\beta\gamma_2</tex>, с использованием правил из <tex>P_p</tex> и вывода <tex>\gamma_1A\gamma_2 => \gamma_1CDE\beta'\gamma_2</tex> на основе правила <tex>p = A\alpha \rightarrow CDE\beta' \in P_3</tex> в <tex>G</tex>, которое может быть применено в <tex>G'</tex> с помощью трех шагов вывода: |
− | \gamma_1A\alpha1'\gamma_2 => \gamma_1A_pB_p\alpha'\gamma_2 => \gamma_1CB_p\alpha'\gamma_2 => \gamma_1CDE\beta\gamma_2. | + | <tex>\gamma_1A\alpha1'\gamma_2 => \gamma_1A_pB_p\alpha'\gamma_2 => \gamma_1CB_p\alpha'\gamma_2 => \gamma_1CDE\beta\gamma_2</tex>. |
− | Таким образом, любой вывод в G может быть преобразован в вывод в G'. | + | Таким образом, любой вывод в <tex>G</tex> может быть преобразован в вывод в <tex>G'</tex>. |
− | Чтобы показать обратное включение, рассмотрим вывод w \in L(G') в G', который содержит применение правил вида AB \rightarrow A_pB_p для какого-то правила p = AB\alpha' \rightarrow CDE\beta' \in P_2 | + | Чтобы показать обратное включение, рассмотрим вывод <tex>w \in L(G')</tex> в <tex>G'</tex>, который содержит применение правил вида <tex>AB \rightarrow A_pB_p</tex> для какого-то правила <tex>p = AB\alpha' \rightarrow CDE\beta' \in P_2</tex>. Заметим, что другие два правила из <tex>P_p</tex> могут быть применены только если правило <tex>AB \rightarrow A_pB_p</tex> было применено в этом выводе ранее. |
− | |||
− | |||
− | |||
− | |||
− | |||
− | Или (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_1''A_p\gamma_2'' => \gamma_1''C\gamma_2'' =>* w \in T^*, | + | Данный вывод имеет вид (1) : <tex>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_1''B_p\alpha'\gamma_2'' => \gamma_1''DE\beta'\gamma_2'' =>* w \in T^*</tex>, |
− | где q_1' {{---}} последовательность правил, которая осуществляет \gamma_1 =>* \gamma_1' и \gamma_2 =>* \gamma_2', | + | |
− | где q_2' {{---}} последовательность правил, осуществляющих \gamma_1' =>* \gamma_1'' и DE\beta'\gamma_2' =>* \gamma_2''. | + | где <tex>q_1</tex> {{---}} последовательность правил, примененых после <tex>AB \rightarrow A_pB_p</tex> и до <tex>A_p \rightarrow C</tex>, которая осуществляет <tex>\gamma_1 =>* \gamma_1'</tex> и <tex>\gamma_2 =>* \gamma_2'</tex>, |
+ | |||
+ | где <tex>q_2</tex> {{---}} последовательность правил, осуществляющих <tex>\gamma_1'C =>* \gamma_1''</tex> и <tex>\gamma_2' =>* \gamma_2''</tex>. | ||
+ | |||
+ | Или вид (2) : <tex>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_1''A_p\gamma_2'' => \gamma_1''C\gamma_2'' =>* w \in T^*</tex>, | ||
+ | |||
+ | где <tex>q_1'</tex> {{---}} последовательность правил, которая осуществляет <tex>\gamma_1 =>* \gamma_1'</tex> и <tex>\gamma_2 =>* \gamma_2'</tex>, | ||
+ | |||
+ | где <tex>q_2'</tex> {{---}} последовательность правил, осуществляющих <tex>\gamma_1' =>* \gamma_1''</tex> и <tex>DE\beta'\gamma_2' =>* \gamma_2''</tex>. | ||
Таким образом, существует вывод: | Таким образом, существует вывод: | ||
− | S =>* \gamma_1AB\alpha'\gamma_2 => \gamma_1CDE\beta'\gamma_2 => (q_1) \gamma_1'CDE\beta'\gamma_2' => (q_2) \gamma_1''DE\beta'\gamma_2'' =>* w \in T^*, | + | <tex>S =>* \gamma_1AB\alpha'\gamma_2 => \gamma_1CDE\beta'\gamma_2 => (q_1) \gamma_1'CDE\beta'\gamma_2' => (q_2) \gamma_1''DE\beta'\gamma_2'' =>* w \in T^*</tex>, который получается из (1) заменой правил <tex>P_p</tex> на применение <tex>p = AB\alpha' \rightarrow CDE\beta \in P</tex>. Аналогично, в случае (2) мы можем заменить применение <tex>P_p</tex> на <tex>p</tex>. Кроме того, это верно и для применения <tex>P_q,</tex> где <tex>q \in P_3</tex>. |
− | который получается из (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 | + | Таким образом, для <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') <= L(G)</tex>. | ||
}} | }} | ||
{{Теорема | {{Теорема | ||
|statement= | |statement= | ||
− | Любую грамматику G можно преобразовать к грамматике G_K в нормальной форме Куроды, | + | Любую грамматику <tex>G</tex> можно преобразовать к грамматике <tex>G_K</tex> в нормальной форме Куроды так, что <tex>L(G) = L(G_K)</tex>. |
|proof= | |proof= | ||
− | По лемме 1 построим из G грамматику G', затем по лемме 2 построим из G' грамматику G'', Тогда G'' удовлетворит требованиям леммы 3. | + | По лемме 1 построим из <tex>G</tex> грамматику <tex>G'</tex>, затем по лемме 2 построим из <tex>G'</tex> грамматику <tex>G''</tex>, Тогда <tex>G''</tex> удовлетворит требованиям леммы 3. |
− | Пусть G'' имеет порядок n. | + | |
− | Понятно, что G''' удовлетворяет условиям леммы 3 | + | Пусть <tex>G''</tex> имеет порядок <tex>n</tex>. |
+ | Если <tex>n = 2</tex>, то <tex>G''</tex> в нормальной форме Куроды и <tex>G_K = G''</tex>. | ||
+ | Если <tex>n >= 3</tex>, построим <tex>G'''</tex> порядка <tex>n - 1</tex> из <tex>G''</tex> по лемме 3. | ||
+ | Понятно, что <tex>G'''</tex> удовлетворяет условиям леммы 3. | ||
+ | Будем повторять процесс, пока не получим грамматику порядка <tex>2</tex>, которую и примем за <tex>G_K</tex>. | ||
}} | }} |
Версия 14:00, 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. , которую и примем за . |