Лемма Огдена — различия между версиями
м (rollbackEdits.php mass rollback) |
|||
(не показано 9 промежуточных версий 4 участников) | |||
Строка 1: | Строка 1: | ||
− | + | Для бесконечного языка применение приведённых в предыдущем разделе приёмов приведёт к началу построения в общем случае бесконечного числа правил грамматики. Требуется более мощный аппарат, которым служит доказываемая ниже лемма Огдена. | |
== Лемма == | == Лемма == | ||
Строка 21: | Строка 21: | ||
− | Условие (1) выполнено, поскольку <tex>x</tex> содержит выделенную вершину, а именно <tex>v_p</tex>. Очевидно, что условие (4) выполнено в силу предложенного разбиения <tex>\omega</tex>. Кроме того, <tex>u</tex> содержит выделенную вершину, а именно потомка некоторого сына вершины <tex>u_1</tex>. Аналогично, выделенный потомок некоторого сына вершины <tex>a</tex> содержится в <tex>v</tex>. Таким образом, условие (2) выполнено. Поскольку между <tex>v_p</tex> и <tex>a</tex> не более <tex>2m + 3</tex> вершин, вершина <tex>a</tex> имеет не более <tex>n</tex> выделенных потомков, поэтому условие (3) выполнено. | + | Условие <tex>(1)</tex> выполнено, поскольку <tex>x</tex> содержит выделенную вершину, а именно <tex>v_p</tex>. Очевидно, что условие <tex>(4)</tex> выполнено в силу предложенного разбиения <tex>\omega</tex>. Кроме того, <tex>u</tex> содержит выделенную вершину, а именно потомка некоторого сына вершины <tex>u_1</tex>. Аналогично, выделенный потомок некоторого сына вершины <tex>a</tex> содержится в <tex>v</tex>. Таким образом, условие <tex>(2)</tex> выполнено. Поскольку между <tex>v_p</tex> и <tex>a</tex> не более <tex>2m + 3</tex> вершин, вершина <tex>a</tex> имеет не более <tex>n</tex> выделенных потомков, поэтому условие <tex>(3)</tex> выполнено. |
}} | }} | ||
== Примеры не КС-языка, для которого выполняется лемма == | == Примеры не КС-языка, для которого выполняется лемма == | ||
− | ===Пример 1=== | + | Следует обратить особое внимание на то, что лемма содержит лишь необходимые условия принадлежности КС языку. |
+ | ===Пример <tex> 1 </tex>=== | ||
{{Утверждение | {{Утверждение | ||
|statement=Можно построить такой язык, для которого будет выполняться лемма Огдена, однако язык не будет контекстно-свободным. | |statement=Можно построить такой язык, для которого будет выполняться лемма Огдена, однако язык не будет контекстно-свободным. | ||
Строка 42: | Строка 43: | ||
}} | }} | ||
− | === Пример 2 === | + | === Пример <tex> 2 </tex> === |
{{Утверждение | {{Утверждение | ||
|statement=Язык <tex>L = {a^mb^nc^l}</tex>, где <tex> m, n, l </tex> {{---}} попарно различны, не является КС-языком. | |statement=Язык <tex>L = {a^mb^nc^l}</tex>, где <tex> m, n, l </tex> {{---}} попарно различны, не является КС-языком. | ||
Строка 61: | Строка 62: | ||
Заметим, что возможность выделения символов существенно упрощает анализ данного языка, так как позволяет считать, что цепочка <tex>v</tex> может расположиться единственным способом. Иначе, т.е. при использовании леммы о разрастании для кс-языков, решение задачи было бы, по меньшей мере, сильно затруднено. | Заметим, что возможность выделения символов существенно упрощает анализ данного языка, так как позволяет считать, что цепочка <tex>v</tex> может расположиться единственным способом. Иначе, т.е. при использовании леммы о разрастании для кс-языков, решение задачи было бы, по меньшей мере, сильно затруднено. | ||
}} | }} | ||
− | |||
== См. также == | == См. также == | ||
Строка 72: | Строка 72: | ||
== Источники информации == | == Источники информации == | ||
− | *[http://ru.wikipedia.org/wiki/Лемма_Огдена Лемма Огдена] | + | * [http://ru.wikipedia.org/wiki/Лемма_Огдена Wikipedia {{---}} Лемма Огдена] |
− | *Hopcroft, Motwani and Ullman {{---}} Automata Theory, Languages, and Computation {{---}} Addison-Wesley, 1979. ISBN 81-7808-347-7. | + | * ''Hopcroft, Motwani and Ullman'' {{---}} Automata Theory, Languages, and Computation {{---}} Addison-Wesley, 1979. ISBN 81-7808-347-7. |
− | *Ogden, W. (1968). | + | * ''Ogden, W.'' (1968). A helpful result for proving inherent ambiguity. Mathematical Systems Theory. 2 (3): 191–194. |
− | *[http://archive.numdam.org/ARCHIVE/ITA/ITA_1978__12_3/ITA_1978__12_3_201_0/ITA_1978__12_3_201_0.pdf On languages satisfying Ogden's lemma] | + | * [http://archive.numdam.org/ARCHIVE/ITA/ITA_1978__12_3/ITA_1978__12_3_201_0/ITA_1978__12_3_201_0.pdf On languages satisfying Ogden's lemma] |
− | *[http://ccf.ee.ntu.edu.tw/~yen/courses/toc14/chapter-2a.pdf Ogden's lemma] | + | * [http://ccf.ee.ntu.edu.tw/~yen/courses/toc14/chapter-2a.pdf Ogden's lemma] |
[[Категория: Теория формальных языков]] | [[Категория: Теория формальных языков]] | ||
[[Категория: Контекстно-свободные грамматики]] | [[Категория: Контекстно-свободные грамматики]] | ||
[[Категория: Опровержение контекстно-свободности языка]] | [[Категория: Опровержение контекстно-свободности языка]] |
Текущая версия на 19:07, 4 сентября 2022
Для бесконечного языка применение приведённых в предыдущем разделе приёмов приведёт к началу построения в общем случае бесконечного числа правил грамматики. Требуется более мощный аппарат, которым служит доказываемая ниже лемма Огдена.
Содержание
Лемма
Лемма: |
Для каждой контекстно-свободной грамматики существует такое , что для любого слова длины не менее и для любых выделенных в не менее позиций, может быть представлено в виде , причем:
|
Доказательство: |
Введем следующие обозначения: и — длина самой длинной правой части правила из . Тогда в качестве возьмем . Рассмотрим дерево разбора для произвольного слова , у которого . В силу выбора в будет по крайне мере один путь от корня до листа длины не менее . Произвольным образом выделим в не менее позиций. Соответствующие этим позициям листья дерева будем называть выделенными.Пусть — корень , а — сын , который имеет среди своих потомков наибольшее число выделенных листьев (если таких несколько, то самый правый из них). Рассмотрим — путь от корня до листа.Будем называть ветвящейся ту вершину, у которой по крайне мере два сына имеют выделенных потомков. Докажем по индукции, что если среди Поскольку имеет хотя бы выделенных потомков, то содержит по крайне мере ветвящиеся вершин. Заметим, что — лист, поэтому . Будем называть левой ветвящейся вершиной, если ее сын, не принадлежащий пути , имеет выделенного потомка, лежащего слева от . В противном случае назовем правой ветвящейся вершиной. Рассмотрим последние вершины, принадлежащие пути . Предположим, что хотя бы вершины — левые ветвящиеся (случай, когда хотя бы вершины — правые ветвящиеся, разбирается аналогично). Пусть — последние левые ветвящиеся вершины. Поскольку , то среди них можно найти как минимум две вершины, соответствующие одному нетерминалу. Обозначим эти вершины и , причем — потомок . Тогда на рисунке показано, как представить в требуемом виде.
|
Примеры не КС-языка, для которого выполняется лемма
Следует обратить особое внимание на то, что лемма содержит лишь необходимые условия принадлежности КС языку.
Пример
Утверждение: |
Можно построить такой язык, для которого будет выполняться лемма Огдена, однако язык не будет контекстно-свободным. |
При анализе этого языка следует использовать алгебраические свойства множества. Выберем — подмножество и
Языки над .Очевидно, что Для — КС, если контекстно-свободен. является рекурсивно-перечислимым, если и им является. будет выполняться лемма Огдена при . Выбрав таким образом, чтобы он был рекурсивно-перечислимым, мы создадим язык для которого будет выполняться лемма Огдена, однако язык не будет контекстно-свободным. (Такие языки существуют)[1] |
Пример
Утверждение: |
Язык , где — попарно различны, не является КС-языком. |
Предположим, что данный язык контекстно-свободный. Возьмем цепочку , где — константа из леммы Огдена, выделив в ней все вхождения символа . Тогда при представлении цепочки в виде цепочка (по условию (1) леммы) обязательно «зацепит» хотя бы один символ . Cледовательно, цепочка состоит только из символов (как и цепочка ). А именно, , .Тогда, если цепочка содержит и другие символы, кроме , цепочка может входить либо в «зону» символов (целиком), либо в «зону» символов (целиком), так как расположение накачиваемых цепочек на стыках зон, очевидно, невозможно. В первом случае «кратность» накачки цепочки , которая уравняет числа символов и , определяется из соотношения: , то естьВо втором случае - кратная накачка цепочки уравняет числа вхождений символов и . Не исключено, наконец, что обе накачиваемые цепочки расположены в «зоне» символов . Но тогда одним из указанных выше способов накачки можно уравнять числа либо символов и , либо и . Заметим, что возможность выделения символов существенно упрощает анализ данного языка, так как позволяет считать, что цепочка может расположиться единственным способом. Иначе, т.е. при использовании леммы о разрастании для кс-языков, решение задачи было бы, по меньшей мере, сильно затруднено. |
См. также
Примечания
- ↑ A.V. Aho & J.D. Ullman, The Theory of Parsing, Translation and Compilimg, Vol. I, 1972
Источники информации
- Wikipedia — Лемма Огдена
- Hopcroft, Motwani and Ullman — Automata Theory, Languages, and Computation — Addison-Wesley, 1979. ISBN 81-7808-347-7.
- Ogden, W. (1968). A helpful result for proving inherent ambiguity. Mathematical Systems Theory. 2 (3): 191–194.
- On languages satisfying Ogden's lemma
- Ogden's lemma