Формальні граматики
Матеріал з Вікіпедії — вільної енциклопедії.
Зміст |
[ред.] Формальні граматики
Формальні граматики були введені американським вченим, математиком та філософом, Н.Хомським в 50-тих роках ХХ сторіччя.
[ред.] Поняття алфавіту
Алфавіт - це скінченна множина символів. ε - порожній ланцюжок, слово, послідовність. Алфавітом є об'єднання алфавітів, перетин, різниця алфавітів. Нехай Т - алфавіт, тоді:
- Т+ - множина усіх можливих послідовностей, що складені з елемнтів цього алфавіту крім порожньої послідовності ε.
- Т* - множина усіх можливих послідовностей, що складені з елементів цього алфавіту, будь-якої довжини. Отже:

- Тk - множина усіх можливих послідовностей,що складені з елементів цього алфавіту, довжини не більше k.
Мова в алфавіті Т це множина ланцюжків кінцевої довжини в цьому алфавіті. Зрозуміло, що кожна мова в алфавіті Т є підмножиною множини Т*.
[ред.] Формальна граматика
Формальна граматика - це четвірка
. Де:
- Т - алфавіт термінальних символів, терміналів (від англ. terminate - завершетись);
- N - алфавіт нетермінальних символів, нетерміналів.
; - S - аксіома, спеціально виділений нетермінальний символ.
- P - кінцева підмножина множини
. Інколи визначають так:
.
Елемент (α,β) з множини Р називається правилом виводу і записується у вигляді
. Таким чином, ліва частина правила не може бути порожньою. Правила з однаковою лівою частиною записують:
, βi, i = 1,2,..,n - називаются альтернативами правила виводу з ланцюжка α.
[ред.] Виведення в формальних граматиках
Ланцюжок
назвемо безпосередньо виведеним з ланцюжка
в граматиці G = {T,N,S,P} (позначається
), якщо
.
Ланцюжок
назвемо виведеним з ланцюжка
в граматиці G = {T,N,S,P} (позначається
), якщо
Термінальний рядок називається правильним(або сентенціальною формою) відносно граматики G якщо він виводиться з аксіоми цієї граматики.
[ред.] Формальні мови
Формальна мова породжена граматикою G - це множина термінальних рядочків, що виводяться з аксіоми, тобто множина усіх правильних рядків.
З іношого боку, множина термінальних рядків, таких, що вони можуть бути виведені в граматиці G, називається мовою, що може бути розпізнана в даній граматиці, або допускається даною граматикою.
- Граматики G1 та G2 називаються еквівалентними, якщо L(G1) = L(G2).
- Граматики G1 та G2 називаються майже еквівалентними, якщо
, тобто мови, ними породжувані, відрізняються не більш ніж на ε.
Граматика може бути породжуючою та розпізнавальною, це залежить від "напрямку" застосування правил. Для породжучих граматик виведення починається з аксіоми і закінчується термінальним рядком (рядком, що скаладається тільки з терміналів). А розпізнавальні аналізують вхідний термінальний рядок на правильність, чи можна такий рядок вивести в цій граматиці. Коротоше кажучи - породжуючі це "згори вниз", а розпізнавальні - "знизу вгору". Остання задача є більш практичною і гострою.
[ред.] Класифікація граматик
Хомський також запропонував класифікацію граматик. Він виділив чотири типи граматик.
[ред.] Класифікація за Хомським
- Тип 0. Граматики Типу 0
- це найбільш загальний клас граматик. На правила не накладаються ніяких обмежень, окрім зазначених у візначенні. Вони еквівалентні Машині Тюринга. Доведено існування мов, які породжуються граматиками типу 0, але не граматиками типу 1, але невідомі прості приклади таких мов.
- Тип 1. Граматики Типу 1
- нескорочуюча або контекстно-залежна(КЗ) граматика. Вибір означення не впливає на множину мов, породжуваних граматиками цього класу, оскільки доведено, що множина мов, породжуваних граматиками, що не укорочують, збігається із множиною мов, породжуваних КЗ-граматиками.
- Нескорочуючі граматики. Всі правила мають вигляд



- де | α | означає кількість символів у рядку α.
- Контекстно-залежні граматики. Всі правила мають вигляд:
- Нескорочуючі граматики. Всі правила мають вигляд
- Тип 2. Граматики Типу 2. Контекстновільні граматики(КВ)
- Всі правила мають вигляд


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


- або

- Ліволінійна граматика. Всі правила мають вигляд:


- або

- Праволінійна граматика. Всі правила мають вигляд:
Доведено, що праволінійні та ліволінійні граматики еквівалентні, і існує алгоритм для переведення правил граматики одного типу в інший тип.
[ред.] Співвідношення між типами граматик
- Будь-які граматики типу 3 є грамтиками типу 2.
- Будь-які КВ-граматики є грамтиками типу 1(КЗ або неукорочуючі), з точністью до ε.
- Будь-які граматики типу 1 є грамтиками типу 0.
Мова L(G) є мовою типу k, якщо її можна описати граматикою типу k.
[ред.] Співвідношення між типами мов
- кожна регулярна мова є КВ-мовою, але існують КВ- мови, що не є регулярними (наприклад,
); - кожна КВ- мова є КЗ- мовою, але існують КЗ-мови, що не є КВ-мовами ( наприклад,
); - кожна КЗ-мова є мовою типу 0.
Варто підкреслити, що якщо мова задана граматикою типу k, то це не означає, що не існує граматики типу k' (k'>k), що описує ту ж мову. Тому, коли говорять про мову типу k, звичайно мають на увазі максимально можливе k.
[ред.] Використання формальних граматик
Формальні граматики це дуже потужній математичний інструмент, який використовується в математичній та комп'ютерній лінгвістиці, описі мов програмування, розробці компіляторів в теорії програмування. Найбільш вживаними є КВ-граматики і регулярні, бо їх найлегше описати алгоритмічно.
Сама по собі концепція формальних граматик доволі гнучка, тому не дивно, що з'явилося багато інших інструментів, що розширють використання та потужність КВ-граматик і граматик третього типу. Наприклад, атрибутні граматики, LL-k граматики, скінченні автомати, регулярні вирази та множини.
[ред.] Дивіться також
| Ця стаття не містить посилань на джерела.
Ви можете допомогти поліпшити цю статтю, додавши посилання на надійні джерела. Матеріал без джерел може бути підданний сумніву та вилучений.
|
| Це незавершена стаття з математики. Ви можете допомогти проекту, виправивши або дописавши її. |





