Упражнение 2.1.25 |
Неоднозначность в контекстно-свободных грамматиках
7.2. Однозначные контекстно-свободные грамматики
Определение 7.2.1.
Вывод в контекстно-свободной грамматике называется левосторонним
( левым,
leftmost derivation),
если на каждом шаге вывода заменяется самое
левое из всех вхождений вспомогательных символов
(то есть каждый шаг вывода имеет вид ,
где
,
и
).
Иногда в левосторонних выводах вместо
пишут \lmarrow. Правосторонний
( правый ) вывод
определяется аналогично.
В правосторонних выводах вместо
пишут \rmarrow.
Пример 7.2.2. Вывод

Лемма 7.2.3. Для каждого слова, выводимого в контекстно-свободной грамматике, существует левосторонний вывод.
Лемма 7.2.4. Пусть G - контекстно-свободная грамматика над алфавитом . Пусть
. Тогда существует взаимно-однозначное соответствие
между левосторонними выводами слова w
в грамматике G
и деревьями вывода в грамматике G,
кроной которых является w.
Пример 7.2.5. Рассмотрим дерево вывода из примера 7.1.2. Ему соответствует левосторонний вывод

Определение 7.2.6. Контекстно-свободная грамматика называется неоднозначной (ambiguous), если существует слово, которое имеет два или более левосторонних вывода (устаревший термин - неопределенная грамматика). В противном случае контекстно-свободная грамматика называется однозначной (unambiguous).
Пример 7.2.7. Контекстно-свободная грамматика из примера 7.1.2 неоднозначна. Слово ababab имеет два левосторонних вывода:


Пример 7.2.8.
Пусть .
Контекстно-свободная грамматика




Определение 7.2.9. Контекстно-свободный язык называется существенно неоднозначным (inherently ambiguous), если каждая контекстно-свободная грамматика, порождающая этот язык, является неоднозначной.
Пример 7.2.10. Язык, порождаемый контекстно-свободной грамматикой из примера 7.1.2, не является существенно неоднозначным. Он порождается однозначной грамматикой

Пример 7.2.11.
Пусть .
Контекстно-свободный язык {akbmcn | k = m или m = n}
является существенно неоднозначным.
Доказательство этого факта можно найти
в [АхоУль, с. 234-236].
Упражнение 7.2.12. Однозначна ли контекстно-свободная грамматика


Упражнение 7.2.13. Однозначна ли контекстно-свободная грамматика


Упражнение 7.2.14. Однозначна ли контекстно-свободная грамматика


Упражнение 7.2.15. Однозначна ли контекстно-свободная грамматика

Упражнение 7.2.16.Найти однозначную контекстно-свободную грамматику, эквивалентную грамматике

Упражнение 7.2.17.Найти однозначную контекстно-свободную грамматику, эквивалентную грамматике
