Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теорія алгоритмів Лекції.docx
Скачиваний:
41
Добавлен:
20.11.2019
Размер:
3.94 Mб
Скачать

Граматики безпосередньо складових

Неукорочуючі граматики - граматики, у яких для будь-якого правила φ →ψ справедливе співвідношення |φ|≤|ψ|. Правила такого виду також називаються що не укорочують.

Розглянемо приклад граматики, що не укорочує. Нехай задана G = (Vт, Vн, Р, S), де

VT={а, b}, Vн={S}, Р={F1, F2, F3, F4}

F1: S аа, F3:SаSа,

F2: S bb, F4: S bSb.

Дано слово bSb. У результаті підстановки кожного із чотирьох правил ми одержуємо нове слово, довжина якого не менше довжини вихідного слова: bааb, bbbb, bаSаb, bbSbb.

Граматики безпосередньо складових — граматики із правилами виду: φAψ→φωψ або А→ω, де А—нетермінальний символ; ω - довільний непустий ланцюжок.

Таким чином, у граматиках безпосередньо складових на кожному кроці висновку дозволяється заміняти тільки один символ. Очевидно, що НС-грамматика є граматикою, що не укорочує. Розглянутий приклад - НС-грамматика.

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

Пояснимо це на прикладі. Допустимо, що в граматиці, що не укорочує, має місце правило виду АВ→ВА, де А и В - нетермінальні символи.

Таке правило може бути замінено чотирма правилами граматики безпосередньо складових:

АВ→1B;

1B→12;

12→В2;

В2→ВА,

де 1, 2 нові нетермінальні символи, які не зустрічаються ні в яких старих правилах. Послідовне застосування цих правил рівносильно застосуванню правила АВВА, причому така заміна не може привести до появи «зайвих» виводів, оскільки символи 1, 2— нові.

Мови, породжувані НC-грамматиками, називаються НC-мовами.

Серед НС-грамматик розрізняють лівоконтекстні й правоконтекстні граматики.

Лівоконтекстною НС-грамматикою будемо називати граматику із правилами виду:

φA→φω,

a правоконтекстною—грамматику із правилами виду:

Aφ →ωφ,

де А — нетермінальний символ,

φ і ω — ланцюжка в алфавіті V = VT U VH.

Мова, породжувана лівоконтекстною граматикою G, будемо називати лівоконтекстною мовою L(G); мова, породжувана правоконтекстною граматикою G', — правоконтекстною мовою й позначати L(G').

Щодо цих мов доведені наступні теореми:

Теорема (8). Клас лівоконтекстних мов не збігається із класом контекстно-вільних мов.

Теорема (9). Клас правоконтекстних мов не збігається із класом контекстно-вільних мов.

Граматика безпосередньо-складових називається НС-грамматикою, відзначеної праворуч (НС — ОП-грамматикою), якщо кожне правило має вигляд:

φAψ→φωψ=φω’αψ

де a V.

НС-грамматика називається НС-грамматикою, відзначеною ліворуч (НС — ОЛ-грамматика), якщо кожне її правило має вигляд:

φAψ→ φωψ= φα ω’ψ, a V

Мають місце теореми:

Теорема (10). Для будь-який НС - Оп-грамматики можна побудувати слабко еквівалентну Кс-грамматику.

Теорема (11). Для будь-який НС — ОЛ-грамматики можна побудувати слабко еквівалентну КС:граматику.

Для вивчення властивостей Нс-грамматик розглянемо маленький фрагмент граматики російської мови, заданого наступними правилами:

F1: ;

F2: ПС;

F3 : → Г ;

F4 : П → маленький, пустотливий, гарний;

F5: С →м'яч, хлопчик, дівчинка;

Fe: Г → втратив, ударив, кинув.

Правила F4F6 — це в дійсності група правил, оскільки вони вказують кілька можливостей для кожного символу П, С, Г.

