Малюнок 2.7. Програма як діалектичне заперечення проблеми 7 страница



Теорема 4.2 Для довільної породжуючої граматики G0 існує граматика GC у загально-контекстній формі, яка породжує ту саму мову, тобто L(G0)=L(GC).

Визначення 4.22 Довільні граматики G1 та G2 називаються еквівалентними, якщо вони породжують одну й ту саму мову, тобто G1 » G2 Û L(G1)=L(G2).

Цілком очевидно, що так введенне відношення » є відношенням еквівалентності (рефлексивним, симетричним та транзитивним відношенням).

Приклад 4.13 Побудуємо за граматикою G3, що породжує мову L(G3)={anbncn|n³0} еквівалентну їх загально-контекстну граматику G3C.

Граматика G3 має наступні правила:

P1: S ® aBSc

P2: S ® e

P3: Ba ® aB

P4: Bb ® bB

P5: Bc ® bc

З них неконтекстними є правила P3 та P4. Спочатку перетворемо правило Ba®aB (правило P3) в послідовність контекстних правил. Отримуємо:

Ba®aB замінуємо на BAa®AaB, Aa®a.

Далі замість BAa®AaB вводимо послідовність правил

BAa®N31Aa

N31Aa ®N31N3r

N31N3r®N3pN3r

N3pN3r®N3pAaB

N3p®e

Аналогічно поступаємо з правилом P4: Bb ® bB. Після цих перетворень отримуємо нову граматику G3C, в якій пронумеруємо нові правила:

P1: S ® AaBSc,

P2: S ® e

P31: Aa®a

P32: BAa®N3lAa

P33: N3lAa ®N3lN3r

P34: N3lN3r®N3pN3r

P35: N3pN3r®N3pAaB

P36: N3p®e

P41: Bb ® b

P42: BBb®N4lBb

P43: N4lBb ®N4lN4r

P44: N4lN4r®N4pN4r

P45: N4pN4r®N4pBbB

P46: N4p®e

P5: Bc ® Bbc

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

Очевидно, що S e та S AaBSc AaBc AaBbc aBbc abc. Побудуємо вивід ланцюжка a2b2c2. Маємо,  

S  AaBSc  AaBAaBScc  AaBAaBcc  AaBAaBbcc  Aa N3lAaBbcc  

Aa N3lN3rBbcc  Aa N3pN3rBbcc  Aa N3p AaBBbcc  AaAaBBbcc  AaAaN4lBbcc AaAaN4lN4rcc AaAaN4pN4rcc AaAaN4pBbBcc  AaAaBbBcc  AaAaBbBbcc  AaAaBbbcc  AaAabbcc  Aaabbcc   aabbcc.

 

Еквівалентність нескорочуючих та контекстно-залежних граматик доводиться аналогічним чином.

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

Перейдемо до дослідження зв’язків класів породжуючих граматик з класами формалізмів розпізнання (сприйняття), в першу чергу, с класами автоматів різного типу.

 

4.6 Автоматні формалізми сприйняття мов

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

Існують різні уточнення методів сприйняття. Одним з них є уточнення, яке можна отримати з породжуючих граматик простим оберненням застосування правил, тобто замість правила породжуючої граматики α→β розглядати правило сприймаючої граматики β→α. Вивід в сприймаючій граматиці тоді треба вести від термінального ланцюжка до аксіоми. Такий метод уточнення нічого суттєво нового не привносить, хоча він часто розглядається в теорії формальних граматик як метод висхідного аналізу. Тому важливо визначити інші формалізми сприйняття мов. З цією метою часто обираються формалізми автоматів (машин) різного типу.

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

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

Є різні варіанти визначень автоматів. Розглянемо ті з них, що відповідають класифікації мов за Хомським.

Найбільш потужними за сприймаючою силою є автомати, що називаються машинами Тьюрінга.

4.6.1 Машини Тьюрінга

Машина Тьюрінга M складається з таких частин.

  1. Керуючий пристрій, який може приймати певний стан з скінченної множини Q.
  2. Стрічка (потенційно) нескінченої довжини, розділена на комірки, в яких розміщена вхідна інформація у вигляді символів деякого алфавіту A (як правило, QÇA=Æ). В кожній комірці записано по одному символу з алфавіту. Виділяється особливий символ #ÎA, який інтерпретуємо як “порожній символ”, причому в кожен даний момент стрічка містить лише скінчену кількість символів, відмінних від #. Вважаємо також, що всі такі “непорожні” символи записані підряд.
  3. Голівка читання-запису забезпечує обмін інформацією між стрічкою і керуючим пристроєм. В кожний момент часу голівка може працювати тільки з однією коміркою стрічки. Голівка може

· замінити прочитаний символ іншим символом алфавіту A,

· переміщуватись на одну позицію вправо чи вліво, чи

· залишатись на місці.

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

Програма складається з команд виду qa®pbR, qa®pbL, qa®pb (q, pÎQ, a, bÎA, L,R – додаткові символи). Інтерпретація команд наступна:

· Виконання команди qa®pbR. Якщо керуючий пристрій знаходиться у стані q, а голівка оглядає комірку на стрічці, у якій записано символ a, то керуючий пристрій переходить у стан p, голівка у комірку записує символ b і сама зміщується на одну комірку вправо.

· Виконання команди qa®pbL. Відрізняється від попереднього лише тим, що голівка зміщується вліво.

· Виконання команди qa®pb. Відрізняється від попередньої команди тим, що голівка залишається на місці.

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

