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  q0S,q1A,q2B
T = S, S = q0
(A,x) = B  AxB
AF  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.
SAc
SAab
SBa
ABb
Acab
ASb
BA
Bca
BAaba
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 AbC 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)
SAc
SAab
SBa
G2 = (V, T, P2, S)
ScA
SbaA
SaB
11 od 60
ABb
Acab
ASb
AbB
Abac
AbS
BA
Bca
BAaba
BA
Bac
BabaA
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 AbC ili A
G2 = (V2, T, P2, S)
•
•
•
ScA
SbaA
SaB
AbB
Abac
AbS
BA
Bac
BabaA
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)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
12 od 60
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[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)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
13 od 60
Q=V, S=T, q0=S
AbC  (A,b)=C
A  AF
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)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
14 od 60
Q=V, S=T, q0=S
AbC  (A,b)=C
A  AF
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)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
c
S
A
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
15 od 60
Q=V, S=T, q0=S
AbC  (A,b)=C
A  AF
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)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
c
S
A
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
16 od 60
Q=V, S=T, q0=S
AbC  (A,b)=C
A  AF
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)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[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
AbC  (A,b)=C
A  AF
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)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[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
AbC  (A,b)=C
A  AF
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)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[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
AbC  (A,b)=C
A  AF
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)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[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
AbC  (A,b)=C
A  AF
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)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[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
AbC  (A,b)=C
A  AF
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)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[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
AbC  (A,b)=C
A  AF
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)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[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
AbC  (A,b)=C
A  AF
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)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[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
AbC  (A,b)=C
A  AF
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)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[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
AbC  (A,b)=C
A  AF
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)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[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
AbC  (A,b)=C
A  AF
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)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[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
AbC  (A,b)=C
A  AF
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)
ScA
Sb[aA]
[aA]aA
SaB
AbB
Ab[ac]
[ac]a[c]
[c]c[]
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[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
AbC  (A,b)=C
A  AF
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)
ScA
Sb[aA]
[aA]aA
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[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
AbC  (A,b)=C
A  AF
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)
ScA
Sb[aA]
[aA]aA
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[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
AbC  (A,b)=C
A  AF
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)
ScA
Sb[aA]
[aA]aA
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[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
AbC  (A,b)=C
A  AF
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)
ScA
Sb[aA]
[aA]aA
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[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
AbC  (A,b)=C
A  AF
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)
ScA
Sb[aA]
[aA]aA
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[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
AbC  (A,b)=C
A  AF
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)
ScA
Sb[aA]
[aA]aA
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[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
AbC  (A,b)=C
A  AF
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
ScA
Sb[aA]
[aA]aA
G3 = (V3, T, P3, S)
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[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
AbC  (A,b)=C
A  AF
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
ScA
Sb[aA]
[aA]aA
G3 = (V3, T, P3, S)
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[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
AbC  (A,b)=C
A  AF
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
ScA
Sb[aA]
[aA]aA
G3 = (V3, T, P3, S)
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[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
AbC  (A,b)=C
A  AF
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
ScA
Sb[aA]
[aA]aA
G3 = (V3, T, P3, S)
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[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
AbC  (A,b)=C
A  AF
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
ScA
Sb[aA]
[aA]aA
G3 = (V3, T, P3, S)
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[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
AbC  (A,b)=C
A  AF
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
ScA
Sb[aA]
[aA]aA
G3 = (V3, T, P3, S)
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[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
AbC  (A,b)=C
A  AF
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
ScA
Sb[aA]
[aA]aA
G3 = (V3, T, P3, S)
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[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
AbC  (A,b)=C
A  AF
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
ScA
Sb[aA]
[aA]aA
G3 = (V3, T, P3, S)
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[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
AbC  (A,b)=C
A  AF
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
ScA
Sb[aA]
[aA]aA
G3 = (V3, T, P3, S)
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
aA
b
b
a
ac
b
c
S
A
b
b
b
c
c
a
B

a
b
a
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
a
baA
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
Q=V, S=T, q0=S
AbC  (A,b)=C
A  AF
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
ScA
Sb[aA]
[aA]aA
G3 = (V3, T, P3, S)
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
aA
b
b
a
ac
b
c
S
A
b
b
b
c
c
a
B

a
b
a
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
a
baA
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
Q=V, S=T, q0=S
AbC  (A,b)=C
A  AF
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
ScA
Sb[aA]
[aA]aA
G3 = (V3, T, P3, S)
AbB
Ab[ac]
[ac]a[c]
[c]c[]
SaB
AbS
aA
b
b
a
ac
b
c
S
A
b
b
b
c
c
a
B

a
b
a
BbB
[]
Bb[ac]
BbS
Ba[c]
Ba[baA]
[baA]b[aA]
a
baA
NKA M1 = (Q, S, 1, q01, F1)
•
•
•
Q=V, S=T, q0=S
AbC  (A,b)=C
A  AF
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.
SxyA
SyxB
SB
S
AS
Ay
BxS
Bx
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.
SxyA
SyxB
SB
S
AS
Ay
BxS
Bx
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.
SxyA
SyxB
SB
S
AS
Ay
BxS
Bx
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

FA
AV
za A a1a2...an 
FA a1a2...an
AV, aiT
FS
FAy
FBx
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.
SxyA
SyxB
SB
S
AS
Ay
BxS
Bx
3. korak:
U svim ostalim produkcijama okrene se redosljed generiranja međunizova
tako da produkcije generiraju nizove od kraja prema početku:
za AB
 BA
A,BV
za Aa1a2...anB
 BA a1a2...an
A,BV, aiT
FS
FAy
FBx
50 od 60
SBx
SA
ASxy
BS
BSyx
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 15
• Zadanu gramatiku G pretvoriti u lijevo-linearnu gramatiku.
SxyA
SyxB
SB
S
AS
Ay
BxS
Bx
4. korak:
U skup produkcija LLG dodaje se produkcija S koja u LLG jedina završava
generiranje niza.
FS
FAy
FBx
51 od 60
SBx
SA
S
ASxy
BS
BSyx
Copyright © 2007 S.Srbljić, D.Škvorc, A.Milanović: Uvod u teoriju računarstva
Zadatak br. 15
• Zadanu gramatiku G pretvoriti u lijevo-linearnu gramatiku.
SxyA
SyxB
SB
S
AS
Ay
BxS
Bx
Dodatni (neobvezni) korak:
Zamjenom FS' i SF' dobiva se LLG u kojoj je S' početni nezavršni znak.
FS
FAy
FBx
SBx
SA
S
ASxy
BS
BSyx
S’F’
S’Ay
S’Bx
F’Bx
F’A
F’
AF’xy
BF’
BF’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.
SbAbE
BDC
DcDAaB
SaABc
Bad
DbDaE
AbeA
CeA
Eed
A
C
Eac
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
SbAbE
BDC
DcDAaB
SaABc
Bad
DbDaE
AbeA
CeA
Eed
A
C
Eac
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
SbAbE
A
C
SaABc
Bad
Eed
AbeA
CeA
Eac
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:
SbAbE
BDC
DcDAaB
SaABc
Bad
DbDaE
AbeA
CeA
Eed
A
C
Eac
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.
SxABz AzyA
ABC
BwC
CzxC
DyB
B
CD
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.
SxABz AzyA
ABC
BwC
CzxC
DyB
CyB
B
CD
D
C
Izbacujemo produkciju: CD
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.
SxABz AzyA
ABC
SxABz AzyA
SxAz
Azy
SxBz
ABC
Sxz
AB
BwC
CzxC
C
B
BwC
Bw
CyB
CzxC
Czx
CyB
Cy
AC
Izbacujemo produkcije: B, C, ABC
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.
SxABz
SxAz
SxBz
AzyA
Azy
ABC
Sxz
AB
AC
BwC
Bw
CzxC
Czx
CyB
Cy
AwC
Aw
AzxC
Azx
AyB
Ay
Izbacujemo produkcije: AB, AC
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