- •Розділ 7 Основи теорії кодування План викладення матеріалу
- •7.1. Алфавітне й рівномірне кодування
- •7.2. Достатні умови однозначності декодування. Властивості роздільних кодів
- •7.3. Оптимальне кодування
- •7.4. Коди, стійкі до перешкод. Коди Хемінга
- •8.2. Алгебри булевих функцій
- •8.3. Спеціальні форми зображення булевих функцій в алгебрах Буля і Жегалкіна
- •8.3.1. Диз'юнктивні нормальні форми
- •8.3.2. Кон'юнктивні нормальні форми
- •8.3.3. Поліном Жегалкіна
- •8.4. Повнота і замкненість
- •8.4.1. Функціонально повні системи
- •8.4.2. Замкнені класи
- •8.4.4. Послаблена функціональна повнота
- •8.4.5. Передповні класи
- •8.5. Мінімізація булевих функцій
- •8.5.1. Основні результати
- •8.5.2. Методи побудови скороченої днф
- •8.5.3. Побудова тупикових днф
- •8.5.4. Властивості скороченої днф
- •8.5.5.Метод карт Карно побудови мінімальних днф
- •8.6. Реалізація булевих функцій схемами з функціональних елементів
- •Комп'ютерні проекти
- •Література
- •9.2. Формальні породжувальні граматики
- •9.3. Типи граматик (ієрархія Хомські)
- •9.4. Дерева виведення
- •9.5. Форми Бекуса-Наура
- •9.6. Скінченні автомати з виходом
- •9.7. Скінченні автомати без виходу
- •9.8. Подання мов
- •Комп'ютерні проекти
- •Література
- •Розділ 10
- •План викладення матеріалу
- •10.1. Основні вимоги до алгоритмів
- •10.2. Машини Тьюрінга
- •10.3. Обчислення числових функцій на машинах Тьюрінга
9.3. Типи граматик (ієрархія Хомські)
Продукція граматики дає змогу заміняти одну послідовність символів іншою. Граматики класифікують за типами продукцій. Розглянемо класифікацію, яку запропонував Н. Хомські (N. Chomsky) (табл. 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, с, +, -, *, /, (,)}, а множина продукцій Р містить такі правила:S→R, S→S+R, S→S-R, R→M, R→R*M, R→R/M, M→(S), M→K, K→a, K→b, K→c.
Для повного збігу зі звичайною мовою арифметичних виразів у цю граматику потрібно додати правила, які породжують числові константи і довільні ідентифікатори змінних. Це залишаємо як вправу читачеві. ▲