Пораждащи граматики. Йерархия

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 7

8. Пораждащи граматики.

Йерархия (класификация) на Чомски 45

8 Пораждащи граматики. Йерархия


(класификация) на Чомски
Пораждаща граматика се състои от четири компонента:
1. Азбука на терминалните символи или азбука на пораждания език ;
2. Азбука на нетерминалните символи, които имат помощна роля в процеса
на пораждане и не участват в думи на пораждания език, нетерминалните символи
играят ролята на синтактични категории в езика;
3. Начален символ, който представлява фиксиран нетерминален символ и съ-
ответства на началното състояние на генератора; началният символ означава общата
синтактична категория на всички думи от пораждания чрез граматиката език;
4. Правила на пораждащата граматика, които са краен брой и представляват
наредени двойки от думи, съставени от терминални и нетерминални символи, при
това в първата компонента на всяка двойка участва поне един нетерминален символ;
правилата на пораждащата граматика описват всеки процес на извеждане на изход-
ната дума от началния символ. Пораждащата граматика извежда думите от езика
по следния начин: започва от дума, съставена само от началния символ, и прилага
правилата, като в получаваните думи замества поддума, която е първа компонента
в някое правило, с дума, представляваща втора компонента в това правило, докато
се получи дума само от терминални символи. Тази дума е елемент от езика.

Определение: Пораждаща граматика Γ се нарича наредената четворка


Γ = hV, W, S, P i в която: V е азбука на терминалните символи (терминална аз-
бука); W е такава непразна азбука на нетерминалните символи (нетерминална
азбука), че V ∩ W = ∅. Символът S ∈ W се нарича начален символ; P е крайно
множество от наредени двойки hα, βi от думи над азбуката V ∪ W , при което в
α има поне един нетерминален символ. Елементите на P се наричат правила на
Γ. Прието е правилата на граматиката да се записват във формата α → β, което
се чете “думата α се замества с думата β”. Знакът → не принадлежи нито на V ,
нито на W . Думата α се нарича лява страна на правилото, а думата β – дясна
страна.

Определение: Думата µ се извежда непосредствено от думата η в грама-


тиката Γ = hV, W, S, P i, ако съществуват думи γ1 ∈ (V ∪ W )∗ и γ2 ∈ (V ∪ W )∗ и
правило α → β от P такива, че: η = γ1 αγ2 , µ = γ1 βγ2 . Непосредствения извод
Γ
означаваме η ` µ
8. Пораждащи граматики. Йерархия (класификация) на Чомски 46

Γ Γ Γ
Определение: Редица от думи ω1 , ω2 , . . . , ωn , за която ω1 ` ω2 ` . . . ` ωn , се
нарича извод на ωn от ω1 в граматиката Γ. Когато съществува извод на ωn от ω1
в Γ, ще казваме, че ωn се извежда от ω1 в граматиката Γ и ще записваме това
Γ
така: ω1 |= ωn . Броя на непосредствените изводи, съставляващи даден извод, ще
наричаме дължина на извода.

Определение: Думата α се извежда от граматиката Γ = hV, W, S, P i, ако


Γ
α ∈ V ∗ и съществува извод S |= α. Множеството от всички думи, които една
граматика Γ = hV, W, S, P i може да породи, ще наричаме формален език, породен
от Γ, и бележим L(Γ) = {ω | ω ∈ V ∗ , S |= ω}. Две граматики Γ1 и Γ2 ще наричаме
еквивалентни, ако L(Γ1 ) = L(Γ2 ), т.е. когато пораждат един и същ език.

Пример: В граматиката Γ1 = h{a, b}, {S}, S, {S → aSb|ab}i терминални


символи са a и b и има само един нетерминален символ S, който е и начален.
Тази граматика поражда например думата a4 b4 чрез следния извод: S → aSb →
aaSbb → aaaSbbb → aaaabbbb. В този извод два пъти последователно е приложено
първото правило, а след това второто.

Лесно можем да забележим, че граматиката Γ1 поражда всички думи от вида


an bn , n ≥ 1. Достатъчно е да приложим n − 1 пъти първото правило към S, а след
това един път второто правило. Граматиката Γ1 , поражда думи само от вида an bn ,
n ≥ 1. Действително първото правило запазва броя на буквите S в думите от извода,
а второто правило ги намалява с една. В такъв случай при извод с начало S в
думите на извода има точно по една буква S, ако се прилага първото правило, а
при прилагането на второто правило буквата S изчезва и остават само терминални
символи. Следователно при пораждане на думата от L(Γ1 ) второто правило може
да се прилага само един път, и то в края на извода. И така единственият ред, в
който могат да се прилагат правилата на Γ1 при пораждане на дума от езика L(Γ1 ),
е следният: някакъв брой пъти прилагане на първото правило, а след това един път
второто правило. Но както вече видяхме, по този начин се пораждат само думи от
вида an bn , n ≥ 1. Получихме, че L(Γ1 ) = {an bn , n ≥ 1}.
8. Пораждащи граматики. Йерархия (класификация) на Чомски 47

