Участник: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 изПусть будет дерево, полученное из дерева удалением вершин в и . Наоборот, пусть дерево получено удалением вершин между и . Тогда и , где и являются результатом вывода деревьев и соответственно.Осталось показать, что Пусть может быть выбрано так, чтобы , где . Тогда , если содержит все в для некоторого . Но так как есть выборов для , должно быть хотя бы одно , для которого это не выполняется. Следовательно и шаг индукции доказан. |
Доказательство показывает, что соответствие Париха КС языка равносильно тому, что получено из терминальных деревьев выхода, которые имеют самые короткие из возможных пути и их результат вывода и добавление добавлений от поддеревьев, которые могут быть подкачаны произвольное количество раз в соответствующее линейное подмножество.