Uvod u teoriju računarstva http://www.zemris.fer.hr/predmeti/utr/ Zadaci za vježbu Priprema za međuispit Fakultet elektrotehnike i računarstva Sveučilište u Zagrebu 1 od 60 Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović:
Download
Report
Transcript Uvod u teoriju računarstva http://www.zemris.fer.hr/predmeti/utr/ Zadaci za vježbu Priprema za međuispit Fakultet elektrotehnike i računarstva Sveučilište u Zagrebu 1 od 60 Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović:
Uvod u teoriju računarstva
http://www.zemris.fer.hr/predmeti/utr/
Zadaci za vježbu
Priprema za međuispit
Fakultet elektrotehnike i računarstva
Sveučilište u Zagrebu
1 od 60
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 9
• Konstruirati Mooreov automat koji ispisuje ostatak dijeljenja
oktalno zapisanog broja brojem 5.
•
•
•
Automat ima 5 stanja koja označavaju trenutne ostatke dijeljenja s 5
•
(qx) = x
Ulazne znakove grupiramo prema kongruentnosti s 5
Računamo funkciju prijelaza prema formuli:
•
ostatakn+1=(ostatakn*baza+znamenkan+1)%djelitelj
•
(qx, a) = q(x*8 + a)%5
2 od 60
0,5 1,6 2,7
3
4
q0
q0
q1
q2
q3
q4 0
q1
q3
q4
q0
q1
q2 1
q2
q1
q2
q3
q4
q0 2
q3
q4
q0
q1
q2
q3 3
q4
q2
q3
q4
q0
q1 4
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 9
• Formula za izračunavanje ostatka cjelobrojnog dijeljenja
•
Xn – broj učitan do koraka n
Xn = m * djelitelj + ostatakn
•
Xn+1 – broj učitan do koraka n+1
Xn+1 = Xn * baza + znamenkan+1
= (m * djelitelj + ostatakn) * baza + znamenkan+1
= m * djelitelj * baza + ostatakn * baza + znamenkan+1
•
ostatakn+1 = Xn+1 % djelitelj
= (m * djelitelj * baza + ostatakn * baza + znamenkan+1 ) % djelitelj
ostatak = 0
•
ostatakn+1 = (ostatakn * baza + znamenkan+1) % djelitelj
3 od 60
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 10
• Iz zadanog Mooreovog automata konstruirati Mealyev
automat.
4 od 60
q0
0,5 1,6 2,7 3 4
q0 q1 q2 q3 q4
0
q1
q3
q4
q0
q1 q2
1
q2
q3
q4
q1
q4
q2
q2
q0
q3
q3
q1
q4
q4 q0
q2 q3
q0 q1
2
3
4
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 10
•
Moore M1 = (Q, S, D, 1, 1, q0)
Pretvorba Moore Mealy
• 2(q,a) = 1(q,a)
• 2(q,a) = 1(1(q,a))
0,5
1,6
2,7
3
4
q0
q0
q1
q2
q3
q4
0
q1
q3
q4
q0
q1
q2
1
q2
q1
q2
q3
q4
q0
2
q3
q4
q0
q1
q2
q3
3
q4
q2
q3
q4
q0
q1
4
Mealy M2 = (Q, S, D, 2, 2, q0)
2
0,5 1,6 2,7
3
4
2
q0
q0
q1
q2
q3
q4
q0
0
1
q1
q3
q4
q0
q1
q2
q1
3
q2
q1
q2
q3
q4
q0
q2
q3
q4
q0
q1
q2
q3
q4
q2
q3
q4
q0
q1
5 od 60
0,5 1,6 2,7
3
4
2
3
4
4
0
1
2
1
2
3
4
0
q3
4
0
1
2
3
q4
2
3
4
0
1
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 11
• Iz zadanog Mealyevog automata konstruirati Mooreov
automat.
6 od 60
q0
0
q0
1
q3
q0
0
0
1
0
q1
q1
q3
q1
0
1
q2
q3
q2
q2
q1
q0
q2
q3
1
1
1
0
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 11
•
Mealy M1 = (Q1, S, D, 1, 1, q01)
Pretvorba Mealy Moore
• q02=[q01,0]
• 2([q,a],b)=[1(q,b), 1(q,b)]
• 2([q,a]) = a
1
0
1
1
0
1
q0
q0
q3
q0
0
0
q1
q1
q3
q1
0
1
q2
q2
q1
q2
1
1
q3
q2
q0
q3
1
0
Moore M2 = (Q2, S, D, 2, 2, q02)
2
0
[q0,0 [q0,0
[q3] ,0 [q2] ,1
]
]
[q2,1 [q2,1
[q ] ,1 [q ] ,0
1
7 od 60
1
1
2
[q3,0
[q ] ,0
0
0
]
[q1,1
[q ] ,1
3
0
1
1
[q1] ,0 [q1] ,0 [q3] ,1 0
[q3] ,1 [q2] ,1 [q0] ,0 1
]
]
]
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 12
• Konstruirati gramatiku nad abecedom {0,1,2} koja generira
nizove u kojima nema uzastopnog ponavljanja podniza 01.
•
Simuliramo rad automata koji prihvaća nizove u kojima nema
uzastopnog ponavljanja podniza “01”.
G=(V,T,P,S)
V={S,A,B,C}, T={0,1,2}
S 0A | 1S | 2S |
A 0A | 1B | 2S |
B 0C | 1S | 2S |
C 0A | 2S |
8 od 60
•
A označava da smo generirali “0”
•
B označava da smo generirali “01”
•
C označava da smo generirali “010”
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 13
• Na osnovu zadanog DKA konstruirati konteksno neovisnu
gramatiku.
q0
q1
a
q0
q2
b
q1
q0
c
q2
q1
1
0
q2
q1
q2
q0
0
DKA M = (Q, S, , q0, F)
G = (V, T, P, S)
•
•
•
•
V = Q, V q0S,q1A,q2B
T = S, S = q0
(A,x) = B AxB
AF A
9 od 60
S aS | bA | cB |
A aB | bS | cA
B aA | bB | cS
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
• Iz zadane lijevo-linearne gramatike konstruirati NKA.
SAc
SAab
SBa
ABb
Acab
ASb
BA
Bca
BAaba
Algoritam:
1. Konstruirati gramatiku G2 u kojoj su desne strane produkcija
napisane obrnuto od produkcija u gramatici G1
2. Iz gramatike G2 konstruirati gramatiku G3 u kojoj su sve
produkcije oblika AbC ili A
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
4. Konstruirati NKA M2 koji prihvaća nizove koji su obrnuto
napisani od onih koje prihvaća NKA M1
10 od 60
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
1. Konstruirati gramatiku G2 u kojoj su desne strane
produkcije napisane obrnuto od produkcija u gramatici G1
G1 = (V, T, P1, S)
SAc
SAab
SBa
G2 = (V, T, P2, S)
ScA
SbaA
SaB
11 od 60
ABb
Acab
ASb
AbB
Abac
AbS
BA
Bca
BAaba
BA
Bac
BabaA
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
2. Iz gramatike G2 konstruirati gramatiku G3 u kojoj su sve
produkcije oblika AbC ili A
G2 = (V2, T, P2, S)
•
•
•
ScA
SbaA
SaB
AbB
Abac
AbS
BA
Bac
BabaA
Riješe se desne strane produkcija koje ne završavaju nezavršnim znakom
• Dodajemo [] na kraj desnih strana, te produkciju []
Riješe se jedinične produkcije
Riješe se desne strane produkcija s više od dva znaka
G3 = (V3, T, P3, S)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
12 od 60
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
G3 = (V3, T, P3, S)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
13 od 60
Q=V, S=T, q0=S
AbC (A,b)=C
A AF
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
G3 = (V3, T, P3, S)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
14 od 60
Q=V, S=T, q0=S
AbC (A,b)=C
A AF
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
G3 = (V3, T, P3, S)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
c
S
A
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
15 od 60
Q=V, S=T, q0=S
AbC (A,b)=C
A AF
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
G3 = (V3, T, P3, S)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
c
S
A
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
16 od 60
Q=V, S=T, q0=S
AbC (A,b)=C
A AF
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
G3 = (V3, T, P3, S)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
aA
b
c
S
A
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
17 od 60
Q=V, S=T, q0=S
AbC (A,b)=C
A AF
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
G3 = (V3, T, P3, S)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
aA
b
c
S
A
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
18 od 60
Q=V, S=T, q0=S
AbC (A,b)=C
A AF
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
G3 = (V3, T, P3, S)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
aA
b
a
c
S
A
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
19 od 60
Q=V, S=T, q0=S
AbC (A,b)=C
A AF
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
G3 = (V3, T, P3, S)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
aA
b
a
c
S
A
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
20 od 60
Q=V, S=T, q0=S
AbC (A,b)=C
A AF
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
G3 = (V3, T, P3, S)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
aA
b
a
c
S
A
a
B
21 od 60
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
Q=V, S=T, q0=S
AbC (A,b)=C
A AF
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
G3 = (V3, T, P3, S)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
aA
b
a
c
S
A
a
B
22 od 60
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
Q=V, S=T, q0=S
AbC (A,b)=C
A AF
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
G3 = (V3, T, P3, S)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
aA
b
a
c
S
A
a
b
B
23 od 60
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
Q=V, S=T, q0=S
AbC (A,b)=C
A AF
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
G3 = (V3, T, P3, S)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
aA
b
a
c
S
A
a
b
B
24 od 60
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
Q=V, S=T, q0=S
AbC (A,b)=C
A AF
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
G3 = (V3, T, P3, S)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
aA
b
a
b
c
S
A
a
b
B
25 od 60
ac
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
Q=V, S=T, q0=S
AbC (A,b)=C
A AF
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
G3 = (V3, T, P3, S)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
aA
b
a
b
c
S
A
a
b
B
26 od 60
ac
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
Q=V, S=T, q0=S
AbC (A,b)=C
A AF
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
G3 = (V3, T, P3, S)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
aA
b
a
b
c
S
A
a
b
B
27 od 60
ac
a
c
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
Q=V, S=T, q0=S
AbC (A,b)=C
A AF
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
G3 = (V3, T, P3, S)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
aA
b
a
b
c
S
A
a
b
B
28 od 60
ac
a
c
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
Q=V, S=T, q0=S
AbC (A,b)=C
A AF
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
G3 = (V3, T, P3, S)
ScA
Sb[aA]
[aA]aA
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
aA
b
a
b
c
S
ac
A
a
c
a
b
B
29 od 60
c
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
Q=V, S=T, q0=S
AbC (A,b)=C
A AF
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
G3 = (V3, T, P3, S)
ScA
Sb[aA]
[aA]aA
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
aA
b
a
b
c
S
ac
A
a
c
a
b
B
30 od 60
c
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
Q=V, S=T, q0=S
AbC (A,b)=C
A AF
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
G3 = (V3, T, P3, S)
ScA
Sb[aA]
[aA]aA
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
aA
b
a
b
c
S
ac
A
b
a
c
b
B
31 od 60
a
c
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
Q=V, S=T, q0=S
AbC (A,b)=C
A AF
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
G3 = (V3, T, P3, S)
ScA
Sb[aA]
[aA]aA
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
aA
b
a
b
c
S
ac
A
b
a
c
b
B
32 od 60
a
c
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
Q=V, S=T, q0=S
AbC (A,b)=C
A AF
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
G3 = (V3, T, P3, S)
ScA
Sb[aA]
[aA]aA
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
aA
b
a
ac
b
c
S
A
a
b
c
a
b
B
c
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
Q=V, S=T, q0=S
AbC (A,b)=C
A AF
b
33 od 60
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
G3 = (V3, T, P3, S)
ScA
Sb[aA]
[aA]aA
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
aA
b
a
ac
b
c
S
A
a
b
c
a
b
B
c
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
Q=V, S=T, q0=S
AbC (A,b)=C
A AF
b
34 od 60
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
ScA
Sb[aA]
[aA]aA
G3 = (V3, T, P3, S)
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
aA
b
a
ac
b
c
S
A
b
b
a
b
B
a
c
c
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
Q=V, S=T, q0=S
AbC (A,b)=C
A AF
b
35 od 60
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
ScA
Sb[aA]
[aA]aA
G3 = (V3, T, P3, S)
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
aA
b
a
ac
b
c
S
A
b
b
a
b
B
a
c
c
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
Q=V, S=T, q0=S
AbC (A,b)=C
A AF
b
36 od 60
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
ScA
Sb[aA]
[aA]aA
G3 = (V3, T, P3, S)
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
aA
b
a
ac
b
c
S
A
b
b
a
b
b
B
a
c
c
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
Q=V, S=T, q0=S
AbC (A,b)=C
A AF
b
37 od 60
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
ScA
Sb[aA]
[aA]aA
G3 = (V3, T, P3, S)
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
aA
b
a
ac
b
c
S
A
b
b
a
b
b
B
a
c
c
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
Q=V, S=T, q0=S
AbC (A,b)=C
A AF
b
38 od 60
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
ScA
Sb[aA]
[aA]aA
G3 = (V3, T, P3, S)
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
aA
b
a
ac
b
c
S
A
b
b
a
b
b
c
c
a
B
a
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
Q=V, S=T, q0=S
AbC (A,b)=C
A AF
b
39 od 60
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
ScA
Sb[aA]
[aA]aA
G3 = (V3, T, P3, S)
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
aA
b
a
ac
b
c
S
A
b
b
a
b
b
c
c
a
B
a
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
Q=V, S=T, q0=S
AbC (A,b)=C
A AF
b
40 od 60
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
ScA
Sb[aA]
[aA]aA
G3 = (V3, T, P3, S)
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
aA
b
a
ac
b
c
S
A
b
b
a
b
b
c
c
a
B
a
a
baA
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
Q=V, S=T, q0=S
AbC (A,b)=C
A AF
b
41 od 60
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
ScA
Sb[aA]
[aA]aA
G3 = (V3, T, P3, S)
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
aA
b
a
ac
b
c
S
A
b
b
a
b
b
c
c
a
B
a
a
baA
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
Q=V, S=T, q0=S
AbC (A,b)=C
A AF
b
42 od 60
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
ScA
Sb[aA]
[aA]aA
G3 = (V3, T, P3, S)
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
aA
b
b
a
ac
b
c
S
A
b
b
b
c
c
a
B
a
b
a
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
a
baA
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
Q=V, S=T, q0=S
AbC (A,b)=C
A AF
b
43 od 60
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
ScA
Sb[aA]
[aA]aA
G3 = (V3, T, P3, S)
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
aA
b
b
a
ac
b
c
S
A
b
b
b
c
c
a
B
a
b
a
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
a
baA
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
Q=V, S=T, q0=S
AbC (A,b)=C
A AF
b
44 od 60
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
3. Konstruirati NKA M1 koji prihvaća nizove koje generira
gramatika G3
ScA
Sb[aA]
[aA]aA
G3 = (V3, T, P3, S)
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
aA
b
b
a
ac
b
c
S
A
b
b
b
c
c
a
B
a
b
a
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
a
baA
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
Q=V, S=T, q0=S
AbC (A,b)=C
A AF
b
45 od 60
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 14
4. Konstruirati NKA M2 koji prihvaća nizove koji su obrnuto
napisani od onih koje prihvaća NKA M1
aA
NKA M1 = (Q, S, 1, q01, F1)
b
a
S
A
b
b
b
a
B
ac
baA
c
c
a
b
a
b
a
b
ac
b
c
aA
b
a
b
b
c
A
S
b
b
a
b
b
b
46 od 60
c
c
a
B
a
a
baA
NKA M2 = (Q, S, 2, q02, F2)
• (A,b)=C (C,b)=A
• q02= F1
• F2 = q01
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 15
• Zadanu gramatiku G pretvoriti u lijevo-linearnu gramatiku.
SxyA
SyxB
SB
S
AS
Ay
BxS
Bx
Desno-linearna gramatika (DLG) generira niz slijeva na desno,
odnosno od početka prema kraju
S u1A1 u1u2A2 ... u1u2...unAn u1u2...unun+1
Lijevo-linearna gramatika (LLG) generira niz zdesna na lijevo,
odnosno od kraja prema početku
S B1v1 B2v2v1 ... Bnvn...v2v1 vn+1vn...v2v1
47 od 60
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 15
• Zadanu gramatiku G pretvoriti u lijevo-linearnu gramatiku.
SxyA
SyxB
SB
S
AS
Ay
BxS
Bx
Gramatika G desno-linearna gramatika
Zadatak konstruirati gramatiku koja generira nizove obrnutim smjerom
1. korak:
U skup nezavršnih znakova LLG dodaje se novi nezavršni znak F koji
započinje generiranje niza od kraja prema početku.
LLG=(VLLG,TLLG,PLLG,F)
VLLG= VDLG {F} = {S,A,B,F}
TLLG = TDLG
F je početni nezavršni znak u LLG
48 od 60
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 15
• Zadanu gramatiku G pretvoriti u lijevo-linearnu gramatiku.
SxyA
SyxB
SB
S
AS
Ay
BxS
Bx
2. korak:
Dodaju se prijelazi iz znaka F u sve nezavršne znakove koji na desnoj strani
imaju isključivo završne znakove ili -produkcije:
za A
FA
AV
za A a1a2...an
FA a1a2...an
AV, aiT
FS
FAy
FBx
49 od 60
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 15
• Zadanu gramatiku G pretvoriti u lijevo-linearnu gramatiku.
SxyA
SyxB
SB
S
AS
Ay
BxS
Bx
3. korak:
U svim ostalim produkcijama okrene se redosljed generiranja međunizova
tako da produkcije generiraju nizove od kraja prema početku:
za AB
BA
A,BV
za Aa1a2...anB
BA a1a2...an
A,BV, aiT
FS
FAy
FBx
50 od 60
SBx
SA
ASxy
BS
BSyx
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 15
• Zadanu gramatiku G pretvoriti u lijevo-linearnu gramatiku.
SxyA
SyxB
SB
S
AS
Ay
BxS
Bx
4. korak:
U skup produkcija LLG dodaje se produkcija S koja u LLG jedina završava
generiranje niza.
FS
FAy
FBx
51 od 60
SBx
SA
S
ASxy
BS
BSyx
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 15
• Zadanu gramatiku G pretvoriti u lijevo-linearnu gramatiku.
SxyA
SyxB
SB
S
AS
Ay
BxS
Bx
Dodatni (neobvezni) korak:
Zamjenom FS' i SF' dobiva se LLG u kojoj je S' početni nezavršni znak.
FS
FAy
FBx
SBx
SA
S
ASxy
BS
BSyx
S’F’
S’Ay
S’Bx
F’Bx
F’A
F’
AF’xy
BF’
BF’yx
52 od 60
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 16
• Izbaciti sve beskorisne znakove iz zadane gramatike.
SbAbE
BDC
DcDAaB
SaABc
Bad
DbDaE
AbeA
CeA
Eed
A
C
Eac
Postupak izbacivanja beskorisnih znakova:
a) Izbacivanje mrtvih znakova
b) Izbacivanje nedohvatljivih znakova
53 od 60
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 16
a) Izbacivanje mrtvih znakova
SbAbE
BDC
DcDAaB
SaABc
Bad
DbDaE
AbeA
CeA
Eed
A
C
Eac
Lista živih znakova: { a, b, c, d, e, E, C, B, A, S }
a) U listu živih znakova stavljamo završne znakove
b) Ako su s desne strane neke produkcije isključivo živi znakovi, u listu
živih znakova stavljamo nezavršni znak s lijeve strane produkcije
c) Ponavljamo korak b) dok se lista živih znakova mijenja
Lista mrtvih znakova: { D }
Izbacujemo produkcije koje sadrže mrtve znakove.
54 od 60
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 16
b) Izbacivanje nedohvatljivih znakova
SbAbE
A
C
SaABc
Bad
Eed
AbeA
CeA
Eac
Lista dohvatljivih znakova: { S, a, b, c, A, B, E, d, e }
a) U listu dohvatljivih znakova stavljamo početni nezavršni znak
b) Ako je s lijeve strane produkcije dohvatljivi znak, u listu dohvatljivih
znakova stavljamo znakove s desne strane produkcije
c) Ponavljamo korak b) dok se lista dohvatljivih znakova mijenja
Lista nedohvatljivih znakova: { C }
Izbacujemo produkcije koje sadrže nedohvatljive znakove.
55 od 60
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 16
•
Da su se prvo tražili dohvatljivi znakovi onda bi bilo:
SbAbE
BDC
DcDAaB
SaABc
Bad
DbDaE
AbeA
CeA
Eed
A
C
Eac
Lista dohvatljivih znakova: { S, b, A, E, a, B, c, e, D, C, d }
Nema nedohvatljivih znakova
Lista živih znakova: { E, C, B, A, S }
D je mrtav znak
Nije točno jer u gramatici ostaje znak C koji je nedohvatljiv!
56 od 60
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 17
• Iz zadane gramatike izbaciti jedinične i produkcije.
SxABz AzyA
ABC
BwC
CzxC
DyB
B
CD
D
Iterativno izbacujemo jedinične pa produkcije, budući da se
izbacivanjem produkcija mogu pojaviti nove jedinične
produkcije.
57 od 60
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 17
a) Izbacivanje jediničnih produkcija.
SxABz AzyA
ABC
BwC
CzxC
DyB
CyB
B
CD
D
C
Izbacujemo produkciju: CD
Supstitucija nezavršnog znaka D desnim stranama svih produkcija u
kojima je s lijeve strane nezavršni znak D
Nezavršni znak D je postao nedohvatljiv pa ga je moguće
izbaciti iz gramatike radi jednostavnosti
58 od 60
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 17
b) Izbacivanje produkcija.
SxABz AzyA
ABC
SxABz AzyA
SxAz
Azy
SxBz
ABC
Sxz
AB
BwC
CzxC
C
B
BwC
Bw
CyB
CzxC
Czx
CyB
Cy
AC
Izbacujemo produkcije: B, C, ABC
Prazni znakovi: { B, C, A }
Svaku produkciju koja sadrži n praznih znakova zamijenjujemo sa 2n
novih produkcija.
59 od 60
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 17
•
Izbacivanje jediničnih produkcija.
SxABz
SxAz
SxBz
AzyA
Azy
ABC
Sxz
AB
AC
BwC
Bw
CzxC
Czx
CyB
Cy
AwC
Aw
AzxC
Azx
AyB
Ay
Izbacujemo produkcije: AB, AC
Supstitucija nezavršnog znaka B desnim stranama svih produkcija u
kojima je s lijeve strane nezavršni znak B
Supstitucija nezavršnog znaka C desnim stranama svih produkcija u
kojima je s lijeve strane nezavršni znak C
60 od 60
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva