You are on page 1of 21

Tiuringo mašina

1 laboratorinis darbas

Dėstytojas: lekt. Rokas Štrimaitis


Alan Mathison Turing
 Matematikas, logikas, kriptografas, filosofas ir maratonų
bėgikas.
 Vadovavo komandai iššifravusiai Enigmos kodą.
 Dirbtinio intelekto pradinikas (Tiuringo testas).
 „Computer sience“ tėvas, prasidėjo prie algoritmo
sąvokos; universalios mašinos koncepcija; software ir
t.t..

1912.06.23 – 1954.06.07
 Filmai: Codebreaker ir The Imitation Game.

https://www.youtube.com/watch?v=gtRLmL70TH0&
Tiuringo mašina

 Tuo metu skaičiavimus atlikdavo


žmonės kompiuteriai; mašinos
buvo skirtos atlikti vieną funkciją;
didelių gabaritų kompiuteriai.
 Universalios mašinos koncepcija.
Tiuringo mašina

 Ar egzistuoja algoritmas, kuriam pateikus pradines aksiomas, per baigtinį


laiką grąžintų rezultatą „taip“ arba „ne“ ? (ar programa visada sustos.
Halting problem).
 Turingas sukurdamas Turingo mašinas įrodė, kad to padaryti neįmanoma
(Church-Turing tezė).

 Pvz: Ar X dalinasi iš Y ?
x^n+y^n=z^n
Tiuringo mašina

 Hipotetinės skaičiavimų (angl. computing) mašinos matematinis modelis.


 Formalus aprašymas:
M= (Q,Γ,Σ,b,q0,F,δ);
Q – baigtinė būsenų aibė;
Γ – baiginė juostos abėcėlės aibė;
Σ⊆ Γ – baigtinė įvesties abėcėlė (visi simboliai, kuriuos galima įvesti);
b ∈ Γ – „tuščias simbolis“, kuriuo užpildomi visi tušti langeliai;
q 0 ∈ Q – pradinė būsena;
F ⊆ Q – galutinių arba priimamų būsenų aibė;
δ : ( Q ∖ F ) × Γ →Q × Γ × { L , R } – perėjimo funkcija; L – kairėn, R – dešinėn.
Tiuringo mašinos komponentai

 Begalinė Juosta, padalinta į langelius, kurie yra užpildyti aprašytos


abėcėlės simboliais.
 Galvutė – įrenginys galintis skaityti/rašyti/judėti.
 Būsenų registras – reikšmė pateikta ir saugoma saugykloje.
 Programa – 5 stulpelių lentelė, kurioje nurodyta ką Tiuringo mašina turi
atlikti.
Juosta ir galvutė
 Pusiau begalinė juosta: turi pradžią, bet neturi pabaigos.
 Ji padalinta į langelius, kurie yra užpildyti apibrėžtais galimais simboliais ir
tuščiu simboliu.
 Galvutė yra įrenginys, kuris nuskaito ir įrašo simbolius, bei juda juosta
kairėn arba dešinėn.
Būsenų registras
 Saugo Tiuringo mašinos būseną.
 Būsenų skaičius yra baigtinis.
 Pradinė būsena turi būti visada apibrėžta.
 Būsenos keičiamos tol, kol yra vykdoma programa.
Programos notacija
Esama būsena Esamas simbolis Naujas simbolis Kryptis Nauja būsena

 Esama būsena – būsenos pavadinimas (pvz.: 0, 1, 2).


 Esamas simbolis – juostoje esantis simbolis ties galvutės pozicija.
 Naujas simbolis – jis bus įrašytas į juostą.
 Kryptis – kairė (L), dešinė (R).
 Nauja būsena – naujos būsenos pavadinimas.
 Tiuringo mašina yra deterministinė, todėl kiekvienai būsenai, turi būti aprašyti
visi galimi variantai.
Tiuringo mašina

 Pirmoji mašina gebanti atlikti kelias funkcijas, kurias nustato programa


laikoma atminties saugykloje – UTM. (Software idėja)
 Gali išspręsti visus algoritmus, kuriuos išsprendžia dabartiniai
kompiuteriai, tik gerokai lėčiau.
 Skiriasi nuo dabartinių kompiuterių, bet pats „computing“ labai panašus
(dabartiniai kompiuteriai naudoja von Neumann architektūrą).
 Vis dar naudojama mokymuose ir tyrimuose, nes paprastas būdas
parodyti, kas vyksta procesoriuje.
Pavyzdys nr. 1.
 Turime bet kokį dvejatainį skaičių. Γ =Σ { 0,1} ∪ {b }
 Tiuringo mašina suranda paskutinį dvejetainio skaičiaus skaitmenį ir 0 pakeičia į 1, o 1 - į nulį.

1 0 1 1 b b b ...
q0

Esama būsena Esamas simbolis Naujas simbolis Kryptis Nauja būsena

q0 0 0 R q0
q0 1 1 R q0
q0 b b L q1
q1 0 1 R qf = HALT
q1 1 0 R qf = HALT
q1 b b R qf = HALT
Pavyzdys nr. 1.
 Turime bet kokį dvejatainį skaičių. Γ =Σ { 0,1} ∪ {b }
 Tiuringo mašina suranda paskutinį dvejetainio skaičiaus skaitmenį ir 0 pakeičia į 1, o 1 - į nulį.

1 0 1 1 b b b ...
q0

