Теорема Парика — различия между версиями
Alice (обсуждение | вклад) |
Alice (обсуждение | вклад) |
||
Строка 34: | Строка 34: | ||
|statement=Если язык <tex>L \subset \Sigma^{*}</tex> является [[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|контекстно-свободным]], то множество <tex>\Psi_{\Sigma}(L)</tex> является полулинейным. | |statement=Если язык <tex>L \subset \Sigma^{*}</tex> является [[Контекстно-свободные грамматики, вывод, лево- и правосторонний вывод, дерево разбора|контекстно-свободным]], то множество <tex>\Psi_{\Sigma}(L)</tex> является полулинейным. | ||
|proof= | |proof= | ||
− | + | Пусть <tex>\Gamma =\langle \Sigma, N, S, P\rangle</tex> {{---}} контекстно-свободная грамматика. Вместо того, чтобы рассматривать <tex>L(\Gamma)</tex>, рассмотрим язык <tex>L^{\sim}(\Gamma)</tex>, содержащий только строки, порожденные выводами, в которых встречаются все нетерминалы грамматики. | |
− | // | + | Так как теорема Парика говорит о том, что для <tex>L(\Gamma)</tex> множество <tex>\Psi_{\Sigma}(L)</tex> полулинейно, то же самое должно сохраняться и для <tex>L^{\sim}(\Gamma)</tex>. |
− | //Для | + | |
+ | <br> | ||
+ | {{Лемма | ||
+ | |statement= | ||
+ | Если множество <tex>\Psi_{\Sigma}(L^{\sim}(\Gamma))</tex> полулинейно для всех контекстно-свободных языков, тогда множество <tex>\Psi_{\Sigma}(L(\Gamma))</tex> также полулинейно. | ||
+ | |proof= | ||
+ | Построим грамматики <tex>\Gamma_{1},...\Gamma_{k}</tex> для какого-то <tex>k \in \mathbb {N}^{+}</tex> путем удаления из грамматики <tex>\Gamma</tex> нетерминалов. Тогда <tex>L(\Gamma) = L^{\sim}(\Gamma_{1}) \cup ... \cup L^{\sim}(\Gamma_{k})</tex>. Так как для каждого из языков <tex>L^{\sim}(\Gamma_{p})</tex> множество <tex>\Psi_{\Sigma}</tex> полулинейно, то, по свойствам полулинейных множеств, для <tex>L(\Gamma)</tex> <tex>\Psi_{\Sigma}</tex> также полулинейно. | ||
+ | }} | ||
+ | |||
+ | Стоит заметить, что число таких языков в лемме ограничено числом нетерминалов в грамматике: <tex>k = 2^{|N|} - 1</tex>. Вычитание происходит из-за того, что начальный нетерминал <tex>S</tex> не должен быть удален. | ||
+ | |||
+ | <br> | ||
+ | Теперь определим три множества деревьев разбора. | ||
+ | {{Определение | ||
+ | |definition = | ||
+ | Пусть <tex>T</tex> {{---}} множество всех терминальных деревьев разбора с корнем <tex>S</tex>, которые удовлетворяют двум условиям: | ||
+ | 1. Каждый нетерминал <tex>N</tex> встречается в в дереве. | ||
+ | 2. Каждый нетерминал <tex>N</tex> встречается не более чем <tex>k = |N|</tex> раз в дереве. | ||
+ | }} | ||
+ | Деревья из этого множества соотносятся с деревьями разбора языка <tex>L^{\sim}(\Gamma)</tex>, так как при выводе каждого слова из этого языка также используются все нетерминалы грамматики. | ||
+ | |||
+ | В отличие от предыдущего определения, для следующего множества число <tex>k</tex> для любого нетерминала не ограничено. | ||
+ | {{Определение | ||
+ | |definition = | ||
+ | Пусть <tex>T'</tex> {{---}} множество всех терминальных деревьев разбора с корнем <tex>S</tex>, которые удовлетворяют первому условию из предыдущего определения. | ||
+ | }} | ||
+ | |||
+ | Последнее множество относится к тем правилам грамматики, которые делают строку больше в процессе вывода, то есть <tex>A \Rightarrow uAv</tex>, где <tex>u, v \in \Sigma</tex>. Эти деревья могут быть использованы, чтобы увеличить дерево разбора в множестве <tex>T'</tex> замещением нетерминала <tex>A</tex> в некотором дереве <tex>t'</tex> на дерево из множества <tex>I</tex>, определение которого написано ниже. | ||
+ | {{Определение | ||
+ | |definition = | ||
+ | Пусть <tex>I</tex> {{---}} множество всех деревьев разбора с корнем <tex>A \in N</tex>, содержащих только один нетерминальный лист, который также помечен как <tex>A</tex>. | ||
+ | }} | ||
+ | В дополнение, деревья разбора множества <tex>I</tex> должны удовлетворять условию 2 в определении <tex>T</tex>. Еще можно заметить, что деревья из <tex>T</tex> и <tex>I</tex> имеют конечную высоту. | ||
+ | |||
+ | <br> | ||
+ | Теперь перейдем к доказательству теоремы. | ||
+ | <br> | ||
+ | Пусть <tex>w_{1},...,w_{q}</tex> при <tex>q \in \mathbb {N}^{+}</tex> будут множеством строк, порожденных деревьями из <tex>T</tex>, и множество <tex>W</tex> {{---}} набором всех строк <tex>uv</tex>, для которых <tex>uAv</tex> будет результатом, полученным с помощью дерева разбора из <tex>I</tex> с вершиной <tex>A \in N</tex>. Элементы множества <tex>W</tex> представляют возможные поддеревья, которые могут быть использованы для того, чтобы увеличить длину пути в некотором дереве. | ||
+ | {{Лемма | ||
+ | |statement= | ||
+ | Для языка <tex>L^{\sim}(\Gamma)</tex> выполняется равенство <tex>\Psi_{\Sigma}(L^{\sim}(\Gamma)) = (\Psi_{\Sigma}(w_{1})+\Psi_{\Sigma}(W)^{*}) \cup ... \cup (\Psi_{\Sigma}(w_{q})+\Psi_{\Sigma}(W)^{*}) </tex> | ||
+ | |proof= | ||
+ | Можем заметить, пустая строка может быть удалена из множества <tex>W</tex>, так как она не влияет на суммирование. Обозначим объединение сумм в лемме как <tex>\Phi</tex>. | ||
+ | |||
+ | Доказывать лемму будем в две стадии по индукции. | ||
+ | |||
+ | <tex>\Longrightarrow</tex> <tex>\Phi \subset L^{\sim}(\Gamma)</tex>. | ||
+ | |||
+ | |||
+ | <tex>\Longleftarrow</tex> <tex>L^{\sim}(\Gamma) \subset \Phi</tex>. | ||
+ | |||
+ | }} | ||
+ | |||
}} | }} | ||
Строка 50: | Строка 102: | ||
== См. также == | == См. также == | ||
*[[Лемма о разрастании для КС-грамматик|Лемма о разрастании для КС-грамматик]] | *[[Лемма о разрастании для КС-грамматик|Лемма о разрастании для КС-грамматик]] | ||
+ | |||
== Источники == | == Источники == | ||
*Гинзбург С. {{---}} Математическая теория контекстно-свободных языков | *Гинзбург С. {{---}} Математическая теория контекстно-свободных языков | ||
+ | *[https://www8.cs.umu.se/kurser/TDBC92/VT06/final/3.pdf Håkan Lindqvist {{---}} Parikh’s theorem] | ||
[[Категория: Теория формальных языков]] | [[Категория: Теория формальных языков]] | ||
[[Категория: Контекстно-свободные грамматики]] | [[Категория: Контекстно-свободные грамматики]] | ||
[[Категория: Опровержение контекстно-свободности языка]] | [[Категория: Опровержение контекстно-свободности языка]] |
Версия 00:51, 21 декабря 2016
Используемые определения
В этом разделе предполагается, что зафиксирован некоторый линейный порядок на алфавите
. Пусть .
Определение: |
Через | будем обозначать функцию , определённую следующим образом: , где — количество появлений символа в слове . Аналогично, каждому языку ставится в соответствие множество , определённое так: .
Пусть и . Тогда .
Определение: |
Пусть | при — вектора в множестве . Множество называется линейным (англ. linear) подмножеством множества .
Говоря проще, линейное подмножество может быть построено с помощью любого m-размерного вектора добавлением к нему произвольного числа m-размерных векторов из конечного множества, например, 1 раз и 0 раз остальные вектора, 1 раз , 1 раз и 0 раз остальные, и так далее.
Множество является линейным.
Определение: |
Подмножество множества | называется полулинейным (англ. semilinear), если оно является объединением конечного числа линейных множеств.
- Любое конечное подмножество — полулинейно.
- Полулинейные множества замкнуты относительно операции объединения, пересечения, разности и проекции.
- Полулинейные множества по теореме Гинзбурга-Спаниера (англ. Ginsburg and Spanier theorem) — те, которые определяемы в арифметика Пресбургера (англ. Presburger arithmetic).
Пусть
, , и линейные подмножества , а является полулинейным подмножеством .Теорема Парика
Теорема (Парика, англ. Parikh's theorem): | ||||||||||||||||||
Если язык контекстно-свободным, то множество является полулинейным. является | ||||||||||||||||||
Доказательство: | ||||||||||||||||||
Пусть — контекстно-свободная грамматика. Вместо того, чтобы рассматривать , рассмотрим язык , содержащий только строки, порожденные выводами, в которых встречаются все нетерминалы грамматики. Так как теорема Парика говорит о том, что для множество полулинейно, то же самое должно сохраняться и для .
Стоит заметить, что число таких языков в лемме ограничено числом нетерминалов в грамматике: . Вычитание происходит из-за того, что начальный нетерминал не должен быть удален.
Деревья из этого множества соотносятся с деревьями разбора языка , так как при выводе каждого слова из этого языка также используются все нетерминалы грамматики.В отличие от предыдущего определения, для следующего множества число для любого нетерминала не ограничено.
В дополнение, деревья разбора множества должны удовлетворять условию 2 в определении . Еще можно заметить, что деревья из и имеют конечную высоту.
| ||||||||||||||||||
Теорема Парика связывает два понятия: функцию
Эта теорема, так же, как и лемма о накачке и лемма Огдена, не является достаточной: язык не является контекстно-свободным, однако его множество является полулинейным: .
Примеры
Язык
— простое число не является контекстно-свободным, так как множество простых чисел не является полулинейным (в арифметике Пресбургера нельзя определить множество простых чисел).Язык
или — простое и не является контекстно свободным, так как множество, порождаемое функцией , не является полулинейным: множество таких пар — линейно, множество таких пар — линейно, при этом множество простых чисел не является полулинейным, и, как следствие, множество — простое и не является полулинейным, так же не полулинейно.См. также
Источники
- Гинзбург С. — Математическая теория контекстно-свободных языков
- Håkan Lindqvist — Parikh’s theorem