Пример: Да разгледаме граматиката Γ2 = h{0, 1, 2, 3, 4, 5, 6, 7,


8, 9}, {S}, S, {S → S0|S1|S2|S3|S4| S5|S6|S7|S8|S9|0|1|2|3|4|5|6|7|8|9}i. Тази
граматика поражда десетичните записвания на целите неотрицателно числа
0, 1, 2, 3, . . . , 10, 11, . . . . Изводът на 7920 от S изглежда така: S → S0 → S20 →
S920 → 7920.

Лема 23.

Нека Γ = hV, W, S, P i е пораждаща граматика, съдържаща правила, в които


началният символ S се среща в дясната им страна. Тогава може да се пост-
рои друга граматика Γ0 , еквивалентна на Γ, такава, че в десните страни на
правилата на Γ0 да не се среща началният ѝ символ.

Доказателство. Нека S 0 6∈ V ∪ W . Определяме нова граматика Γ0 по следния начин:


Γ = hV, W ∪{S 0 }, S 0 , P 0 i, като P 0 съдържа всички правила от P и нови правила S 0 → α
за всяко правило S → α от P . Очевидно S 0 не се среща в дясната страна на никое
правило от P 0 .
Γ
Нека ω ∈ L(Γ). Тогава съществува извод S |= ω. Нека първото правило, което
Γ Γ
се прилага в този извод, е S → α. В такъв случай изводът изглежда така: S ` α |= ω.
Съгласно дефиницията на P 0 в него има правило S 0 → α. Освен това P 0 съ-
Γ
държа всички правила от P . Следователно изводът α |= ω може да се извърши и в
граматиката Γ0 . Получаваме
Γ0 Γ0
0
S ` α |= ω,

т.е. ω ∈ L(Γ0 ).
Γ0
0
Нека сега ω ∈ L(Γ ). Тогава S |= ω. Нека първото приложено в този извод
правило е S 0 → α. Но тогава S 0 не се среща в α, а следователно според конструкцията
Γ0 Γ0
0 0
на P можем да кажем, че в P има правило S → α, а изводът изглежда така: S ` α |=
ω. Тъй като S 0 не се среща в дясната страна на никое правило от P 0 и не участва
Γ0
0
в ω, то S не се среща и в никоя от думите на извода α |= ω. Но в такъв случай
всички прилагани в този извод правила не съдържат S 0 , т.е. те са правила и от P .
Получаваме, че този извод е и в граматиката Γ. Заедно с правилото S → α от P това
Γ Γ
дава извода S ` α |= ω, т.е. ω ∈ L(Γ). Следователно L(Γ) = L(Γ0 ).
8. Пораждащи граматики. Йерархия (класификация) на Чомски 48

Пример: За граматиката Γ = h{a, b}, {S}, S, {S → aSb|ab}i, от по-предния


пример получаваме следната граматика Γ0 , която поражда същия език и ни-
кое правило на която не съдържа началния символ в дясната страна. Γ0 =
h{a, b}, {S, S 0 }, S 0 , {S → aSb|ab, S 0 → aSb|ab}i.

Йерархия на Чомски
Йерархията на Чомски е класификация на класове формални граматики, образуващи
формални езици. Въведена е през 1956 г. от американския лингвист Аврам Ноам Чомски.
При тази класификация видът на една граматика се определя според правилата в
нея.

Определение: Пораждащи граматики, върху правилата на които не се


налагат никакви допълнителни условия, т.е. имат вида αAβ → ω, където
α, β, ω ∈ (V ∪ W )∗ , A ∈ W, се наричат граматики от общ вид , или още от
тип 0 (бележим с L0 ).

