Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Дискретна математика.docx
Скачиваний:
42
Добавлен:
08.09.2019
Размер:
5.48 Mб
Скачать

9.3. Типи граматик (ієрархія Хомські)

Продукція граматики дає змогу заміняти одну послідовність символів іншою. Граматики класифікують за типами продукцій. Розглянемо класифікацію, яку запропонував Н. Хомські (N. Chom­sky) (табл. 9.1).

Таблиця 9.1

Тип граматики

Обмеження на продукціїξ→η

0

Немає обмежень

1

або η=λ

2

ξ=A, де А - нетермінальний символ

3

ξ=A, причому η=aB або η=a,де А,B- нетермінальні символи, а – термінальний символ, або

Граматика типу 2 має продукції лише у формі А, де А- нетермінальний символ. Цю граматику називають контекстно вільною, оскільки нетерміналі може бути замінений ланцюжком η у довіль­ному оточенні щоразу, коли він зустрічається, тобто незалежно від контексту.

Граматику типу 1 називають контекстно залежною. Коли у такій граматиці є продукція γAδ→γμδ (тобто тут ξ=γAδ,η=γμδ), у якій хоча б один з ланцюжків γ, δвідмінний від λ, то нетермінал А може бути замі­нений ланцюжком μ лише в ото­ченніγта δ, тобто у відповідному контексті, звідси походить назва.

Граматику типу 3 називаєтютьрегулярною. Ця граматика може мати продукції лише у форміА→аВ, A→а, S→𝜆,деА, В - нетермі­нали,а -термінал.

Співвідношення між граматиками різних типів ілюструє діагра­ма на рис. 9.2.

Відповідно до граматик відбувається й класифікація мов. Мову називають контекстно залежною, якщо існує контекстно залежна граматика, яка породжує цю мову. Мову називають контекстно вільною, якщо існує контекстно вільна граматика, яка породжує цю мову. І, нарешті, мову називають регулярною, якщо існує регу­лярна граматика, яка її породжує.

Приклад 9.9.Мова {0m1n|m,n=0,1,2,...} є регулярною, оскільки вона може бути породжена регулярною граматикою G2 прикладу 9.7. ▲

Приклад 9.10.Мова {0m1m| т=0,1,2,...} є контекстно вільною, оскільки вона породжена граматикою з продукціямиS→0S1 та S𝜆. Проте ця мова не є регулярною: не існує регулярної грама­тики, яка б цю мову породжувала. Цей факт потребує окремого доведення (див. приклад 9.37).▲

Приклад 9.11.Мова {0m1m2m|т=0,1,2, ...} є контекстно залеж­ною, оскільки вона може бути породжена граматикою типу 1 з прик­ладу 9.8. Ця мова не може бути породжена жодною граматикою типу 2, цей факт також потребує окремого доведення (див. приклад 9.38).▲

Приклад 9.12. Мова булевих формул зі зміннимиа,b, спороджена контекстно вільною граматикоюG=(V,T,S,P), деV={S, а, b, с,∨, ∧, ¬,(,)},Т={ а, b, с,∨, ∧, ¬,(,)}, а множина продукцій

.▲

Приклад 9.13.Якщо в попередній граматиці перші три правила, які вводять операції∨,∧ та ¬і, замінити чотирма правилами, які вводять операції +, -, * та /, то отримаємо контекстно вільну грама­тику, яка породжує мову арифметичних виразів. Ця мова відріз­няється від звичайної мови арифметичних виразів тим, що не враховує асоціативності додавання і множення, а також пріоритетів операцій, і тому її вирази містять забагато дужок. Аналогічне заува­ження стосується й мови з прикладу 9.12. Ближча до звичайної мова арифметичних виразів зі зміннимиа,b, сзадається складнішою контекстно вільною граматикою. Її алфавіти V={S, R, К, М,а, b, с, +, -, *, /, (,)}, Т=, b, с, +, -, *, /, (,)}, а множина продукцій Р містить такі правила:SR, SS+R, SS-R, RM, RR*M, RR/M, M(S), MK, Ka, Kb, Kc.

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