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

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

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

Визначення 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. Співвідношення типів граматик

Малюнок 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 та SAaBScAaBcAaBbcaBbcabc. Побудуємо вивід ланцюжка a2b2c2. Маємо,

S AaBSc AaBAaBScc AaBAaBcc AaBAaBbcc Aa N3lAaBbcc

Aa N3lN3rBbcc Aa N3pN3rBbcc Aa N3p AaBBbcc AaAaBBbcc AaAaN4lBbccAaAaN4lN4rccAaAaN4pN4rcc AaAaN4pBbBcc AaAaBbBcc AaAaBbBbcc AaAaBbbcc AaAabbcc Aaabbcc aabbcc.

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

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

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

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