WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!

Pages:     | 1 |   ...   | 2 | 3 || 5 | 6 |   ...   | 9 |

Определение 6.10. Состояния p и q полного детерминированного конечного автомата Q,,, I, F называются различимыми (distinguishable), если существует слово w, которое их различает.

Замечание 6.11. Пусть полный детерминированный конечный автомат Q,,, {qs}, F задаёт язык L. Рассмотрим произвольные слова u и v. Состояния u(qs) и v(qs) различимы тогда и только тогда, когда C(r)(u) =C(r)(v).

L L Теорема 6.12. Существует быстрый алгоритм, позволяющий по произвольному детерминированному конечному автомату находить минимальный (по количеству состояний) автомат среди детерминированных конечных автоматов, эквивалентных исходному автомату.

Доказательство. Без ограничения общности можно предположить, что дан полный детерминированный конечный автомат Q,,, I, F, все состояния которого достижимы из начального состояния (для обеспечения полноты достаточно добавить одно состояние). Для каждого натурального числа i определим на множестве Q отношение эквивалентности i:

p 0 q (p F и q F ) или (p F и q F ), / / p i+1 q p i q и a(p) i a(q) для каждого a.

Легко видеть, что p i q тогда и только тогда, когда никакое слово длины не больше i не различает p и q. Обозначимn = |Q|.

Легко проверить, что для любого k n отношение k совпадает с отношением n-1. Используя классы эквивалентности отношения n-1 как состояния, можно построить минимальный полный детерминированный конечный автомат. Удалив из него Синтаксические моноиды бесполезное состояние (из которого не достижимо ни одно заключительное состояние), если такое имеется, получим искомый минимальный детерминированный конечный автомат.

Пример 6.13. Рассмотрим полный детерминированный конечный автомат {1, 2, 3, 4, 5, 6}, {a, b},, {1}, {1, 3}, где ={ 1, a, 2, 2, b, 3, 3, a, 4, 4, b, 1, 4, a, 5, 5, a, 5, 1, b, 6, 2, a, 6, 3, b, 6, 5, b, 6, 6, a, 6, 6, b, 6 }.

Он эквивалентен минимальному детерминированному конечному автомату {{1, 3}, {2, 4}}, {a, b},, {{1, 3}}, {{1, 3}}, где = { {1, 3}, a, {2, 4}, {2, 4}, b, {1, 3} }.

Замечание 6.14. Неизвестно, существует ли быстрый (полиномиальный) алгоритм, позволяющий по произвольному конечному автомату находить минимальный автомат среди всех (не обязательно детерминированных) конечных автоматов, эквивалентных исходному автомату.

6.3. Множества двусторонних контекстов [Лал, с. 180], [Гин, 2.1], [Гла, 5.2], [ТраБар, 1.2], [ГроЛан, 13.2.1, 14.3.5], [АхоУль, с. 158] Определение 6.15. Пусть L и y. Тогда множество контекстов (множество двусторонних контекстов) слова y относительно языка L определяется так: CL(y) { x, z | xyz L}.

Пример 6.16. Пусть ={a, b} и L = {anban | n 0}. Тогда CL(ai) ={ am, akbak+i+m | m 0, k 0} { ak+i+mbak, am | k 0, m 0}, CL(aibaj) ={ ak, am | k 0, m 0, k + i = m + j}, C(r)(y) =, если |y|b > 1.

L Лемма 6.17. Если CL(u1) =CL(u2), то C(r)(u1) =C(r)(u2).

L L Доказательство. Из определений следует, что C(r)(y) = L = {z |, z CL(y)}.

Синтаксические моноиды Лемма 6.18. Если CL(u1) =CL(u2), то CL(u1v) =CL(u2v) и CL(vu1) =CL(vu2).

Доказательство. Пусть CL(u1) =CL(u2) и x, z CL(u1v).

Тогда xu1vz L. Следовательно, x, vz CL(u1). Далее, x, vz CL(u2), xu2vz L и x, z CL(u2v). Второе равенство доказывается аналогично.

Лемма 6.19. Если CL(u1) =CL(u2) и CL(v1) =CL(v2), то CL(u1v1) =CL(u2v2).

Определение 6.20. Пусть L. Тогда множество Synt(L) {CL(y) | y } называется синтаксическим моноидом (syntactic monoid) языка L.