У фіксований момент часу поточна інформація задається за допомогою конфігурації машини Тьюрінга. Конфігурацією машини Тьюрінга зазвичай називається трійка (q, #w, v#), де qÎQ, w,v ÎA*. Конфігурація описує повний стан машини і інтерпретується таким чином:

· q – стан керуючого пристрою,

· #w – ланцюжок, записаний на стрічні машини вліво від голівки,

· v# – ланцюжок, записаний на стрічні машини вправо від голівки, включаючи символ, який оглядає голівка.

Зважаючи на те, що будемо перетворювати команди машини Тьюрінга у правила граматики, конфігурації в подальшому будемо задавати у вигляді ланцюжка #wqv# (тому тут важливо, щоб QÇA=Æ).

Оскільки машина Тьюрінга є конкретизацією транзиційної системи, то у визначення вводиться початковий стан q0ÎQ та множина заключних станів FÍQ. Звичайним чином вводиться відношення безпосереднього виводу Þ (часто позначається |–) та рефлексивне транзитивне замикання цього відношення Þ* (|–*). Введені поняття дають можливість формального визначення машин Тьюрінга.

Визначення 4.23 Машиною Тьюрінга M називається послідовність параметрів (Q, A, #, d, q 0, F), де

· Q – скінченна множина станів,

· A – скінченний алфавіт (QÇA=Æ),

· # – символ з A («порожній» символ),

· d – скінченна множина команд qa®pbR, qa®pbL, qa®pb (q, pÎQ, a, bÎA, L,R – додаткові символи),

· q 0 – початковий стан із Q,

· F – підмножина фінальних станів із Q.

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

Наведене визначення задає екстенсіонал поняття машини Тьюрінга, тобто клас одиничних машин. Що стосується інтенсіоналу, то він обумовлений призначенням машин, орієнтованих на сприйняття мов, яке засновано на відношенні |–TT) безпосереднього переходу від однієї конфігурації до іншої.

Визначення 4.24 Конфігурацією машини Тьюрінга M =(Q, A, #, d, q0, F) називається ланцюжок виду #wqv#, qÎQ, w,v ÎA*.

Визначення 4.25 Нехай M =(Q, A, #, d, q0, F) – машина Тьюрінга. Конфігурація #wcqav# безпосередньо переходить

· в конфігурацію #wcbpv#, якщо виконується команда qa®pbR,

· в конфігурацію #wpcbv#, якщо виконується команда qa®pbL, та

· в конфігурацію #wcpbv#, якщо виконується команда qa®pb (a,b,cÎA, w,v ÎA*, q, pÎ Q).

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

Визначення 4.26 Рефлексивне транзитивне замикання відношення |–T позначаємо |–*T.

Початкові конфігураціі мають вид #q0v#, фінальні – #w1qFw2# , qFÎF.

І, нарешті, головне смислове визначення.

Визначення 4.27 Мова, яка допускається машиною Тьюрінга M =(Q, A, #, d, q0, F), є множина ланцюжків

LT(M)={ w| #q0w #|–*T #w1qF w2#, qFÎF, w, w1,w2Î A*}

Таким чином, поняття машини Тьюрінга є єдністю двох аспектів: екстенсіонального та інтенсіонального. Екстенсіональний аспект задається як клас машин Тьюрінга, визначених відповідними шістками параметрів, інтенсіональний аспект задається уніформними визначеннями відношенням безпосередньої вивідності, та мови, що сприймається (допускається, розпізнається) машиною.

Приклад 4.14 Побудуємо машину Тьюрінга, яка допускає мову { | rÎ{a,b}*}.

Ідея програми наступна:

  1. В початковому стані q0 машина читає символ a, b, або #. У перших двох випадках машина стирає прочитані символи та «запам’ятовує» прочитаний символ відповідно у стані qa або у стані qb. Останній випадок означає, що на вхідній стрічці – порожній ланцюжок і тому машина переходить в заключний стан qF.
  2. Далі голівка рухається у правий бік до кінця ланцюжка. Прочитавши порожній символ # голівка повертається на одну комірку (клітинку) вліво та переходить у стан q-a зі стану qa, або у стан q-b зі стану qb. Тут індекси –a та –b означають, що машині потрібно зтерти відповідно символ a або b.
  3. Якщо правий символ ланцюжка співпадає з символом, «запам’ятованим» як такий, що потрібно стерти, то він стирається, машина переходить у стан qL.
  4. У стані qL голівка рухається вліво, поки не дійде до символу #. Далі голівка переходить у стан q0 та сміщуються у правий бік. Один цикл перевірки завершено. Робота продовжується наступним циклом перевірки або завершується, якшо все перевірено.

Наведений алгоритм дозволяє побудувати машину Тьюрінга

M =({ q0, qa, q-a, qb, q-b, qL, qF}, {a, b}, #, d, q 0, {qF}),

де d – множина наступних команд:

1. q0a®qa#R

2. q0b®qb#R

3. qaa®qaaR

4. qab®qabR

5. qaq-a#L

6. q-aa®qL#L

7. qba®qbaR

8. qbb®qbbR

9. qbq-b#L

10. q-bb®qL#L

11. qLa®qLaL

12. qLb®qLbL

13. qLq0#R

14. q0qF#

 

Розглянемо на прикладі сприйняття слів цією машиною Тьюрінга. Візьмемо слово #abba#. Побудуємо протокол його сприйняття:

#q0abba#Þ#qabba#Þ#bqaba#Þ#bbqaa#Þ#bbaqa

#bbq-aa#Þ#bbqL#Þ #bqLb#Þ# qLbbqL#bb

# q0bb#Þ# qbb#Þ# bqb#Þ #q-bb#Þ#qL#Þ#q0#Þ#qF#


Дата добавления: 2019-02-13; просмотров: 260; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!