Читайте также:
|
|
Нехай заданий алфавіт V і тим самим множина V* усіх кінцевих слів або ланцюжків в алфавіті V. Формальна мова L в алфавіті V - це довільна підмножина L Í V*. Конструктивний опис формальних мов здійснюється за допомогою формальних систем спеціального вигляду, які називаються формальними породжувальними граматики.
Формальна породжувальна граматика G - це формальна система, обумовлена четвіркою об'єктів G = < V, W, I, P >, де V - алфавіт термінальних символів; W - алфавіт нетермінальних символів (V Ç W = Æ); I - початковий символ (аксіома) граматики; P - кінцева множина правил вигляду
, де
і
- ланцюжки в алфавіті V È W. Ланцюжок
безпосередньо виведений із ланцюжка
в граматиці G (позначається a ÞG b). Індекс G опускається, якщо ясно, про яку граматику йде мова.
Якщо =
,
=
і
, то правило виведення в граматиці G формулюється таким чином: ланцюжок
може бути виведений із
, якщо існує послідовність e0= a, Е1, Е2,... Еn=
, така, що для всіх і =0, 1, …,
-1 ei Þ ei+1. Ця послідовність називається висновком
із
, а n - довжиною виведення. Вивідність
із
позначається
.
Мовою L(G), породжуваною граматикою G, називається множина всіх ланцюжків у термінальному алфавіті V, виведених з І. Граматики G і G' еквівалентні, якщо L(G)=L(G').
У теорії грамматик склалися свої традиції позначень, яких ми будемо дотримуватися. Символи термінального алфавіту прийнято позначати малими латинськими буквами, ланцюжки в алфавіті V È W - грецькими буквами. Довжина ланцюжка a позначається l (a) або çaç, множина всіх ланцюжків у алфавіті - V ® V*. Множина всіх непустих ланцюжків позначається V+.
Лема 1. Для довільної граматики G існує еквівалентна їй граматика G1, ліві частини правил якої не містять входжень основних символів.
Нехай G = <V, W, R, I>. Кожному символу а ÎV поставимо у відповідність двійник - символ А, що не утримується в VÈW; множину всіх двійників позначимо V'.
Визначимо тепер G1=<V1, W1, R1, I1> у такий спосіб: V1=V, I1=I, W1= WÈV', a R1 = R' È R", де R' - множина всіх правил виводу А ® a (аÎV, A - двійник а), а R" отримано з R заміною в кожному правилі усіх входжень термінальних символів входженнями їхніх двійників. Кожному виводу І, e1,... en у G відповідає висновок І, e1... en, en+1,..., en+m у G', де e'i (і ≤ n) отримано з e' заміною всіх символів із V їхніми двійниками, а en+J(j ≤ m) отримано з en+J-1 застосуванням правила з R', причому до e'n+m правила з R' уже не застосовні. Ясно, що e'n+m = en, тому L(G) Í L(G1). Оскільки тільки правила з R' містять термінальні символи в правих частинах, то будь-який висновок із G1 ланцюжка довжини m повинне містити m застосувань правил із R'. Видаливши з виведення застосування цих правил і привівши в ньому обернене перейменування двійників у символи V, одержимо виведення цього ж ланцюжка в G. Звідси
L(G1) Í L(G) і, отже,
L(G) = L(G1).
Спосіб уведення двійників, тільки що продемонстрований при дослідженні граматик, є дуже поширеним. Сама ж лема дозволяє стверджувати, що для будь-якої мови L, що породжена деякою формальною граматикою, існує породжувана нею граматика, для якої L - множина її заключних слів.
Таким чином, формальні граматики спроможні породжувати будь-які зчисленні множини.
Специфіка формально-лінгвістичного підходу до опису множин ланцюжків починає виявлятися при розгляді більш вузьких класів граматик. Узвичаєною класифікацією граматик і породжуваних ними мов є ієрархія Хомського, що містить чотири типи граматик.
Граматика типу 0 - це граматика довільного типу без обмежень на правила висновка.
Граматика типу 1 (контекстна граматика) - це граматика, усі правила якої мають вигляд
a A b ® a ω b, де ω Î (VÈW)+.
Ланцюжки a і b - це контекст правила. Вони не змінюються при його застосуванні.
Граматика типу 2, або контекстно-вільна граматика (КВ-граматика) - це граматика, усі правила якої мають вигляд A ® a, де aÎ(VÈW)*.
Граматика типу 3, або регулярна граматика - це грамматика, усі правила якої мають вигляд або A ® ab, або A ® a.
Мова L називається мовою типу і (і=0, 1, 2, 3), якщо існує граматика типу і, що її породжує.
Дата добавления: 2014-12-15; просмотров: 28 | Поможем написать вашу работу | Нарушение авторских прав |