Теорема 6.21. Синтаксический моноид Synt(L) конечен тогда и только тогда, когда язык L является автоматным.

Доказательство. Пусть множество Synt(L) конечно. Согласно лемме 6.17 множество {C(r)(y) | y } тоже конечно. В силу L леммы 6.5 язык L является автоматным.

Обратно, пусть язык L распознаётся конечным автоматом M = Q,,, I, F, не содержащим переходов с метками длины больше единицы. Поставим каждому слову y в соответствие множество TrM (y) Q Q, определённое так: TrM (y) = = { p, q Q Q | существует путь из p в q с м еткой y}. Легко проверить, что если TrM (y1) = TrM (y2), то CL(y1) = CL(y2).

Следовательно, | Synt(L)| 2n, где n = |Q|.

Лемма 6.22. Пусть L, n N и для каждого слова y длины n найдётся такое слово x, что |x|

Доказательство. Индукцией по k n можно доказать, что для каждого слова y длины k найдётся такое слово x, что |x| < n и CL(x) = CL(y). В шаге индукции используется лемма 6.19.

Неоднозначность в контекстно-свободных грамматиках 7. Неоднозначность в контекстно-свободных грамматиках 7.1. Деревья вывода [Гин, 1.5], [ХопМотУль, 5.2.1, 5.2.2], [СокКушБад, с. 13–14, 31], [Бра, с. 45–56], [Лал, с. 294], [АхоУль, 0.5.1–0.5.4, 2.4.1], [ГорМол, с. 370–372], [ГроЛан, 8.2.1], [Гла, 3.1], [LewPap2, 3.2], [Рей, с. 31–32], [АхоСетУль, 2.2, 4.2], [КукБей, с. 277] Определение 7.1. Выводам в контекстно-свободной грамматике соответствуют так называемые деревья вывода (или деревья разбора) (derivation tree, parse tree) — некоторые упорядоченные деревья, вершины которых помечены символами алфавита N.

Корень дерева отвечает начальному символу. Каждому символу слова w1, на которую заменяется начальный символ на первом шаге вывода, ставится в соответствие вершина дерева, и к ней проводится дуга из корня. Полученные таким образом непосредственные потомки корня упорядочены согласно порядку их меток в слове w1. Для тех из полученных вершин, которые помечены символами из множества N, делается аналогичное построение и т. д.

Кроной (yield) дерева вывода называется слово, записанное в вершинах, помеченных символами из алфавита.

Пример 7.2. Рассмотрим контекстно-свободную грамматику S SS, S ab, S aSb. Выводу S SS Sab SSab abSab ababab соответствует следующее дерево вывода.

S S S a S S b a a b b Неоднозначность в контекстно-свободных грамматиках 7.2. Однозначные контекстно-свободные грамматики [Гин, 1.6], [АхоУль, 2.4.1, 2.6.5], [ХопМотУль, 5.1.4, 5.2.3–5.2.6, 5.4], [Бра, с. 56–58], [Лал, с. 307], [ГорМол, с. 372–374], [СокКушБад, с. 14], [ГроЛан, 8.2.3], [Гла, 3.1, 4.3], [LewPap2, 3.2], [Sip, 2.1], [Рей, с. 32], [АхоСетУль, 2.2, 4.2], [КукБей, с. 272–275] Определение 7.3. Вывод в контекстно-свободной грамматике называется левосторонним или левым (leftmost derivation), если на каждом шаге вывода заменяется самое левое из всех вхождений вспомогательных символов (то есть каждый шаг вывода имеет вид uA u, где (A ) P, u и (N )). Иногда в левосторонних выводах вместо пишут. Правосторонний вывод определяется аналоlm гично.

Пример 7.4. Вывод S SS Sab SSab abSab ababab из примера 7.2 не является левосторонним.

Лемма 7.5. Для каждого слова, выводимого в контекстно-свободной грамматике, существует левосторонний вывод.

Лемма 7.6. Пусть G — контекстно-свободная грамматика над алфавитом. Пусть w. Тогда сущ ествует взаимно-однозначное соответствие между левосторонними выводами слова w в грамматике G и деревьями вывода в грамматике G, кроной которых является w.

Пример 7.7. Рассмотрим дерево вывода из примера 7.2. Ему соответствует левосторонний вывод S SS SSS abSS lm lm lm lm ababS ababab.

