660 likes | 916 Views
KOMPIUTERIŲ TEORIJA. 2 d. TIURINGO MAŠIN OS 2. 2 paskaita Algoritmai ir Tiuringo mašina Doc. Stasys Maciulevičius sta sys @ ecdl .lt. Ankstesnė s paskaitos turinys. Tiuringo tez ė Tiuringo mašinos Tiuringo mašina Tiuringo mašinos aprašas Tiuringo mašinos konfig ū racija
E N D
KOMPIUTERIŲ TEORIJA 2 d. TIURINGO MAŠINOS 2.2 paskaita Algoritmai irTiuringo mašina Doc. Stasys Maciulevičius stasys@ecdl.lt
Ankstesnės paskaitos turinys Tiuringo tezė Tiuringo mašinos Tiuringo mašina Tiuringo mašinos aprašas Tiuringo mašinos konfigūracija Pavyzdžiai Tiuringo mašinos aprašas penketais
Šios paskaitos turinys Išraiškų su skliaustais tikrinimas Tiuringo mašinų diagramos Skaičiavimai naudojant Tiuringo mašiną Tiuringo mašinų modifikacijos Universali Tiuringo mašina Apie koliokviumą
2. Išraiškų su skliaustais tikrinimas • Pavyzdžiai: • ( ( ( ( ) ( ) ) ( ) ) ) – teisinga išraiška, • ( ( ) ) ), ) )– neteisingos išraiškos. • Tikrinimo procedūra: • einant iš kairės į dešinę randamas pirmas “)”, einantįkairę randamas jam porinis “(“ ir abu skliaustaibraukiami; • procesas kartojamas, kol išbraukiamos visos poros. • Jei lieka neišbrauktų neporinių skliaustų – išraiška neteisinga, jei nelieka – teisinga
qi sj qij sij dij pastaba 0 ( 0 ( d 0 X 0 X d 0 ) 1 X k 0 A 2 A k 1 ) 1 ) k 1 X 1 X k 1 ( 0 X d 1 A S 0 - išraiška neteisinga; daugiau “)” 2 ) negalima kombinacija 2 X 2 X k 2 ( S 0 - išraiška neteisinga; daugiau “(“ 2 A S 1 - išraiška teisinga 2. Išraiškų su skliaustais tikrinimas Tiuringo mašinosaprašas:
2. Išraiškų su skliaustais tikrinimas • Paaiškinimas • Būsena q0: judėjimas dešinėn iki pirmo uždarančiojo skliausto “)”, jo vietoje įrašomas X; perėjimas į būseną q1. • Būsena q1: judėjimas kairėn iki porinio atidarančiojo skliausto “(“; išbraukimas, perėjimas į būseną q0. • Būsena q2: tikrinimas, ar liko neporinių atidarančiųjų skliaustų “(“.
2. Išraiškų su skliaustais tikrinimas • Paaiškinimas • Poriniai skliaustai braukiami tol, kol: • būsenoje q1 neberandamas porinis “(“, pasiekiama kairioji A, spausdinamas 0 ir sustojama – išraiška neteisinga; • būsenoje q0 neberandama “)”, pasiekiama dešinioji A; tuomet mašina pereina į būseną q2 ir, eidama kairėn, tikrina, ar liko atidarančiųjų skliaustų “(“; jei liko, spausdina 0 ir sustoja; jei neliko “(“, pasiekia kairiąją A, spausdina 1 – išraiška teisinga – ir sustoja.
A ( ( ( ( ) ( ) ) ( ) ) ) A 2. Išraiškų su skliaustais tikrinimas Duota juosta, kurioje užrašyta skliaustinė išraiška, jos pradžia ir pabaiga pažymėtos simboliais A: Sprendimo metu kairėje užrašysime būsenos indeksą (žalia spalva)
A ( ( ( ( ) ( ) ) ( ) ) ) A 2. Išraiškų su skliaustais tikrinimas; eiga 0 ▲ A ( ( ( ( X ( ) ) ( ) ) ) A 1 ▲ A ( ( ( X X ( ) ) ( ) ) ) A 0 ▲ A ( ( ( X X ( X ) ( ) ) ) A 1 ▲
A ( ( ( X X X X ) ( ) ) ) A 2. Išraiškų su skliaustais tikrinimas; eiga 0 ▲ A ( ( ( X X X X X ( ) ) ) A 1 ▲ A ( ( X X X X X X ( ) ) ) A 0 ▲ A ( ( X X X X X X ( X ) ) A 1 ▲
A ( ( X X X X X X X X ) ) A 2. Išraiškų su skliaustais tikrinimas; eiga 0 ▲ A ( ( X X X X X X X X X ) A 1 ▲ A ( X X X X X X X X X X ) A 0 ▲ A ( X X X X X X X X X X X A 1 ▲
A X X X X X X X X X X X X A 2. Išraiškų su skliaustais tikrinimas; eiga 0 ▲ A X X X X X X X X X X X X A 2 ▲ A X X X X X X X X X X X X A S ▲
Tiuringo mašinų diagramos Tiuringo mašinos perėjimus galima atvaizduoti ir grafiškai – diagramomis. Būsenos atvaizduojamos apskritimais;būsenos pavadinimas [identifikatorius] qi gali būti užrašomas apskritimo viduje: qi
X/Y p q Tiuringo mašinų diagramos Tiuringo mašinoje prie lanko, jungiančio būsenas q ir p, rašomas vienas ar keli elementai pavidalo X/YD,kurXir Y – juostos simboliai, o D – galvutės judėjimo kryptis Tokiu būdu, perėjimą(q, X) = (p, Y, R)atitiks toks lankas (diagramose kryptį L atitinka , o R - ):
Eilutės 0n1n priėmimas Formaliai šiam uždaviniui spręsti skirtą TM aprašėme taip: M = ({q0,q1,q2,q3,q4}, {0,1}, {0,1,X,Y,B}, δ, q0, B, {q4}) Perėjimų lentelė:
Y/Y 0/0 Y/Y 0/0 Pradžia 0/X 1/Y q0 q1 q2 Y/Y X/X B/B q3 q4 Y/Y Eilutės0n1npriėmimas:diagrama
Funkcijosreikšmės skaičiavimas Tiuringas laikė, kad TM galima naudoti funkcijų reikšmėms skaičiuoti. Skaičius jis pateikdavo vienetinėje skaičiavimo sistemoje blokų iš vieno ir to paties simbolio pavidalu. Jo mašina skaičiavimo metu keitė blokų ilgį arba juostoje formavo kitą bloką.
0 A 1 . . 1 B 1 . . 1 A 0 0 0 0 mn Daugybos įtaisas Reikia sudauginti du skaičius m ir n, pateiktus vienetiniu kodu, rezultatą vienetiniame kode talpinant dauginamųjų dešinėje. Pradinė juosta parodyta žemiau; joje dauginamieji atskirti raide B, skaičių sekos pradžią ir pabaigą žymi raidės A:
1/1 B/B X/1 0/0 1/1 A/A X/X B/B 0/0 A/A X/X 1/0 A/A 1/X Pradžia q3 q0 q1 q2 B/B 0/1 1/X A/A A/A q5 q6 q4 1/1 X/X A/A Būsenų diagrama
0 A 1 . 1 0 B 1 . . 1 A 0 0 0 0 1/1 B/B X/1 0/0 1/1 A/A X/X B/B 0/0 A/A X/X • 1. Galvutė juda kairėn, pirmąjį rastą1 keičia į0: Pradžia 1/0 A/A 1/X q3 q0 q1 q2 B/B 0/1 1/X A/A A/A q5 q6 q4 1/1 X/X A/A Daugybos įtaisodarbo algoritmas
0 A 1 . 1 0 B 1 . . 1 A 0 0 0 0 1/1 B/B X/1 0/0 1/1 A/A X/X B/B 0/0 A/A X/X Pradžia 1/0 A/A 1/X q3 q0 q1 q2 B/B 0/1 1/X A/A 2. Juda dešinėn iki A, pakeliui visus X keičiant į1 (pirmą kartą X-ų nėra): A/A q5 q6 q4 1/1 X/X A/A Daugybos įtaisodarbo algoritmas
0 A 1 . 1 0 B 1 . 1 X A 0 0 0 0 1/1 B/B X/1 0/0 1/1 A/A X/X B/B 0/0 A/A X/X Pradžia 1/0 A/A 1/X q3 q0 q1 q2 B/B 3. Juda kairėn, pirmąjį rastą 1 pakeičia įX: 0/1 1/X A/A A/A q5 q6 q4 1/1 X/X A/A Daugybos įtaisodarbo algoritmas
0 A 1 . 1 0 B 1 . . X A 1 0 0 0 1/1 B/B X/1 0/0 1/1 A/A X/X B/B 0/0 A/A X/X Pradžia 1/0 A/A 1/X q3 q0 q1 q2 B/B 0/1 1/X A/A A/A 4. Juda dešinėn iki pirmosios laisvos ląstelės (0) ir įrašo į ją1: q5 q6 q4 1/1 X/X A/A Daugybos įtaisodarbo algoritmas
0 A 1 . 1 0 B X . . X A 1 . 1 0 5. Kartoja 3 ir 4 žingsnius, kol randa B: 1/1 B/B X/1 0/0 1/1 A/A X/X B/B 0/0 A/A X/X Pradžia 1/0 A/A 1/X q3 q0 q1 q2 B/B 0/1 1/X A/A A/A q5 q6 q4 1/1 X/X A/A Daugybos įtaisodarbo algoritmas
0 A 0 . . 0 B X . . X A 1 . 1 0 1/1 B/B X/1 0/0 1/1 A/A X/X B/B 0/0 A/A X/X Pradžia 1/0 A/A 6. Kartoja nuo 1 žingsnio, kol randa kairįjį A ir sustoja: 1/X q3 q0 q1 q2 B/B 0/1 1/X A/A A/A q5 q6 q4 1/1 X/X A/A Daugybos įtaiso darbo algoritmas
0 A 0 . . 0 B X . . X A 1 . . 1 0 0 Juosta po daugybos mnm*n nulių X –ų vienetų
Daugybos Tiuringo mašina jFLAP • Aukščiau pateikta Tiuringo mašina pradeda darbą, kai skaitymo galvutė yra ties B. • jFLAP Tiuringo mašina pradeda darbą, kai skaitymo galvutė yra ties pirmuoju eilutės simboliu (A) • Todėl pakeista Tiuringo mašinos būsenos diagrama, kad skaitymo galvutė būtų perkelta ties B 2011-2013 28
Studentas kaip kursinį projektą parengė Tiuringo mašinos imitatorių Galite jį parsisiųsti, išskleisti archyvą ir išbandyti Paspaudę Perėjimų funkcijos Įkelti aprašą, galite nagrinėti jo pateiktus pavyzdžius Dar vienas Tiuringo mašinos imitatorius 2011-2013 29
Tiuringo mašinos imitatorius 2011-2013 30
Spręsime tą patį daugybos uždavinį Pirmiausia užpildome lentelę Perėjimų funkcijos, po to juostoje įrašome pradinius duomenis: A111B11A00000000 (B turi būti ties būsenos ženklu ; dauginsime 3 iš 2, gale bent 6 pozicijas užpildome nuliais – čia bus įrašoma sandaugos reikšmė) Nustatome modeliavimo greitį ir spaudžiame Pradėti Tiuringo mašinos imitatorius 2011-2013 31
Tiuringo mašinos imitatorius 2011-2013 32
Tiuringo mašinos imitatorius dirba 2011-2013 33
Tiuringo mašinos imitatorius • Mašina darbą baigė: • pirmojoje dalyje visi 1 pakeisti nuliais; • pasiekta galinė būsena – 4 • 3 ir 2 sandauga lygi 6 (111111) 2011-2013 34
Tiuringo mašinų modifikacijos • Susipažinus su Tiuringo mašinos darbo principais, galima pastebėti dvi tų mašinų ypatybes: • Tiuringo mašina gali daryti daug ką, ko negali daryti mašinos su baigtiniu būsenų skaičiumi, ir, nors jų struktūra labai paprasta, gali vykdyti ir gan sudėtingus skaičiavimus; • Tiuringo mašinoms būdingas neefektyvumas, nes net elementariuose skaičiavimuose galvutė turi daug kartų slankioti išilgai ilgų juostos atkarpų
Tiuringo mašinų modifikacijos • Iki šiol, kalbant apie Tiuringo mašinas, alfabeto simbolių skaičius nebuvo ribojamas, tačiau žinoma, kad neprarandant bendrumo galima apsiriboti dviejų simbolių alfabetu • Jei Tiuringo mašina T naudoja k skirtingų simbolių, juos galima koduoti n skilčių dvejetainiu kodu, čia n = ]log2k[ • Tiuringo mašiną T galima pakeisti kita, T*, kuri su juosta dirba taip, tarsi jos ląstelės būtų sugrupuotos n ilgio blokais
Tiuringo mašinų modifikacijos • Šenonas 1956 m. įrodė, kad bet kuri Tiuringo mašina ekvivalentiška Tiuringo mašinai tik su dviem būsenomis • Ekvivalentiškumas pasiekiamas Tiuringo mašinoje su daugeliu būsenų žymiai padidinus alfabeto simbolių skaičių
Tiuringo mašinų modifikacijos • Literatūroje aprašomi daugelio juostų Tiuringo mašinų variantai, nurodoma, kad dargi gaunamas n-matės Tiuringo mašinos efektas • Daugelio juostų TM turi keletą juostų ir keletą galvučių – po vieną kiekvienai juostai • Kiekviename žingsnyje visos galvutės skaito po vieną simbolį, priklausomai nuo perskaitytos aibės ir vidinės automato būsenos pakeičia simbolius ir perstumia galvutes į kairę ar dešinę • Yra parodyta, kad tokia k-juostė TM gali būti sumodeliuota standartine TM, skaičiuojančia tą pačią funkciją
… … … > > > a a b b a a a b b a b b Daugelio juostų TM
Daugelio juostų TM variantai • Variantai: • Viena juosta – daug galvučių; kiekvienoje būsenoje tik viena galvutė skaito, rašo, pasislenka. Galima modeliuoti daugiajuostę TM, pridedant po vieną juostą kiekvienos galvutės pozicijai atsiminti • Dviejų dimensijų juosta; gali būti modeliuojama daugiajuoste TM, taigi, ir šiuo atveju skaičiavimo galia ta pati, kaip ir standartinės TM
Daugelio juostų TM variantai • Tiesioginio kreipimosi TM; tiesioginio išrinkimo galimybė gali būti padaryta pridedant ar atimant kokius nors skaičius prie adreso, kuris atsimenamas specialiame registre. Literatūroje rasime tokių TM struktūras ir, vėlgi, yra parodyta, kad jų skaičiavimo galia tokia pati kaip ir standartinės vienos juostos TM
Universali Tiuringo mašina Nagrinėdami įvairias Tiuringo mašinas matėme, kad pradžiojejuostoje būdavo kažkokia informacija, o mašinai sustojusjuostoje likdavo skaičiavimų rezultatas, priklausantis nuo pradinės informacijos ir nuo Tiuringo mašinos tipo
Universali Tiuringo mašina Sutarsime, kad funkcija f(x) apskaičiuojama pagal Tiuringą, jei jos reikšmės gali būti apskaičiuojamos Tiuringo mašina, kurios juostoje skaičiavimų pradžioje užrašytas tik argumentas x (kokia nors standartine forma, paprastai vienetiniame kode); kai mašina sustoja, juostoje lieka reikšmė f(x)
Universali Tiuringo mašina Galima padaryti vieną – vienintelę fiksuotos struktūros mašiną U, turinčią tokią savybę: kiekvienai Tiuringo mašinai T egzistuoja tokia simbolių dT seka, kad: jeigu tuščioje juostoje vienetiniame kode duotas skaičius x, po jo yra seka dTir mašina U būsenoje q0pradeda darbą nuo kairiojo kraštinio dT simbolio, tai mašinai sustojus juostoje atsiranda skaičius f(x).
Universali Tiuringo mašina Mašina U modeliuoja mašinos T darbąnepriklausomai nuo pastarosios sudėtingumo Mašina T gali turėti žymiai daugiau būsenų, naudoti daugiau simbolių ar naudoti skirtingus simbolius Viskas, ko reikia mašinai U – tai simbolių sekos dT, ir ji apskaičiuos tą pačią funkciją, kaip ir mašina T Kas yra dT? Matyt, tai kažkoks būdas, kuriuo mašinoje U aprašoma mašina T
Universali Tiuringo mašina • Universaliai Tiuringo mašinai reikia: • mašinos T aprašo (juostoje), • simbolių sekos Sx aprašo, • darbinės zonos juostoje, • sugebėjimo teisingai interpretuoti mašinos T darbo taisykles
Universali Tiuringo mašina • Universalios Tiuringo mašinos darbas turėtų būti labai paprastas: • pagal žymę M nustatyti, kurioje juostos vietoje mašina T pradeda dirbti, • atsiminti mašinos būsenas, • skaityti iš imituojamos juostos, • penkiukių lentelėje surasti naują būseną, įrašomą simbolį ir judėjimo kryptį
Universali Tiuringo mašina Juostoje yra tokios keturios zonos:
Universali Tiuringo mašina • Pirmoji zona – begalinė į kairę pusę juosta yra darbinė zona, kurioje imituojama mašinos T juosta. Tam tikroje zonos vietoje yra žymė M, parodanti, kur tam tikru laiko momentu yra Tiuringo mašinos galvutė, • Antroji zona – mašinos T būsena • Trečioji zona – simbolis, kurį mašina T ką tik perskaitė arba kurį nori įrašyti • Ketvirtoji zona – mašinos T aprašas dT
Universali Tiuringo mašina • 2007 m. Birmingemo univ. studentas įrodė, kad Tiuringo mašina, turinti dvi būsenas ir trijų simbolių alfabetą, yra universali • Šį uždavinį suformulavo amerikiečių matematikas S.Wolfram, pažadėjęs 25 000 dolerių prizą • Žr.http://www.wolframscience.com/prizes/tm23/