X - KTU - Kompiuterių katedra

Download Report

Transcript X - KTU - Kompiuterių katedra

KOMPIUTERIŲ TEORIJA
2 d. TIURINGO MAŠINOS
2.2 paskaita
Algoritmai ir Tiuringo mašina
Doc. Stasys Maciulevičius
[email protected]
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
2011-2013
©S.Maciulevičius
2
Š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ą




2011-2013
©S.Maciulevičius
3
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 skliaustai braukiami;
• procesas kartojamas, kol išbraukiamos visos poros.
Jei lieka neišbrauktų neporinių skliaustų – išraiška
neteisinga, jei nelieka – teisinga
2011-2013
©S.Maciulevičius
4
2. Išraiškų su skliaustais tikrinimas
Tiuringo mašinos aprašas:
qi
sj
qij
sij
dij
0
0
0
0
1
1
1
1
2
2
2
2
(
X
)
A
)
X
(
A
)
X
(
A
0
0
1
2
1
1
0
S
(
X
X
A
)
X
X
0
d
d
k
k
k
k
d
-
2
S
S
X
0
1
k
-
2011-2013
pastaba
išraiška neteisinga; daugiau “)”
negalima kombinacija
išraiška neteisinga; daugiau “(“
išraiška teisinga
©S.Maciulevičius
5
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ų “(“.
2011-2013
©S.Maciulevičius
6
2. Išraiškų su skliaustais tikrinimas
Paaiškinimas
• Poriniai skliaustai braukiami tol, kol:
o būsenoje q1 neberandamas porinis “(“,
pasiekiama kairioji A, spausdinamas 0 ir
sustojama – išraiška neteisinga;
o 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.
2011-2013
©S.Maciulevičius
7
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:
A ( ( ( ( ) ( ) ) ( ) ) ) A

Sprendimo metu kairėje užrašysime būsenos
indeksą (žalia spalva)
2011-2013
©S.Maciulevičius
8
2. Išraiškų su skliaustais
tikrinimas; eiga
A ( (
0
▲
(
(
)
(
)
)
(
)
)
)
A
A (
(
(
(
X (
▲
)
)
(
)
)
)
A
A (
(
(
X X (
▲
)
)
(
)
)
)
A
A (
(
(
X X (
X )
▲
(
)
)
)
A
1
0
1
2011-2013
©S.Maciulevičius
9
2. Išraiškų su skliaustais
tikrinimas; eiga
A ( ( ( X X X X ) ( ) ) ) A
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
▲
2011-2013
©S.Maciulevičius
10
2. Išraiškų su skliaustais
tikrinimas; eiga
A ( ( X X X X X X X X ) ) A
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
▲
2011-2013
©S.Maciulevičius
11
2. Išraiškų su skliaustais
tikrinimas; eiga
A X X X X X X X X X X X X A
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 ▲
2011-2013
©S.Maciulevičius
12
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
2011-2013
©S.Maciulevičius
13
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, kur X ir 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 - ):
q
2011-2013
X/Y
©S.Maciulevičius
p
14
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ė:
0
1
X
Y
B
q0
(q1,X, R)
-----
-----
(q3,Y, R)
-----
q1
(q1,0, R) (q2,Y, L)
-----
(q1,Y, R)
-----
q2
(q2,0, L)
-----
(q0,X, R) (q2,Y, L)
-----
q3
-----
-----
-----
q4
-----
-----
-----
2011-2013
©S.Maciulevičius
(q3,Y, R) (q4,B, R)
-----
----15
Eilutės 0n1n priėmimas: diagrama
Y/Y
0/0 
Pradžia
q0
0/X
Y/Y
q3
Y/Y
2011-2013
B/B
Y/Y
0/0 
1/Y
q1
q2
X/X
q4
0
1
X
Y
B
q0
(q1,X, R)
-----
-----
(q3,Y, R)
-----
q1
(q1,0, R) (q2,Y, L)
-----
(q1,Y, R)
-----
q2
(q2,0, L)
-----
(q0,X, R) (q2,Y, L)
-----
q3
-----
-----
-----
q4
-----
-----
-----
©S.Maciulevičius
(q3,Y, R) (q4,B, R)
-----
----16
Funkcijos reikš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ą.
2011-2013
©S.Maciulevičius
17
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:
0
A 1
.
m
2011-2013
.
1
B 1

.
.
1
A 0
0
0
0
n
©S.Maciulevičius
18
Būsenų diagrama
1/1 
B/B 
X/1 
0/0 
B/B 
0/0 
1/0
1/1 
A/A 
X/X 
A/A
X/X
A/A
1/X
Pradžia
q0
q1
q2
B/B
0/1 
1/X
A/A
q3
A/A
q4
2011-2013
X/X 
A/A 
©S.Maciulevičius
q5
q6 1/1 
19
Daugybos įtaiso darbo algoritmas
1/1 
B/B 
X/1 
0/0 
B/B 
0/0 
Pradžia
1/0
1/1 
A/A 
X/X 
A/A
X/X
A/A
q0
q1
1/X
q2
B/B
0/1 
1/X
A/A
q4
X/X 
A/A 
A/A
q5
q3
q6 1/1 
1. Galvutė juda kairėn, pirmąjį rastą 1 keičia į 0:
0
A 1
.
1
0
B 1
.
.
1
A 0
0
0
0

2011-2013
©S.Maciulevičius
20
Daugybos įtaiso darbo algoritmas
1/1 
B/B 
X/1 
0/0 
B/B 
0/0 
Pradžia
1/0
q0
A/A
X/X
A/A
q1
q2
B/B
1/X
X/X 
A/A 
q5
q3
0/1 
1/X
A/A
q4
1/1 
A/A 
X/X 
A/A
q6 1/1 
2. Juda dešinėn iki A, pakeliui visus X keičiant į 1
(pirmą kartą X-ų nėra):
0 A 1 .
2011-2013
1 0 B 1 .
.
©S.Maciulevičius
1 A 0 0 0 0

21
Daugybos įtaiso darbo algoritmas
1/1 
B/B 
X/1 
0/0 
B/B 
0/0 
Pradžia
1/0
q0
1/1 
A/A 
X/X 
A/A
X/X
A/A
q1
q2
B/B
1/X
q3
0/1 
1/X
A/A
q4
X/X 
A/A 
q5
A/A
q6 1/1 
3. Juda kairėn, pirmąjį rastą 1 pakeičia į X:
0
A 1
.
1
0
B 1
.
1
X A 0
0
0
0

2011-2013
©S.Maciulevičius
22
Daugybos įtaiso darbo algoritmas
1/1 
B/B 
X/1 
0/0 
B/B 
0/0 
Pradžia
1/0
q0
1/1 
A/A 
X/X 
A/A
X/X
A/A
q1
q2
B/B
1/X
q3
0/1 
1/X
A/A
q4
X/X 
A/A 
A/A
q5
q6 1/1 
4. Juda dešinėn iki pirmosios laisvos ląstelės (0) ir
įrašo į ją 1:
0
A 1
.
2011-2013
1
0
B 1
.
.
©S.Maciulevičius
X A 1

0
0
0
23
Daugybos įtaiso darbo algoritmas
1/1 
B/B 
X/1 
0/0 
B/B 
0/0 
Pradžia
1/0
A/A
X/X
A/A
q0
1/1 
A/A 
X/X 
q1
q2
B/B
q3
0/1 
1/X
A/A
q4
1/X
X/X 
A/A 
q5
A/A
q6 1/1 
5. Kartoja 3 ir 4 žingsnius, kol randa B:
0
A 1
.
1
0
B X .
.
X A 1
.
1
0

2011-2013
©S.Maciulevičius
24
Daugybos įtaiso darbo algoritmas
1/1 
B/B 
X/1 
0/0 
B/B 
0/0 
Pradžia
1/0
q0
1/1 
A/A 
X/X 
A/A
X/X
A/A
q1
q2
B/B
q3
0/1 
1/X
A/A
q4
1/X
X/X 
A/A 
q5
A/A
q6 1/1 
6. Kartoja nuo 1 žingsnio, kol randa kairįjį A ir sustoja:
0
A 0
.
.
0
B X .
.
X A 1
.
1
0

2011-2013
©S.Maciulevičius
25
Juosta po daugybos
0 A 0 . . 0 B X . . X A 1 . . 1 0 0

m
n
m*n
nulių
X –ų
vienetų
2011-2013
©S.Maciulevičius
26
Daugybos Tiuringo mašina jFLAP
2011-2013
©S.Maciulevičius
27
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
©S.Maciulevičius
28
Dar vienas Tiuringo mašinos
imitatorius



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
2011-2013
©S.Maciulevičius
29
Tiuringo mašinos imitatorius
2011-2013
©S.Maciulevičius
30
Tiuringo mašinos imitatorius



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
2011-2013
©S.Maciulevičius
31
Tiuringo mašinos imitatorius
2011-2013
©S.Maciulevičius
32
Tiuringo mašinos imitatorius dirba
2011-2013
©S.Maciulevičius
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
©S.Maciulevičius
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ų
2011-2013
©S.Maciulevičius
35
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
2011-2013
©S.Maciulevičius
36
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ų
2011-2013
©S.Maciulevičius
37
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ą
2011-2013
©S.Maciulevičius
38
Daugelio juostų TM
> a a b
b
…
> a b b
a
…
> b a a
b
…
2011-2013
©S.Maciulevičius
39
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
2011-2013
©S.Maciulevičius
40
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
2011-2013
©S.Maciulevičius
41
Universali Tiuringo mašina
Nagrinėdami įvairias Tiuringo mašinas
matėme, kad pradžioje juostoje būdavo
kažkokia informacija, o mašinai sustojus
juostoje likdavo skaičiavimų rezultatas,
priklausantis nuo pradinės informacijos ir
nuo Tiuringo mašinos tipo
2011-2013
©S.Maciulevičius
42
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)
2011-2013
©S.Maciulevičius
43
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 dT ir
mašina U būsenoje q0 pradeda darbą nuo
kairiojo kraštinio dT simbolio, tai mašinai
sustojus juostoje atsiranda skaičius f(x).
2011-2013
©S.Maciulevičius
44
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
2011-2013
©S.Maciulevičius
45
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
2011-2013
©S.Maciulevičius
46
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į
2011-2013
©S.Maciulevičius
47
Universali Tiuringo mašina
Juostoje yra tokios keturios zonos:
…
M
Mašinos T juosta
2011-2013
q(t)
s(t)
T simbolis
T
būsena
©S.Maciulevičius
dT
Mašinos T
aprašas
(penkiukės)
48
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
2011-2013
©S.Maciulevičius
49
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/
2011-2013
©S.Maciulevičius
50
Tiuringo mašina
• Internete galima rasti įdomių uždavinių,
sprendžiamų naudojant Tiuringo mašinas
• Pavyzdžiui, Conway's Game of Life
http://psoup.math.wisc.edu/Life32.html
2011-2013
©S.Maciulevičius
51
Conway's Game of Life



Game of Life aplinka – begalinis dvimatis
stačiakampis ląstelių masyvas
Kiekviena ląstelė turi dvi būsenas – gyva
ar mirusi
Kiekviena ląstelė bendrauja su 8
kaimynėmis, kurios jos atžvilgiu yra
gretimos pagal horizontalę, vertikalę ar
įstrižainę
2011-2013
©S.Maciulevičius
52
Conway's Game of Life

Kiekviename žingsnyje galimi tokie
pasikeitimai:




Jei bet kuri gyva ląstelė turi mažiau nei dvi gyvas
kaimynes, ji miršta; tokiu būdu populiacija mažėja
Jei bet kuri gyva ląstelė turi dvi arba tris gyvas
kaimynes, ji lieka gyventi (iki kito žingsnio)
Jei bet kuri gyva ląstelė turi daugiau nei tris gyvas
kaimynes, ji miršta; atseit, galimas perkrovimas
Jei bet kuri mirusi ląstelė turi tiksliai tris gyvas
kaimynes, ji atgyja (reprodukcija)
2011-2013
©S.Maciulevičius
53
Conway's Game of Life



Pradinė sistemos būsena duota
Tuo pačiu momentu šios taisyklės
taikomos kiekvienai ląstelei, taip gaunant
pirmąją kartą – turime sinchronizuotą
darbą
Kiekviena sekanti karta formuojama
analogiškai pagal ankstesniąją kartą
2011-2013
©S.Maciulevičius
54
Apie koliokviumą (11.22)
• Tematika – BA kalbų analizei
• Teoriniai klausimai – trumpi (sąvokos,
apibrėžimai, savybės, ...) – sąlyginai vertinami
balais nuo 1 iki 2
• Uždaviniai – įvairaus sudėtingumo – sąlyginai
vertinami balais nuo 1 iki 3 (balai nurodomi
skliausteliuose)
2011-2013
©S.Maciulevičius
55
Namų darbas - komentarai

a
Sąlyga
b
a
a
a
b
b
a
b
b

Rezultatas

(aUb)*a* U a* U b*a* U (abba)*a* U (abbab)*a* U
aba* U bba* U (babb)*ba* U (babba)*a* U ba* U
bba* U bb(abb)* U bbba* U b*ab
©S.Maciulevičius
Namų darbas - komentarai





E(q0) = {q0}
E(q1) = {q1}
E(q2) = {q2, q3}
E(q3) = {q3}
E(q4) = {q4}
q1
q2
b
q3
e
b
a
a
a
a
b
b
q0
©S.Maciulevičius
q4
Namų darbas - komentarai
q1
s'= {q0}
sigma({q0},a) = E(q3) = {q3} b
sigma({q0},b) = E(q1) = {q1}
sigma({q1},b) = E(q2) U E(q1) =
{q1, q2, q3}
sigma({q2},a) = E(q0) = {q0}
sigma({q3},a) = E(q4) = {q4}
sigma({q4},a) = E(q2) = {q2, q3}
sigma({q4},b) = E(q0) = {q0}
O sigma({q1},a)???
O sigma({q1,q2,q3},a)??? Ir t.t.
q2
b
q3
e
a
a
a
a
b
©S.Maciulevičius
b
q4
q0





E(q0) = {q0}
E(q1) = {q1}
E(q2) = {q2, q3}
E(q3) = {q3}
E(q4) = {q4}
Namų darbas - komentarai
Užrašykite reguliariąsias išraiškas eilučių, kurios
apibūdintos šitaip (laikykite, kad Σ = {a, b}):
d) { {a, b}*: eilutėje  yra nelyginis a
skaičius ir lyginis b skaičius};
Rezultatas
M = (bb)* U a U (aaa)*
Patarimas:
•
•
nelyginis a skaičius:
lyginis b skaičius:
a …. (aa)*
(b …. b …)*
©S.Maciulevičius
Namų darbas - komentarai
Panaudokite algoritmą A šiai reguliariajai
išraiškai transformuoti į BA:
a(aa U b)* (a*b U b)*ab*
©S.Maciulevičius
Namų darbas - komentarai
a
a(aa U b)* (a*b U
b)*ab*
a
e
e
e
a
e
e
e
b
e
a
Komentaras:
atskiri automatai
(a, (aaUb) )geri, kiti – ne; ir
sujungimas ne
toks!!!!
a
e
e
b
e
e
e
b
b
a
©S.Maciulevičius
e
b
Namų darbas - komentarai
b
a
a
2
1
b
4
b
5
a
a
b


a

a
3
6
a
b
a
ab
2
1
b
a
b
3
a
5
a
aa
6
a
©S.Maciulevičius
1-4 = aa
1-3 = ab
1-6 = aa
O pagal paveikslą
naikinat 4
viršūnę, o ne 2
Prašau,
paveikslus
“sugrupuokite”
Namų darbas - komentarai
b
a
2
1
b
4
a
b
3
a
b
a
5
a
a
6
a
(a(abb)*a) U aa U (ab U b)a*a
Man atrodo, sprendimas nepilnas
©S.Maciulevičius
Apie koliokviumą (11.22)
Teoriniai klausimai:
• (1) Nurodykite nedeterministinio baigtinio
automato požymius
• (1) Ką reiškia e lankas BA?
• (1) Ką vadiname NDBA konfigūracija?
• (2) Kas yra aibės E(p) ir kaip jos nustatomos?
• (1) Kaip sukabinami du baigtiniai automatai A ir B?
• (1) Kokią išraišką vadinsime taisykle?
2011-2013
©S.Maciulevičius
64
Apie koliokviumą (11.22)
Uždaviniai
• Kokią kalbą priima duotasis automatas. Ar tai DBA, ar
NDBA? Kodėl? (2+1)
•
Sukonstruokite BA, kuris priimtų eilutes, aprašomas
išraiška ....... (2)
•
Panaudokite algoritmą A reguliariai išraiškai .......
transformuoti į BA. Paaiškinkite algoritmo esmę ir jo
žingsnius. (3)
•
Išnagrinėkite gramatiką {...... }. Parodykite, kaip
išvedama eilutė a...... Nubraižykite sintaksinės analizės
medį. Ar gali būti išvedama eilutė a.....? (3)
2011-2013
©S.Maciulevičius
65