1 / 65

KOMPIUTERIŲ TEORIJA

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

sanjiv
Download Presentation

KOMPIUTERIŲ TEORIJA

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. KOMPIUTERIŲ TEORIJA 2 d. TIURINGO MAŠINOS 2.2 paskaita Algoritmai irTiuringo mašina Doc. Stasys Maciulevičius stasys@ecdl.lt

  2. 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

  3. Š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ą

  4. 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

  5. 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:

  6. 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ų “(“.

  7. 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.

  8. 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)

  9. 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 ▲

  10. 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 ▲

  11. 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 ▲

  12. 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 ▲

  13. 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

  14. 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 - ):

  15. 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ė:

  16. 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

  17. 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ą.

  18. 0 A 1 . . 1 B 1 . . 1 A 0 0 0 0 mn 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:

  19. 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

  20. 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

  21. 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

  22. 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

  23. 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

  24. 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

  25. 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

  26. 0 A 0 . . 0 B X . . X A 1 . . 1 0 0 Juosta po daugybos mnm*n nulių X –ų vienetų

  27. Daugybos Tiuringo mašina jFLAP

  28. 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

  29. 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

  30. Tiuringo mašinos imitatorius 2011-2013 30

  31. 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

  32. Tiuringo mašinos imitatorius 2011-2013 32

  33. Tiuringo mašinos imitatorius dirba 2011-2013 33

  34. 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

  35. 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ų

  36. 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

  37. 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ų

  38. 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ą

  39. … … > > > a a b b a a a b b a b b Daugelio juostų TM

  40. 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

  41. 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

  42. 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

  43. 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)

  44. 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).

  45. 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

  46. 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

  47. 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į

  48. Universali Tiuringo mašina Juostoje yra tokios keturios zonos:

  49. 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

  50. 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/

More Related