У розглянутій граматиці термінальними символами будуть слова, перераховані в правилах: Vт = {маленький, пустотливий, гарний, м'яч, хлопчик, дівчинка, втратив, ударив, кинув}.

Нетермінальними символами будуть синтаксичні категорії

( —група дієслова, —група іменника, Г -дієслово,

С — іменник; П — прикметник, — речення):

Vн= { , , , Г, С,П}.

Початковим символом буде поняття речення. Виведені термінальні ланцюжки - правильні речення даної мови.

У цій простій граматиці всі термінальні ланцюжки мають ту саму синтаксичну структуру фраз, що може бути виражене за допомогою структурного дерева — маркера структури складових (З-маркера). Структурне дерево — це позначений граф (позначені ребра й вузли), де вузлам відповідають граматичні типи або синтаксичні одиниці, а ребра розрізняються своїм порядковим номером. Ланцюг дерева - послідовність ребер, кожне з яких пов'язане з попереднім. У лінгвістиці слова або послідовності, які функціонують як елементи іншої конструкції, називаються складовими. Звідси назва маркера структури складових.

Кожний С-маркер містить у вигляді міток при скінченних вузлах перелік слів, з яких складене дане речення (мал. 12).

У розглянутому речення складовими є - «м'яч», «гарний м'яч», «упустив гарний м'яч», а «упустив гарний»- не є складовій. Кожна складова зводиться до деякого вузла дерева. Якщо цей вузол, допустимо, позначений З, то говорять, що складова належить до типу С.

Ті складові, з яких конструкція безпосередньо утворена, є безпосередніми складовими.

Наприклад, і — безпосередні складові речення. Є безпосередні складові для С и Г — це відповідно П и С, і Г и і т.д. Очевидно, граматика не може вважатися задовільної, якщо не дає породжуваним реченням структурного опису - хоча б у вигляді розкладання на безпосередні складові.

Таким чином, граматика повинна забезпечувати З-маркером кожне з нескінченного числа речень.

Два З-маркери вважаються тотожними, якщо вони мають однакову структуру галузей й однакові мітки при відповідних вузлах. Дерево З-маркера характеризується певним упорядкуванням галузей ліворуч праворуч відповідно до порядку елементів у ланцюжку.

Оскільки число правил звичайно, а число маркерів може бути нескінченно, те можуть найтися такі символи граматичного словника, які повторюються в З-маркерах скільки завгодно раз. Більше того, можуть найтися такі ланцюги дерева, які містять деякий символ більш ніж п раз для будь-якого фіксованого п.

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

Виділимо три види рекурсивних елементів.

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

Елемент A називається праворекурсивним, якщо підлегле йому дерево містить А тільки в крайньому правому ланцюзі.

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

Граматика (G = (Vт, VH, S, Р) називається граматикою із самовставлянням, якщо для деякого A Vн існує висновок А = >φAψ, де φ і ψ — не порожні слова в V.

Граматика G називається однозначною, якщо для кожного слова х LG всі його виводи мають те саме дерево.

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

У прикладах такого роду істотно не «статистичне» остаточне накреслення, а «динаміка» процесу граматичного висновку. Подібного роду неоднозначність відіграє істотну роль для мов програмування. Тому виникає питання про однозначність різних типів граматик і можливості.знайти однозначну граматику певного типу.

Граматика G називається неоднозначної, якщо є ланцюжок х LG, що може бути виведена двома істотно різними способами. При цьому під істотно різними висновками розуміється наступне:

Граматиці G = (Vт, Vн, S, Р) із правилами виду φ1→ψ1, φ2→ψ2, …, φk→ψk поставимо у відповідність граматику G' = (V', V', S', Р', у якої V' = VH, S' = S, V'т = VT, U {(φ1, (φ2, … k)}, т. е. для кожного правила φi→ψi системи Р к термінальному словнику додається дужка (φi(i= 1, 2, ... k).

Система Р' виходить із системи Р заміною кожного правила виду φi→ψi правилом φi→( φiψi)

Очевидно, що кожному виводу ланцюжка х в LG однозначно відповідає вивід ланцюжка х' в LG'. Цей ланцюжок х' збігається з х, якщо в ній опустити всі дужки. Дужки, таким чином, зберігають «динаміку» виводу - їхнє розміщення дозволяє відновити процес виводу.

Ланцюжок х' називається структурним описом ланцюжка х.

Приклад. Нехай G = ({0,1}, S, S, Р); Р = {S→0, SS1S}, тоді G'= ({0,1(S)}, S, S, Р); Р= {S→(S0), S→(SS1S)}, ланцюжок 01010 мови LG може бути виведена - різними способами:

  1. S→S1S→01S→01S1S→0101S→01010;.

  2. S→S1S→S10→S1S10→01S10→01010.

Їм відповідають різні структурні описи, отримані в LG':

  1. (S(S0)1(S(S0)1(S;0)));

  2. (S(S(S0) 1(S0)) 1(S0)).

Виводи ланцюжка х у деякій мові LG називаються істотно різними, якщо структурні описи, х', що відповідають цим виводам, відрізняються друг від друга.

Якщо заздалегідь відомо, що граматика не є неоднозначною, то, мабуть, по будь-якій породжуваній нею ланцюжку можна однозначно відновити вивід цього ланцюжка.

Якщо задано конкретну граматику G одного з типів і потрібно встановити, чи є вона неоднозначної, то алгоритмічна можливість розв'язання такої задачі встановлюється наступною теоремою:

Теорема (12). Для мов типу 3 існує алгоритм, що дозволяє по заданій граматиці визначити, чи є вона однозначною. Для інших типів мов ця задача алгоритмічно нерозв'язна.

Мова даного типу називається істотно неоднозначним, якщо будь-яка граматика G цього типу, що породжує цю мову, неоднозначна, тобто якщо в заданому класі граматик не можна знайти граматику без неоднозначностей, еквівалентну заданої. У противному випадку мова L називається мовою без неоднозначності або однозначно виведеним.

Наступні дві теореми ставляться до питання про існування істотно неоднозначних мов різних типів.

Теорема 13 (Хомского й Міллера, Шютценберже). Не існує істотно неоднозначних мов типів 0, 2D*, 3; всі ці мови однозначно виведені.

Теорема 14 (Перуки). Існують істотно неоднозначні бесконтекстні мови.

Для мов типу 1 (контекстних) це питання не вирішене.

Перука довела, що бесконтекстні мови L= {апbmаP|п = m або п = Р} й L = {х|х = апbтап'bт Vх = апbтапbт'; п, п', т, т' ≥1} є істотно неоднозначними. Другий із цих мов породжується граматикою G = ({а, b}, {S, А, В, З, D}, S, Р), де Р включає наступні правила:

S→AB S→DC

A→aAa А→аВа

B→b B→b

C→bCb C→bDb

D→a D→a

Наступна теорема розглядає алгоритмічну можливість розв'язання розпізнавання істотної неоднозначності:

Теорема 15 (Гладкого). Не існує алгоритму для рішення задачі про те, чи є задана мова типу 2D істотно неоднозначним. Однак у деяких випадках це питання може бути вирішений.

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

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

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

Вправи:

1. Три граматики — G1, G2, G3 -задані відповідними правилами: P1 = х, А Ах}, Р2 = х, А хА}, Р3 =x, А xАх}, де А -ціль граматики.

Визначити тип еквівалентності граматик G1, G2, G3.

  1. Нехай G=(VT,VH, P, S) граматика, що-породжує, де VT={a, b}, VH={A, S}, P = {A>ab, A>aSAb, S>bAb, SA>b, S> ?). Визначити тип рекурсивності правил граматики й показати, що ланцюжок ababbabb належить множині L(G).

  2. Побудувати мови L(Gj), де j = 1, 2, 3, якщо схеми правил граматик G1, G2 й G3 мають такий вигляд:

P1 = {S→AB, S→ASB};

Р2 = {SАА, S→BB, SASA, SBSB};

P3={S→AS, S→BS, CABSC→САВАВС}.

Для кожної граматики визначити Vт, VH, довжину висновків, тип правил, вид граматики.

  1. Дано граматику G = ({А, В}, {S}, Р, S), де Р = {S→SA, SSABA}. Визначити, чи є G-граматика граматикою безпосередньо складових.

  2. Нехай Vт = {А, B}. Показати, що V*T = {АпВпАп/п≥1} є НС-язык.

6. Граматики G1, G2, G3, G4 задані правилами виду: Р1={А→хВ, В→y, В→zВ};

Р2 = {А→Ву, А→СВ, ВВх, В→х, С→ х, СхС);

Р3={А→Сх, В→Агов, С→Вz, С→z, D→хЕ, Еух};

Р4 = {А→Сх, В→Агов, С→Вz, Сх, DхЕ, Е→yz}.

Визначити для кожної із заданих граматик:

а) термінальний і нетермінальний словник;

