Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
NikitchenkoNEWNEW.doc
Скачиваний:
26
Добавлен:
08.11.2019
Размер:
2.99 Mб
Скачать

4.6. Ієрархія граматик Хомського

Дослідження будь-якого класу предметів, як правило, починається з їх класифікації. Це методологічне зауваження стосується і граматик. Однією з перших була класифікація, запропонована Н. Хомським. Суть цієї класифікації полягає в поступових обмеженнях, що накладаються на праві та ліві частини продукцій. Визначені Хомським чотири типи граматик виявились інваріантними відносно різних уточнень породжуючих граматик. Крім того, цим типам граматик природнім чином відповідають типи автоматів, що розпізнають (сприймають) формальні мови.

Визначення 4.20.

  • Граматиками типу 0 називають довільні породжуючі граматики загального виду, що не мають жодних обмежень на правила виводу.

  • Граматиками типу 1 (нескорочуючими граматиками) називають породжуючі граматики, кожне правило яких має вигляд α→β, де |α||β| (α(NT)*N(NT)*, β(NT)+).

  • Граматиками типу 2 (контекстно-вільними граматиками, КВ-граматиками) називають породжуючі граматики, кожне правило яких має вигляд A→β, де AN, β(NT)*.

  • Граматиками типу 3 (праволінійними граматиками) називають породжуючі граматики, кожне правило яких має вигляд A®αB або A®α, де A, BÎN, αÎTÈ{}. До граматик типу 3 відносять і ліволінійні граматики, кожне правило яких має вигляд A®Bα або A®α, де A, BÎN, αÎTÈ{}.

Приклад 4.12. Граматика G3 з попереднього підрозділу є граматикою типу 0. Якщо з цієї граматики видалити правило P2, вона стане граматикою типу 1, бо не буде скорочуючих правил. Граматика з правилами {S®AR, R®bRc, R®, A®aA, A®} є контекстно вільною граматикою (типу 2), а її підграматика {A®aA, A®} є праволінійною граматикою (типу 3).

Кожному типу граматик відповідають мови, яким будемо приписувати той же тип, що має граматика, яка її породжує.

Рисунок 4.3. Співвідношення типів граматик

Error: Reference source not found 4.3 демонструє співвідношення типів граматик. Як бачимо, граматики типів 2 та 3 не є підкласами граматик типу 1. Це викликано тим, що наведені класи граматик мають скорочуючі правила виду A®, які заборонені в граматиках типу 1. Як буде показано далі, ці відмінності не дуже позначаються на класах мов, породжуваних граматиками типів 2 та 3, і якщо ігнорувати порожній ланцюжок, то класи мов типів 3 та 2 будуть підкласами мов типу 1.

Перш ніж переходити до вивчення класів мов, покажемо, що без втрати виразної сили можна розглядати більш обмежений клас граматик, які називаються загально-контекстними граматиками. Цей клас видається більш природним для породження, ніж загальні породжуючі граматики.

Визначення 4.21

  • Загально-контекстними називають породжуючі граматики, кожне правило яких має вигляд 1A2→1β2, де AN, 1, 2, β(NT)*. Ланцюжки 1 і 2 називають лівим та правим контекстом символу A у вказаному правилі.

  • Контекстно-залежними називаються загально-контекстні граматики з нескорочуючими правилами, тобто правила мають вид 1A2→1β2 , де β(NT)+ (це означає, що|β|1).

Контекстно-залежні граматики інколи називають граматиками безпосередньо складових (БС-граматиками).

Слід сказати, що назва контекстно-залежних граматик не зовсім вдала, бо не підкреслює нескорочуваність правил граматики, а характеризує радше довільний клас контекстних граматик. Це ж стосується і назви граматик безпосередньо складових.

Граматики типів 2 та 3 (будучи безконтекстними) безпосередньо є підкласами загально-контекстних граматик.

З визначень видно, що класи загально-контекстних та контекстно-залежних граматик є власними підкласами відповідно граматик типів 0 та 1. Разом з тим відповідні класи мов співпадають, тобто використання лише контекстних правил не обмежує породжувальну здатність граматик.

Доведемо цей факт співпадіння мов.