За следващия вид граматики ще искаме правилата да имат вида αAβ → αωβ, при
което α, β, ω ∈ (V ∪ W )∗ , ω 6= , а A е нетерминален символ. При такова правило A се
замества с думата ω само в даден контекст – префикс α и суфикс β. Прието е думите
α и β да се наричат ляв и десен контекст на A. Чрез тези правила обаче не може да
се породи празната дума, тъй като дясната страна на всяко правило не е по-къса от
лявата, която от своя страна не е празна. За да могат граматики с такива правила да
пораждат и празната дума, допълнително ще прибавяме правилото S → , където S
е началният символ на граматиката, при условие, че S не се среща отдясно на никое
правило. Тогава при пораждането на думите чрез граматиката правилото S →  не
може да се прилага в никакъв друг извод освен в извода S ` .

Определение: Пораждаща граматика Γ = hV, W, S, P i, всички правила на


която имат вида αAβ → αωβ, се нарича контекстна или още от тип 1 (бележим
тип L1 ). Контекстна е и всяка граматика Γ, в която има едно правило S → , а
всички останали правила са от горния вид, като при това S не се среща в десните
страни на тези правила.
8. Пораждащи граматики. Йерархия (класификация) на Чомски 49

Пример: Граматиката Γ = h{a, b, c}, {S, A, B, C}, S, {S → aSBC, S →


abC, CB → AB, AB → AC, AC → BC, bB → bb, C → c}i е контекстна, като
в третото правило C има десен контекст B, в четвъртото правило B има ляв
контекст A.

Тази граматика поражда всички думи от вида an bn cn , n ≥ 1. Действително при-


лагаме първото правило n − 1 пъти към S след това второто и получаваме S |=
an−1 S(BC)n−1 ` an bC(BC)n−1 . Третото, четвъртото и петото правило в тази пос-
ледователност позволяват да сменяме местата на буквите C и B. Получаваме S |=
an bB n−1 C n . След това прилагаме шестото правило n − 1 пъти, седмото правило n
пъти и получаваме S |= an bn cn , n ≥ 1. Като се използва факта, че правилата могат
да се прилагат само в определен ред, може да се докаже, че Γ поражда само думи
от вида an bn cn , n ≥ 1, т.е. L(Γ) = {an bn cn | n ≥ 1}.

Определение: Пораждаща граматика Γ = hV, W, S, P i, всички правила на


която имат вида A → ω (A ∈ W , ω ∈ (V ∪ W )+ ), се нарича безконтекстна, или
още граматика от тип 2 (бележим тип L2 ). Безконтекстна е и всяка граматика
Γ, в която има едно правило S → , а всички останали правила са от горния вид,
като при това S не се среща в десните им страни.

Пример: Граматиката Γ2 = h{0, 1}, {S}, S, {S → SS|0S1|10|01}i е безкон-


текстна. Лесно се вижда, че граматиката Γ2 поражда само непразни думи с равен
брой 0 и 1, тъй като всяко правило или не прибавя, или прибавя равен брой 0 и
1 към непосредствено извежданата дума.

Определение: Пораждаща граматика Γ = hV, W, S, P i, чиито правила са


от вида A → aB|b, където A, B ∈ W , a, b ∈ V , се нарича автоматна или още
граматика от тип 3 (бележим тип L3 ). Автоматна е и всяка граматика Γ, в
която има едно правило S → , а всички останали са от горния вид, като при
това те не съдържат S в десните си страни.
8. Пораждащи граматики. Йерархия (класификация) на Чомски 50

Пример: Автоматна е граматиката Γ3 = h{1}, {S, A, B}, S, {S → |1A, A →


1B|1, B → 1A}i. Вижда се, че L(Γ) = {12n | n ≥ 0}. Действително всяко по-
раждане на непразна дума в Γ трябва да завършва с четвъртото правило, и
нетерминалният символ A се появява при пораждането или веднага след прила-
гане на първото правило, или след прилагане на първото правило, последвано
от неколкократно прилагане на второто и третото правило едно след друго. И в
двата случая получаваме четен брой единици.

Определение: Един формален език се нарича автоматен (от тип 3), без-
контекстен (от тип 2), контекстен (от тип 1) или от общ вид (от тип 0) тогава
и само тогава, когато има пораждаща го граматика, която е съответно автомат-
на (от тип 3), безконтекстна (от тип 2), контекстна (от тип 1) или от общ вид
(от тип 0).
Автоматните, безконтекстните, контекстните граматики и граматиките от общ
вид образуват йерархията на Чомски за пораждащите граматики. Автоматни-
те, безконтекстните, контекстните езици и езиците от общ вид образуват йерар-
хията на Чомски за формалните езици.

От вида на правилата се вижда, че всяка автоматна граматика е безконтекстна, всяка


безконтекстна граматика е контекстна, а всяка контекстна граматика може да се
разглежда и като граматика от общ вид. Получаваме следната редица от включвания

L3 ⊂ L2 ⊂ L1 ⊂ L0 .

Или с други думи


{автоматни} ⊂ {безконтекстни} ⊂ {контекстни} ⊂ {общ вид},
което важи както за пораждащи граматики, така и за формални езици. Докато
включванията са строги за граматиките, остава да се докаже, че това е така и за
езиците.
Задачи за самостоятелна работа
1. Определете езика, който се поражда от граматиката:
а) Γ = h{0, 1}, {S, A, B}, S, {S → |A, A → 0B|0A|1, B → 0B|1}i;
б) Γ = h{a, b}, {S, A}, S, {S → |A, A → Ab|aA|a|b}i.
2. Определете граматика, която поражда следния език:
а) {0m 1n | n ≥ m ≥ 1};
б) {αα | α ∈ {0, 1}∗ }.
3. Постройте автоматна граматика, пораждаща всички думи от 0 и 1, които:
8. Пораждащи граматики. Йерархия (класификация) на Чомски 51

а) имат нечетен брой единици;


б) не завършват с две единици.

You might also like