Участник:Svetomsk
Содержание
Базовые определения
| Определение: |
| Пусть , где и , тогда множество называется линейным подмножеством (англ. linear subset) |
| Определение: |
| Полулинейное подмножество (англ. semilinear subset) — объединение конечно числа линейных подмножество , где . |
| Определение: |
| Пусть , где и порядок произвольный, но фиксированный (выбран определенный порядок, но не важно какой именно). Для образ Париха (англ. Parikh image) — , где — количество в |
| Определение: |
| Пусть язык . Тогда соответствие Париха (англ. Parikh mapping) на языке — |
Теорема Париха
| Теорема (Parikh): | |||||||||||
Для контекстно свободного языка , — эффективно полулинейная. Кортежи, определяющие можно эффективно построить из КС грамматики, генерирующей язык . | |||||||||||
| Доказательство: | |||||||||||
|
Доказательство разобьем на 3 части: Первая частьПусть дана грамматика . Будем рассматривать язык , состоящий из слов, сгенерированных деревьями решений, в которых встречаются все нетерминалы из .
| |||||||||||
Вторая часть
В этой части рассмотрим деревья вывода, которые используются в генерации языка . Определим три специальных вида деревьев с ограниченными свойствами.
| Определение: |
Множество терминальных деревьев вывода с корнем (англ. set of terminal derivation trees with root S) — множество деревьев, которые удовлетворяют свойствам:
|
Элементы множества соответствуют деревьям вывода для языка .
| Определение: |
| Множество всех терминальных деревьев (англ. the set of all terminal trees) — множество всех терминальных деревьев вывода, удовлетворяющих только первому пункту из определения. |
| Определение: |
| Множество промежуточных деревьев (англ. set of intermediate trees) — множество всех деревьев вывода с корнем , содержащих ровно один нетерминальный лист с тем же нетерминалом . Кроме того, это множество должно удовлетворять второму условию из определения. Обозначим это множество |
| Утверждение: |
Константа из определения ограничена сверху значением , где — количество повторений нетерминала на пути. Следовательно и , и имеют конечную высоту. |
Третья часть
| Определение: |
| Пусть , где , — множество порожденных строк (англ. set of yielded strings) из деревьев, лежащих в |
| Определение: |
| Пусть — множество все строк вида таких, что — результат какого-то дерева вывода из для некоторого терминала |
Внимательно посмотрев на последнее определение, очевидно можно заметить, что элементы представляют собой возможные поддеревья, который могут быть использованы для того, чтобы сделать дерево вывода больше.
Другими словами, элементы соответствуют правилу в КС грамматике, которое делает строку длиннее, вводя нетерминал между двумя терминалами.
| Лемма: |
| Доказательство: |
|
(по индукции) Вправо
База индукции: Пусть для некоторого , тогда . Следовательно . По определению соответствует строке, формирующей язык . Переход: Пусть , где Есть дерево с результатом такое, что . Также есть дерево выводящее такое, что Теперь построим дерево вывода, полученное заменой всех вершин с нетерминалом в дереве на деревья полученные заменой листов с нетерминалом в дереве на поддерево с корнем в вершине . Получившееся дерево принадлежит множеству и его результат удовлетворяет равенству . Полученное равенство доказывает шаг индукции. Влево
База индукции: Если , тогда для некотого . Таким образом . Шаг индукции: Пусть , — вершины на некотором пути и пусть индексы обозначают позицию вершины на этом пути. Более того, пусть все вершины будут помечены одним и тем же нетерминалом таким, что все хорошие поддеревья дерева с корнем в удовлетворяют условию 2 из определения. Пусть будет дерево, полученное из дерева удалением вершин в и . Наоборот, пусть дерево получено удалением вершин между и . Тогда и , где и являются результатом вывода деревьев и соответственно. Осталось показать, что может быть выбрано так, чтобы Пусть , где . Тогда , если содержит все в для некоторого . Но так как есть выборов для , должно быть хотя бы одно , для которого это не выполняется. Следовательно и шаг индукции доказан. |
Доказательство показывает, что соответствие Париха КС языка равносильно тому, что получено из терминальных деревьев выхода, которые имеют самые короткие из возможных пути и их результат вывода и добавление добавлений от поддеревьев, которые могут быть подкачаны произвольное количество раз в соответствующее линейное подмножество.