Теорема Парика — различия между версиями
Alice (обсуждение | вклад) |
Alice (обсуждение | вклад) |
||
| Строка 89: | Строка 89: | ||
Покажем, что <tex>\Psi_{\Sigma}(L(\Gamma)) = \bigcup \limits_{s \in M} \{\Psi_{\Sigma}(t) \mid s \leqslant t\}</tex>. Это множество полулинейно по предпоследней и последней лемме (<tex>M</tex> по ней конечно, так как число базовых <tex>p</tex> конечно). | Покажем, что <tex>\Psi_{\Sigma}(L(\Gamma)) = \bigcup \limits_{s \in M} \{\Psi_{\Sigma}(t) \mid s \leqslant t\}</tex>. Это множество полулинейно по предпоследней и последней лемме (<tex>M</tex> по ней конечно, так как число базовых <tex>p</tex> конечно). | ||
| − | Любое такое <tex>t</tex>, что <tex>s \leqslant t</tex> для некоторого <tex>s \in M</tex> имеет корень <tex>root(t) = S</tex>, и его <tex>res(t) \in \Sigma^{*}</tex>, значит <tex>t \in L(\Gamma)</tex>, и значит <tex>\Psi_{\Sigma}(t) \in \Psi_{\Sigma}(L(\Gamma))</tex>. В обратную сторону, любая строка <tex>x \in L(\Gamma)</tex> имеет дерево разбора <tex>t</tex> с корнем <tex>root(t) = S</tex> и <tex>res(t) = x</tex>, и должно существовать <tex>leqslant</tex>-минимальное <tex>s \leqslant t</tex> (в противном бы случае это означало, что <tex>t</tex> не содержит базовых <tex>p</tex>, и значит оно само является <tex>\leqslant</tex>-минимальным), и тогда <tex>\Psi_{\Sigma}(x) \in \{\Psi_{\Sigma}(t) \mid s \leqslant t\}</tex>. | + | Любое такое <tex>t</tex>, что <tex>s \leqslant t</tex> для некоторого <tex>s \in M</tex> имеет корень <tex>root(t) = S</tex>, и его <tex>res(t) \in \Sigma^{*}</tex>, значит <tex>t \in L(\Gamma)</tex>, и значит <tex>\Psi_{\Sigma}(t) \in \Psi_{\Sigma}(L(\Gamma))</tex>. В обратную сторону, любая строка <tex>x \in L(\Gamma)</tex> имеет дерево разбора <tex>t</tex> с корнем <tex>root(t) = S</tex> и <tex>res(t) = x</tex>, и должно существовать <tex>\leqslant</tex>-минимальное <tex>s \leqslant t</tex> (в противном бы случае это означало, что <tex>t</tex> не содержит базовых <tex>p</tex>, и значит оно само является <tex>\leqslant</tex>-минимальным), и тогда <tex>\Psi_{\Sigma}(x) \in \{\Psi_{\Sigma}(t) \mid s \leqslant t\}</tex>. |
}} | }} | ||
Версия 18:44, 30 декабря 2016
Содержание
Линейные множества
В этом разделе предполагается, что зафиксирован некоторый линейный порядок на алфавите . Пусть .
| Определение: |
| Через будем обозначать функцию , определённую следующим образом: , где — число появлений символа в слове . Аналогично, каждому языку ставится в соответствие множество , определённое так: . Функция называется отображением Парика (англ. Parikh's mapping) соответственно слова и языка. |
Пусть и . Тогда .
| Определение: |
| Пусть при — вектора в множестве . Множество называется линейным (англ. linear) подмножеством множества . |
Говоря проще, линейное подмножество может быть построено с помощью любого m-размерного вектора добавлением к нему произвольного числа m-размерных векторов из конечного множества, например, 1 раз и 0 раз остальные вектора, 1 раз , 1 раз и 0 раз остальные, и так далее.
Множество является линейным.
| Определение: |
| Подмножество множества называется полулинейным (англ. semilinear), если оно является объединением конечного числа линейных множеств. |
Полулинейное множество имеет следующие свойства:
- Любое конечное подмножество — полулинейно.
- Полулинейные множества замкнуты относительно операции объединения, пересечения, разности и проекции.
- Полулинейные множества по теореме Гинзбурга-Спаниера (англ. Ginsburg and Spanier theorem) — те, которые определяемы в арифметике Пресбургера (англ. Presburger arithmetic)[1].
Пусть , , и линейные подмножества , а является полулинейным подмножеством .
Теорема Парика
Пусть — контекстно-свободная грамматика.
Далее маленькими латинскими буквами будем обозначать деревья разбора. Для деревьев результатом () будем называть строку из нетерминалов и терминалов, записанных в листьях, упорядоченную слева направо, глубина дерева () — длина наибольшего пути от листов до корня дерева, будем писать , чтобы обозначить множество нетерминалов в дереве, а — корень дерева.
Обозначим за деревья такого вида:
- оно содержит хотя бы два узла.
- , где , то есть все листья помечены терминалами, за исключением одного, который совпадает с корнем дерева.
Будем обозначать если может быть получен из вставкой дерева с нетерминалом в качестве корня на место нетерминала в дереве , то есть, можно увеличить с помощью некоторого дерева так, чтобы получить . В строго меньше узлов, чем в .
Пусть называется базовым, если оно -минимально среди всех , то есть не содержит в себе другое , которое можно вырезать. Или, иначе, является базовым, если в является только тривиальным деревом с одним узлом (который же является и корнем).
| Лемма: |
Если является базовым, то , где количество нетерминалов в N. |
| Доказательство: |
|
Обозначим за путь от листа с нетерминалом до корня. Пусть не может быть длиннее, чем , потому что если бы был, то он содержал бы повторяющийся нетерминал, и, тем самым, содержал бы в себе другое дерево , что противоречит тому, что базовое. Для других же листов путь должен не превышать по тем же причинам. Таким образом, длина любого пути не больше . |
Из леммы и из конечности нетерминалов и продукций в грамматике следует, что количество таких базовых деревьев конечно.
| Лемма: |
Любое дерево разбора с либо -минимально, либо содержит в себе базовое . |
| Доказательство: |
| Пусть не -минимально, тогда оно по определению содержит дерево . Пусть будет -минимально среди всех , содержащихся в , тогда является базовым, так как если нет, то оно содержит в себе другое , что противоречит -минимальности. |
Пусть если может быть получен из конечной последовательностью вставок базовых , для которых . Другими словами, нам позволено выбирать любой нетерминал A в дереве и вставлять на это место базовое с корнем А в том случае, если содержит только те нетерминалы, что есть в . Если с помощью таких операций можно получить , то .
Если строка , то за будем обозначать , где получен из удалением всех нетерминалов. За будем обозначать .
| Лемма: |
Множество линейно. |
| Доказательство: |
| является базовым, и его . |
Будем называть -минимальным, если оно не содержит в себе повторяющихся базовых .
| Лемма: |
Если -минимально, то его , где — размер , а — число различных базовых в дереве. |
| Доказательство: |
| Если путь длиннее, чем , то тогда он может быть поделен на сегмент, каждый из которых длины как минимум , и каждый имеет повторяющийся нетерминал, а, следовательно, содержит непересекающееся поддерево (деревья называются непересекающимися в данном случае, если у них нет общих узлов, или если корень одного является листом другого дерева), каждое из которых, в соответствие с леммой, либо само является базовым, либо содержит базовое в себе, следовательно, в дереве содержится непересекающихся базовых . Но так как число различных базовых равно , какое-то появляется в этом наборе дважды, что противоречит -минимальности. |
| Теорема (Парика, англ. Parikh's theorem): |
Если язык является контекстно-свободным, то множество является полулинейным. |
| Доказательство: |
|
Воспользуемся ранее полученными результатами в доказательстве. Зададим -минимально, . Покажем, что . Это множество полулинейно по предпоследней и последней лемме ( по ней конечно, так как число базовых конечно). Любое такое , что для некоторого имеет корень , и его , значит , и значит . В обратную сторону, любая строка имеет дерево разбора с корнем и , и должно существовать -минимальное (в противном бы случае это означало, что не содержит базовых , и значит оно само является -минимальным), и тогда . |
Теорема Парика связывает два понятия: функцию контекстно-свободного языка и полулинейное множество. Например, для языка функция .
Эта теорема, так же, как и лемма о накачке и лемма Огдена, не является достаточной: язык не является контекстно-свободным, однако его множество является полулинейным: .
Примеры
Язык — простое число не является контекстно-свободным, так как множество простых чисел не является полулинейным (в арифметике Пресбургера нельзя определить множество простых чисел).
Язык или — простое и не является контекстно свободным, так как множество, порождаемое функцией , не является полулинейным: множество таких пар — линейно, множество таких пар — линейно, при этом множество простых чисел не является полулинейным, и, как следствие, множество — простое и не является полулинейным, так же не полулинейно.
См. также
Примечания
Источники информации
- Гинзбург С. — Математическая теория контекстно-свободных языков
- Dexter C. Kozen — Automata and Computability
- Stack Exchange — How to prove that a language is not context-free?