Professional Documents
Culture Documents
Düzenli Gramerler
Düzenli Gramerler
S Ab
S aSb A aAb
A
S
1
Lineer Olmayan Bir Gramer Örneği
Gramer G: S SS
S
S aSb
S bSa
Yukarıdaki G grameri 4 tane production dan oluşuyor. İlk production’ın sağ tarafında
birden fazla variable var. (2 tane S var) Bu yüzden G grameri lineer değildir. Kurala
uymayan bir production varsa, diğer productionlara bakmaya gerek yoktur. O gramer artık
lineer olamaz.
L(G ) {w : na ( w) nb ( w)}
Gramer G: SA
A aB |
B Ab
n n
L(G ) {a b : n 0}
Yukarıda toplam 4 production vardır. Ama 2 numaralı production kendi içinde 2 tane
production içeriyor. ‘|’ veya anlamına gelir. İsterseniz | operatörünü kullanmayıp, bu 2
productionı alt alta da yazabiliriz. Hatta bu 4 productionu tek bir satıra da yazabiliriz. (|
operatörleri ile ayırarak)
3
Sağ Lineer Gramer
Örn: Terminallerde
S Aab Oluşan kelime
A Aab | B
Ba
5
Sol Lineer Gramer
Örn:
Aşağıdaki örnekte toplam 4 production vardır. 3 numaralı production
(AB) aslında hem sağ hem de sol lineer bir production dır. İşimize
geldiği gibi değerlendirebiliriz. Programlamaya Giriş dersinden CFG
leri hatırlarsanız, kelime türetmeye S’den başlarız. Yani, S start
(başlangıç) anlamına gelir. Eğer hatırlamıyorsanız; ilk önce CFG
bilgilerinizi tazelemeniz gerekmektedir.
S Aab
A Aab | B
Ba
6
Düzenli Gramerler
7
Düzenli Gramerler
Bir CFG sağ lineer veya sol lineer ise bu
CFG’ye düzenli gramer denir.
Örnekler:
G1 G2
S abS S Aab
S a A Aab | B
Ba
8
Gözlem
Düzenli bir gramerin oluşturduğu kelimeler bir küme ise bu küme düzenli bir dildir. Ya da,
başka bir deyişle, düzenli gramerler düzenli diller oluştururlar. E tabi ki, düzenli dil de
daha önceden bildiğimiz gibi RE’si olan bir dildir. (Hatta DFA ve NFAsı bile vardır)
Örnekler:
G1 G2
S Aab
S abS
A Aab | B
S a
Ba
10
Teorem – Bölüm 1
11
Teorem – Bölüm 2
12
İspat – Bölüm 1
13
Sağ Lineer Gramer Durumu
14
Gramer G sağ lineer olsun.
Örnek: S aA | B
A aa B
Bb B|a
15
Öyle bir M NFA sı yapalım ki;
CFG nin her bir değişkeni (variable) bu NFA’da state olsun. Bir tane de
extradan final ekleyelim. Final durumu CFG’deki değişkenlerden biri
değildir.
A
S Özel final
VF
durumu
S aA | B B
A aa B
Bb B|a
16
Her bir production için kenar ekleyin:
a A
S VF
B
S aA
17
a A
S VF
B
S aA | B
SB production’ı herhangi bir terminal içermediği için kenar üzerine
lambda koyarız. 18
A
a a
S a VF
B
S aA | B
A aa B
19
A
a a
S a VF
B
S aA | B
b
A aa B
B bB 20
A
a a
S a VF
a
B
S aA | B
b
A aa B
B bB | a 21
Örnek Bir Kelime Türetimi
A
a a
S a VF
a
B
Şu değişkenlere
V0 ,V1,V2 ,
sahip olsun:
Vi a1a2 amV j
Şu productionlara
veya
sahip olsun:
Vi a1a2 am
24
M NFA sı oluşturulurken:
V1 V3
V0
VF
V2 Vn özel final
durumu
25
Her bir Vi a1a2 amV j production için:
26
Her bir Vi a1a2 am production için:
Vi a1 a2 am
……… VF
27
Örnek bir M NFA sı şöyle olabilir:
a9
a2 a4
a1 V1 V3
a3 a5
V0
a3 a4
VF
a8 a9
V2 a5
V4
İspat Fikri:
Gadında sağ lineer bir gramer oluşturalım.
R
Öyle ki; L(G ) L(G)
Bunu yapabilirsek, G’nin düzenli olduğunu otomatikmen ispatlamış oluruz. R
reverse (ters) anlamına geliyor bu arada. Geçen ders ne görmüştük: Bir
dil düzenli ise tersi de düzenlidir. Ters, değil değildir. Karıştırmayalım.
29
G nin productionları şu şekildedir:
A Ba1a2 ak
A a1a2 ak
30
Sağ lineer G oluşturma: (v burada terminallerden oluşan
bir string)
Sol A Ba1a2 ak
G
lineer A → Bv
Sağ A ak a2a1B
G
lineer
R
Av B
31
Sağ lineer Goluşturma:
Sol A a1a2 ak
G
lineer
Av
Sağ
G A ak a2a1
lineer
R
Av
32
R
Şu aşikardır: L(G ) L(G)
R
L(G) L(G) L(G )
Düzenli Düzenli Düzenli
Dil Dil Dil
33
İspat – Bölüm 2
34
İspat fikri:
35
Örnek:
b
M a
a
q0 q1 q2
b
L ab * ab(b * ab) * q3
L L(M )
36
M yi sağ lineer gramere
çevirelim:
b
M a
a
q0 q1 q2
b
q0 aq1
q3
37
b
M a
a
q0 q1 q2
q0 aq1 b
q1 bq1 q3
q1 aq2
38
b
M a
a
q0 q1 q2
q0 aq1
q1 bq1 b
q1 aq2 q3
q2 bq3
39
L(G ) L( M ) L
G b
q0 aq1 M a
a
q0 q1 q2
q1 bq1
q1 aq2 b
q2 bq3 q3
q3 q1
q3
40
Genel Formül
a
Her bir geçiş için: q p
Şu productionı ekle: q ap
Şu productionı ekle: qf
42
G sağ lineer bir gramer olduğu için, aynı
zamanda düzenli bir gramerdir.
L(G ) L( M ) L
43