Esama būsena Esamas simbolis Naujas simbolis Kryptis Nauja būsena

q0 0 0 R q0
q0 1 1 R q0
q0 b b L q1
q1 0 1 R qf = HALT
q1 1 0 R qf = HALT
q1 b b R qf = HALT
Pavyzdys nr. 1.
 Turime bet kokį dvejatainį skaičių. Γ =Σ { 0,1} ∪ {b }
 Tiuringo mašina suranda paskutinį dvejetainio skaičiaus skaitmenį ir 0 pakeičia į 1, o 1 - į nulį.

1 0 1 1 b b b ...
q0

Esama būsena Esamas simbolis Naujas simbolis Kryptis Nauja būsena

q0 0 0 R q0
q0 1 1 R q0
q0 b b L q1
q1 0 1 R qf = HALT
q1 1 0 R qf = HALT
q1 b b R qf = HALT
Pavyzdys nr. 1.
 Turime bet kokį dvejatainį skaičių. Γ =Σ { 0,1} ∪ {b }
 Tiuringo mašina suranda paskutinį dvejetainio skaičiaus skaitmenį ir 0 pakeičia į 1, o 1 - į nulį.

1 0 1 1 b b b ...

q0

Esama būsena Esamas simbolis Naujas simbolis Kryptis Nauja būsena

q0 0 0 R q0
q0 1 1 R q0
q0 b b L q1
q1 0 1 R qf = HALT
q1 1 0 R qf = HALT
q1 b b R qf = HALT
Pavyzdys nr. 1.
 Turime bet kokį dvejatainį skaičių. Γ =Σ { 0,1} ∪ {b }
 Tiuringo mašina suranda paskutinį dvejetainio skaičiaus skaitmenį ir 0 pakeičia į 1, o 1 - į nulį.

1 0 1 1 b b b ...

q0

Esama būsena Esamas simbolis Naujas simbolis Kryptis Nauja būsena

q0 0 0 R q0
q0 1 1 R q0
q0 b b L q1
q1 0 1 R qf = HALT
q1 1 0 R qf = HALT
q1 b b R qf = HALT
Pavyzdys nr. 1.
 Turime bet kokį dvejatainį skaičių. Γ =Σ { 0,1} ∪ {b }
 Tiuringo mašina suranda paskutinį dvejetainio skaičiaus skaitmenį ir 0 pakeičia į 1, o 1 - į nulį.

1 0 1 1 b b b ...

q0

Esama būsena Esamas simbolis Naujas simbolis Kryptis Nauja būsena

q0 0 0 R q0
q0 1 1 R q0
q0 b b L q1
q1 0 1 R qf = HALT
q1 1 0 R qf = HALT
q1 b b R qf = HALT
Pavyzdys nr. 1.
 Turime bet kokį dvejatainį skaičių. Γ =Σ { 0,1} ∪ {b }
 Tiuringo mašina suranda paskutinį dvejetainio skaičiaus skaitmenį ir 0 pakeičia į 1, o 1 - į nulį.

1 0 1 1 b b b ...
q1

Esama būsena Esamas simbolis Naujas simbolis Kryptis Nauja būsena

q0 0 0 R q0
q0 1 1 R q0
q0 b b L q1
q1 0 1 R qf = HALT
q1 1 0 R qf = HALT
q1 b b R qf = HALT
Pavyzdys nr. 1.
 Turime bet kokį dvejatainį skaičių. Γ =Σ { 0,1} ∪ {b }
 Tiuringo mašina suranda paskutinį dvejetainio skaičiaus skaitmenį ir 0 pakeičia į 1, o 1 - į nulį.

1 0 1 0 b b b ...
qf

Esama būsena Esamas simbolis Naujas simbolis Kryptis Nauja būsena

q0 0 0 R q0
q0 1 1 R q0
q0 b b L q1
q1 0 1 R qf = HALT
q1 1 0 R qf = HALT
q1 b b R qf = HALT
Pavyzdys nr. 2.
 Turime bet kokį dvejatainį skaičių. Γ =Σ { 0,1} ∪ {b }
 Tiuringo mašina prideda 1 prie betkokio dvejetainio skaičiaus.

... b b 1 0 1 1 b b ...
Kokia problema yra su
q0 šia programa?

Esama būsena Esamas simbolis Naujas simbolis Kryptis Nauja būsena

q0 0 0 R q0
q0 1 1 R q0
q0 b b L q1
q1 0 1 L qf = HALT
q1 1 0 L q1
q1 b 1 L qf = HALT
http://morphett.info/turing/turing.html

Užduotis
 Dvejetainis skaitliukas.
0 0 0 0 0 0 X 0

Esama Esamas Naujas Kryptis Nauja


būsena simbolis simbolis būsena
0 0 0 R 0
0 1 1 R 0
0 X X L 1
1 0 1 R 0
1 1 0 L 1
1 laboratorinis darbas

 Suprogramuokite universalią Turingo mašiną,


galinčią vykdyti programą iš failo. Failo formatas:
• 1 eilutė. Galvutės pozicija juostoje.
• 2 eilutė. Juosta.
• 3 eilutė. Programa.
 Mašina visada pradeda darbą būdama „0”
būsenos.
 Mašina nepakeista – t. y. neperkompiliuota turi
vykdyti bet kurią iš 4 duotų programų, failo
pavadinimą gaudama kaip parametrą.

You might also like