Нехай G0=(N, T, P, S) – довільна породжуюча граматика типу 0. Побудуємо еквівалентну їй загально-контекстну граматику. Алгоритм побудови наступний.

  1. Виділяємо термінальні символи, які входять до неконтекстних правил та вводимо нетермінали, які дублюють такі термінальні символи, тобто вводимо нові нетермінали Na для кожного такого термінального символу aÎT.

  2. Далі всі неконтекстні правила з P замінюємо на нові правила, в котрих замість термінальних символів стоять їх нетермінальні дублери. Добавляємо нові правила Naa. Очевидно, що отримана граматика G еквівалентна початковій.

  3. Побудуємо граматику G, яка буде контекстною та еквівалентною G. Спочатку пронумеруємо усі неконтекстні правила граматики G (контекстні не змінюємо). Розглянемо неконтекстне правило G з номером k виду , де  = A1A2An-1An, n>1. Це правило замінимо на наступну множину нових правил:

A1A2An-1AnNklA2An-1An

NklA2An-1AnNklA2An-1Nkr

NklA2An-1 NkrNklA3An-1Nkr

NklA3An-1 NkrNklA4An-1Nkr

… … …

NklAn-1NkrNklNkr

NklNkrNkpNkr

NkpNkrNkp

Nkp.

(Коментар. Ідея побудови наведених правил полягає у наступному: спочатку виставляємо лівий Nkl та правий маркери Nkr вибраного правила, далі видаляємо всі інші символи лівої частини продукції, потім переходимо до породження правої частини, але перед цим вносимо про це інформацію за допомогою Nkp. Наприкінці породжуємо в контексті Nkp праву частину продукції, а сам символ Nkp видаляємо.)

Можна довести, що вказана послідовність правил еквівалентна одному початковому правилу. Дійсно, ця послідовність індукує (майже детерміновано) однозначний вивід. Тільки правило Nkp порушує однозначність. Але якщо його застосувати до правила NkpNkrNkp, то не буде можливості позбавитися нетермінала Nkr. Тому справедлива наступна теорема.

Теорема 4.2. Для довільної породжуючої граматики G0 існує граматика GC у загально-контекстній формі, яка породжує ту саму мову, тобто L(G0)=L(GC).

Визначення 4.22. Довільні граматики G1 та G2 називаються еквівалентними, якщо вони породжують одну й ту саму мову, тобто G1G2L(G1)=L(G2).

Цілком очевидно, що так введене відношення  є відношенням еквівалентності (рефлексивним, симетричним та транзитивним відношенням).

Приклад 4.13. Побудуємо за граматикою G3, що породжує мову L(G3)={anbncn|n0} еквівалентну їх загально-контекстну граматику G3C.

Граматика G3 має наступні правила:

P1: SaBSc

P2: S  

P3: BaaB

P4: BbbB

P5: Bcbc

З них неконтекстними є правила P3 та P4. Спочатку перетворимо правило BaaB (правило P3) в послідовність контекстних правил. Отримуємо:

BaaB замінюємо на BAaAaB, Aaa.

Далі замість BAaAaB вводимо послідовність правил

BAaN31Aa

N31AaN31N3r

N31N3rN3pN3r

N3pN3rN3pAaB

N3p

Аналогічно вчинимо з правилом P4: BbbB. Після цих перетворень отримуємо нову граматику G3C, в якій пронумеруємо нові правила:

P1: SAaBSc,

P2: S  

P31: Aaa

P32: BAaN3lAa

P33: N3lAaN3lN3r

P34: N3lN3rN3pN3r

P35: N3pN3rN3pAaB

P36: N3p

P41: Bbb

P42: BBbN4lBb

P43: N4lBbN4lN4r

P44: N4lN4rN4pN4r

P45: N4pN4rN4pBbB

P46: N4p

P5: BcBbc

Побудуємо декілька виводів у цій граматиці, тобто, говорячи в термінах програмування, зробимо «тестування» побудованої граматики.

Очевидно, що S  та S AaBSc AaBc AaBbc aBbc abc. Побудуємо вивід ланцюжка a2b2c2. Маємо,

S AaBSc AaBAaBScc AaBAaBcc AaBAaBbcc Aa N3lAaBbcc

Aa N3lN3rBbcc Aa N3pN3rBbcc Aa N3p AaBBbcc AaAaBBbcc AaAaN4lBbcc AaAaN4lN4rcc AaAaN4pN4rcc AaAaN4pBbBcc AaAaBbBcc AaAaBbBbcc AaAaBbbcc AaAabbcc Aaabbcc aabbcc.

Еквівалентність нескорочуючих та контекстно-залежних граматик доводиться аналогічним чином.

Це дозволяє нам говорити про те, що різні варіанти визначень граматик (породжуючі та контекстні) є еквівалентними, і що ієрархія Хомського досить стабільна відносно варіантів граматик.

Перейдемо до дослідження зв’язків класів породжуючих граматик з класами формалізмів розпізнання (сприйняття), в першу чергу, з класами автоматів різного типу.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]