lm lm Определение 7.8. Контекстно-свободная грамматика называется неоднозначной (ambiguous), если существует слово, которое имеет два или более левосторонних вывода. (Устаревший термин — неопределённая грамматика.) В противном случае контекстно-свободная грамматика называется однозначной (unambiguous).

Неоднозначность в контекстно-свободных грамматиках Пример 7.9. Контекстно-свободная грамматика из примера 7.2 неоднозначна. Слово ababab имеет два левосторонних вывода: S SS SSS abSS ababS ababab и S SS lm lm lm lm lm lm lm abS abSS ababS ababab.

lm lm lm lm Пример 7.10. Пусть = {p, #, ), (, ¬,, }. Контекстно-свободная грамматика S SD, S D, D DC, D C, C ¬C, C (S), C V, V V #, V p порождает множество всех булевых формул, составленных из переменных p, p#, p##,... с помощью скобок и операторов ¬, и. Эта грамматика является однозначной.

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

Пример 7.12. Язык, порождаемый контекстно-свободной грамматикой из примера 7.2, не является существенно неоднозначным. Он порождается однозначной грамматикой S TS, S T, T ab, T aSb.

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

7.3*. Однозначные праволинейные грамматики [Лал, с. 187], [АхоУль, с. 119] Теорема 7.14. Каждый праволинейный язык порождается некоторой однозначной праволинейной грамматикой. Другими словами, ни один праволинейный язык не является существенно неоднозначным.

Доказательство. Согласно теоремам 2.33 и 2.43 исходный язык распознаётся некоторым детерминированным конечным автоматом. Применив к нему конструкцию из доказательства теоремы 2.31, получим однозначную праволинейную грамматику.

Нормальные формы контекстно-свободных грамматик 7.4. Языки Дика и Лукасевича [Сал, с. 103, 116], [Лал, с. 293–295], [ЛПИИ, 5.1.3], [АхоУль, с. 239], [Гла, 6.5], [ГроЛан, 15.1] Определение 7.15. Языком Дика (Dyck language) над 2n буквами называется контекстно-свободный язык над алфавитом {a1, b1, a2, b2,..., an, bn}, порождаемый грамматикой S, S a1Sb1S,..., S anSbnS.

Замечание 7.16. Словами этого языка являются последовательности правильно вложенных скобок n типов.

Замечание 7.17. При любом положительном целом n грамматика из определения 7.15 является однозначной.

Определение 7.18. Языком Лукасевича (Lukasiewicz language) над n +1 буквами называется контекстно-свободный язык над алфавитом {a0, a1,..., an}, порождаемый грамматикой S a0, S a1S, S a2SS,..., S anSn.

Замечание 7.19. При любом n N грамматика из определения 7.18 является однозначной.

8. Нормальные формы контекстно-свободных грамматик 8.1. Устранение бесполезных символов [АхоУль, 2.4.2], [ХопМотУль, 7.1.1, 7.1.2], [ГорМол, с. 427–429], [Гла, 4.2], [Бра, с. 61–64], [Рей, с. 65–66], [КукБей, с. 285–287] Определение 8.1. Пусть дана порождающая грамматика G = N,, P, S. Сим вол A N называется полезным (useful), если существуют такие слова (N ), (N ) и w, что S A и A w. Сим вол A N называется бесполезным (useless), если он не является полезным.

Символ A N называется порождающим (generating), если су ществует такое слово w, что A w. Сим вол A N называется достижимым (reachable), если существуют такие слова (N ) и (N ), что S A.

Нормальные формы контекстно-свободных грамматик Теорема 8.2. Пусть дана контекстно-свободная грамматика G = N,, P, S и L(G) =. Тогда существуют такие множества N N и P P, что в контекстно-свободной грамматике N,, P, S нет бесполезных символов и она эквивалентна исходной грамматике.

Доказательство. Сначала удалим все непорождающие символы (удалим также каждое правило, содержащее хотя бы один такой символ). Затем из полученной грамматики удалим все недостижимые символы (и правила, их содержащие).

Пример 8.3. Рассмотрим контекстно-свободную грамматику G с правилам иS UX, S VZ, T aa, T bb, U aUa, U bUb, V aT b, V bT a, W YZY, W aab, X Xa, X Xb, X, Y YY, Y aU, Y, Z W, Z b.

Удалив четыре правила, содержащие непорождающий символ U, получим грамматику G1. В ней сим вол X является недостижимым. Удалив три правила, содержащие X, получим грамматику G2 с правилам и S VZ, T aa, T bb, V aT b, V bT a, W YZY, W aab, Y YY, Y, Z W, Z b. Очевидно, L(G) =L(G2) и грам м атика G2 не содержит бесполезных символов.

8.2. Устранение -правил [Гин, 1.8], [АхоУль, 2.4.2], [ХопМотУль, 7.1.3], [Лал, с. 295–296], [ГорМол, с. 429–431], [Гла, 4.2], [Бра, с. 71–76], [ГроЛан, 7.2.6], [Сал, 6.2], [Sip, 2.1], [Рей, с. 35–37], [КукБей, с. 288–289] Теорема 8.4. Пусть язык L является контекстно-свободным. Тогда язык L -{} порождается некоторой контекстно-свободной грамматикой без -правил.

Доказательство. Пусть дана контекстно-свободная грамматика G = N,, P, S, порождающая язык L. Проведём серию преобразований множества P.

Если для каких-то A N, B N, (N ) и (N ) множество P содержит правила B A и A, но не содержит правила B, то добавим это правило в P.

Повторяем эту процедуру, пока возможно.

Теперь исключим из множества P все правила вида A.

Полученная грамматика порождает язык L -{}.

Нормальные формы контекстно-свободных грамматик Пример 8.5. Рассмотрим язык L, порождаемый грамматикой S, S aSbS. Язык L -{} порождается грамматикой S aSbS, S abS, S aSb, S ab.

8.3. Нормальная форма Хомского [Сал, 6.2], [АхоУль, 2.4.2, 2.4.3], [ХопМотУль, 7.1], [ГорМол, с. 431–437], [Гла, 4.1], [СокКушБад, с. 32], [Лал, с. 330], [Sip, 2.1], [Рей, с. 66–68] Определение 8.6. Грамматика в нормальной форме Хомского (грамматика в бинарной нормальной форме, квадратичная грамматика) (grammar in Chomsky normal form) — контекстно-свободная грамматика N,, P, S, в которой каждое правило имеет один из следующих трёх видов: S, A a, A BC, где A N, B N -{S}, C N -{S}, a.

Пример 8.7. Грамматика S RR, S AB, R RR, R AB, A a, B RB, B b — грамматика в нормальной форме Хомского.

Теорема 8.8. Каждая контекстно-свободная грамматика эквивалентна некоторой грамматике в нормальной форме Хомского.

Доказательство. Пусть дана контекстно-свободная грамматика G = N,, P, S. Проведём ряд преобразований этой грамматики так, что порождаемый ею язык остаётся неизменным.

Если правая часть какого-нибудь правила содержит символ S, то заменим грамматику N,, P, S на грамматику N {S0},, P {S0 S}, S0, где S0 — новый сим вол, не принадлежащий множеству N.

Заменим во всех правилах каждый терминальный символ a на новый нетерминальный символ Ta и добавим к множеству P правила Ta a для всех a.

Устраним правила вида A, где || > 2, заменив каждое из них на ряд более коротких правил (при этом добавляются новые нетерминальные символы).

Теперь устраним все правила вида A, где A не является начальным символом. Это можно сделать, как в доказательстве теоремы 8.4.

Если для каких-то A N, B N и (N ) множество P содержит правила A B и B, но не содержит правила Нормальные формы контекстно-свободных грамматик A, то добавим это правило в P. Повторяем эту процедуру, пока возможно. После этого исключим из множества P все правила вида A B.

Пример 8.9. Грамматика S, S aUbU, U S, U ba эквивалентна следующей грамматике в нормальной форме Хомского: S0, S0 AD, D UC, D BU, D b, C BU, C b, U BA, U AD, A a, B b.

Теорема 8.10. Если контекстно-свободный язык не содержит пустого слова, то он порождается некоторой грамматикой, в которой каждое правило имеет один из следующих двух видов: A a, A BC, где A N, B N -{S}, C N -{S}, a.

Pages:     | 1 |   ...   | 2 | 3 || 5 | 6 |   ...   | 9 |



© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.