б) однозначність граматики;

в) вид рекурсії синтаксичних елементів;

г) тотожність З-маркерів для термінальних ланцюжків, виведених у граматиці.

7. Дано граматику G= (Vт, Vн, Р, S), де Р = {А→аВ, Аb, В→Аа, Вb. Побудувати С-маркер для ланцюжків ааbа, ааbаа, аааbаа.

8. Нехай Vт = {а, b, з}. Побудувати С-маркер, що відповідає виводу SаbАbВ→аbВаАbВ→аbSbаАbВ→аbсbаАbВ аbсbасаbbВ →аbсbасаbbаа.

9. Визначити, чи є однозначної граматика G= ({а,b, з, d, е} {S, А, В, С}, Р = {S→АВВ, А→ас, С→bс, В →d е), S).

10. Нехай Vт = {а, b, с). Для яких із множин, що нижче приводять, Р граматика G = (Vт, Vн, Р, S) є невизначеною:

а) Р={SaSbс, Sз, Sb, А→bА, Аа};

б) Р = {Sа2Sа, SаSа, S→а, SΛ};

в) Р={S→аВс, S→b, В→аВ, В→Ва, Вс};

г) Р = (Sа, S, S→bBb, В→аВb, В→асb}.

11. Граматики G1 й G2 задані правилами виду:

Р1{А→ АА, А→а};

Р2{В→аSВ, В→a}.

Визначити термінальні й нетермінальні словники граматик, їхня однозначність і тип еквівалентності граматик.