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

4.9. Властивості контекстно-вільних граматик

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

Лема 4.2 (про перейменування нетерміналів). Нехай задані граматика G=(N, T, P, S) та бієктивне відображення : NN множини нетерміналів N на деяку іншу множину нетерміналів   ( T=). Тоді для граматики =(, T, , ), де  – множина правил, отриманих з P заміною нетерміналів N на відповідні нетермінали з , а =(S), маємо: L(G)= L().

Для доведення леми слід скористатися тією обставиною, що кожний вивід в одній граматиці має відповідний вивід (шляхом перейменування нетерміналів) в іншій граматиці.

Зрозуміло, що умова бієктивності є суттєвою.

4.9.1. Видалення несуттєвих символів

Продовжимо розгляд очевидних, але важливих перетворень. У деяких випадках КВ-граматика може містити символи та правила, що не вживаються для виводу термінальних ланцюжків.

Приклад 4.18. У граматиці G=({S, A, B}, {a, b, c}, P, S), де P={Sa, ScS, Ab}, нетермінал A і термінал b не можуть з’явитися в жодному ланцюжку виведення (в жодній словоформі). Таким чином, ці символи не приймають участь у породженні ланцюжків мови L(G) і правила, що їх містять, можна видалити, не змінивши мови L(G).

Визначення 4.31. Нетермінал ANТ назвемо недосяжним у граматиці G=(N, Т, P, S), якщо A не з’являється в жодному вивідному ланцюжку, тобто не існує виводу виду S G* A, , (NT)*.

Для знаходження недосяжних нетерміналів спочатку визначимо множину досяжних нетерміналів. Ця множина для заданої КВ-граматики G=(N, T, P, S) легко визначається за допомогою наступних індуктивних визначень.

  1. R0={S}.

  2. R i={B є правило A→Р, що AR i-1, BN}  R i-1 (i=1,2, …).

Оскільки множина N є скінченною, а формула для визначення Ri задає монотонне за і відображення, то існує k (k0), що Rk=Rk+1. Інакше кажучи, послідовність R0, R1, R2, … стабілізується на k-му кроці. Покладемо R=Rk.

Множина UR недосяжних нетерміналів задається формулою UR= N\R.

За граматикою G=(N, T, P, S) будуємо граматику G=(N, T, P, S) таким чином:

  1. N= NR

  2. T= T

  3. S=S

  4. P= { A→Р |  (RT)*}

Очевидною є наступна лема.

Лема 4.3. Для граматики G'=(N', T', P', S') виконуються наступні властивості:

  1. L(G')=L(G) (еквівалентність).

  2. Для всіх AN' існують такі ланцюжки  та β із (N'T)*, що S *G' (всі нетермінали є досяжними).

Визначення 4.32. Нетермінал AN назвемо непродуктивним в граматиці G=(N, Т, P, S), якщо з A не можна вивести жодного термінального ланцюжка, тобто не існує виводу виду A*Gt, tT*.

Спочатку визначимо множину продуктивних нетерміналів. Множина продуктивних нетерміналів для заданої КВ-граматики G=(N, T, P, S) легко визначається за допомогою наступних індуктивних визначень.

  1. Pr0={ A є правило AtР, що tT*}.

  2. Pri={ A є правило A→Р, що (R i-1Т)*}  R i-1 (i=1,2, …).

Оскільки множина N є скінченною, а формула для визначення Pri задає монотонне за і відображення, то існує k (k0), що Prk=Prk+1. Інакше кажучи, послідовність Pr0, Pr1, Pr2, … стабілізується на k-му кроці. Покладемо Pr=Prk.

Множина UPr непродуктивних нетерміналів задається формулою: UPr= N\Pr.

За граматикою G=(N, T, P, S) будуємо граматику G=(N, T, P, S) таким чином:

  1. N= (NPr){S}

  2. T= T

  3. S=S

  4. P= { A→Р |  (PrT)*}

Очевидною є наступна лема.

Лема 4.4. Для граматики G'=(N', T', P', S') виконуються наступні властивості:

  1. L(G')=L(G) (еквівалентність).

  2. Для всіх AN'\{S} існують термінальні ланцюжки, що виводяться з A.

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

До речі, наведений метод побудови множини продуктивних нетерміналів дозволяє дати відповідь на питання, чи є порожньою мова, що породжується граматикою G=(N, T, P, S)?

Відповідь проста: якщо аксіома є продуктивним нетерміналом, то мова непорожня, якщо ж аксіома – непродуктивний нетермінал, то мова – порожня.

Визначення 4.33. Символ ХNТ назвемо несуттєвим у КВ-граматиці G=(N, Т, P, S), якщо в ній немає виводу виду S*wXy*wxy, де w, x, y належать Т*.

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

Визначення 4.34. Граматика G=(N, T, P, S) називається зведеною, якщо в ній немає несуттєвих символів (можливо, крім аксіоми S).

Для побудови зведеної граматики спочатку видаляємо недосяжні та непродуктивні нетермінали. Потім з множини термінальних символів видаляємо несуттєві символи. Такі термінальні символи не містяться в правих частинах отриманих правил. Отримана граматика буде зведеною.

Лема 4.5. За кожною КВ-граматикою можна побудувати еквівалентну їй зведену граматики, що не містить несуттєвих символів.

Приклад 4.19. Розглянемо граматику G=({S, A, B, C}, {a, b, c}, P, S), де Р складається з правил:

Sa

SA

AAB

Bb

Cc

Спочатку видаляємо недосяжні нетермінали. Отримаємо R={S, A, B}. Недосяжним є C. З граматики треба видалити вказаний символ та останнє правило. Далі визначаємо множину продуктивних нетерміналів. Знаходимо, що Pr={S, B}. Непродуктивним є A. Після видалення відповідних правил нетермінал B стає недосяжним. Видаляємо і його. Залишається одне правило Sa. Тому суттєвим термінальним символом є лише a. Видаляємо несуттєві термінальні символи. Отримуємо наступну зведену граматику: G'=({S}, {a}, { Sa}, S).

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