You are on page 1of 43

Lineer 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)}

w kelimesi içindeki a sayısı


2
Başka Bir NonLineer Gramer Örneği

Gramer G: SA
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

Bütün productionlar şu formatta olmalı: A  xB


1) Yani her bir productionın sonu tamamen veya
Terminallerden oluşmalı. (x burada bir çok
Terminalden oluşan bir kelime) A x
Ya da:
2) Her bir production için eğer olacaksa
Tek bir variable olmalı ve o da en sağda
olmalı. Terminallerden
Örn: Oluşan kelime
S  abS
S a
4
Sol Lineer Gramer
Bütün productionlar şu formatta olmalı:
1) Yani her bir productionın sonu tamamen
A  Bx
Terminallerden oluşmalı. (x burada bir çok
Terminalden oluşan bir kelime) veya
Ya da:
2) Her bir production için eğer olacaksa
A x
Tek bir variable olmalı ve o da en solda
olmalı.

Örn: Terminallerde
S  Aab Oluşan kelime
A  Aab | B
Ba
5
Sol Lineer Gramer
Örn:
Aşağıdaki örnekte toplam 4 production vardır. 3 numaralı production
(AB) 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
Ba

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
Ba
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
Ba

L(G1 )  (ab) * a L(G2 )  aab(ab) *


9
Teorem

Düzenli Gramer tara


fından oluşturulan
diller
 Düzenli
Diller

10
Teorem – Bölüm 1

Düzenli Gramer tara


Düzenli
fından oluşturulan
Diller
diller

Herhangi bir düzenli gramer, düzenli


bir dil oluşturur

11
Teorem – Bölüm 2

Düzenli Gramer tara


Düzenli
fından oluşturulan
Diller
diller

Herhangi bir düzenli dil düzenli bir


gramere sahiptir.

12
İspat – Bölüm 1

Düzenli Gramer tara


Düzenli
fından oluşturulan
Diller
diller

G düzenli gramerinin oluşturduğu L(G) dili


düzenlidir

13
Sağ Lineer Gramer Durumu

G sağ lineer bir gramer olsun

Şunu ispatlayalım: L(G ) düzenlidir

İspat Fikri: M adında bir NFA yapalım.


Öyle ki: L( M )  L(G )

NFA varsa RE vardır. Yani M makinesinin dili düzenlidir !!!


L(M) = L(G) olduğu için, G de düzenlidir.

14
Gramer G sağ lineer olsun.

Örnek: S  aA | B
A  aa B
Bb 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
Bb 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
SB 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

S  aA  aaaB  aaabB  aaaba


22
NFA M Grammar
A G
a S  aA | B
a
A  aa B
S a B  bB | a
 VF
a
B
L( M )  L(G ) 
b
aaab * a  b * a
23
Genelde
Sağ lineer bir G grameri

Ş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:

Her bir Vi değişkeni state olur:

V1 V3
V0
VF
V2 Vn özel final
durumu
25
Her bir Vi  a1a2 amV j production için:

Geçiş (kenar) ve ara state’ler ekleriz. (Vi ve


Vj state’leri ara state değil. Ama tabi ki,
onları da ekliyoruz!)
Vi a1 a2 ………
am V
j

26
Her bir Vi  a1a2 am production için:

Geçiş (kenar) ve Vi, Vf state’lerini ekleriz.

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

Şurası Kesin ki: L(G )  L( M )


28
Sol Lineer Gramer Durumu

G sol lineer bir gramer olsun

Şunu ispatlayalım: L(G ) düzenlidir

İspat Fikri:
Gadı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
Av B
31
Sağ lineer Goluşturma:
Sol A  a1a2  ak
G
lineer
Av

Sağ
G  A  ak a2a1
lineer
R
Av
32
R
Şu aşikardır: L(G )  L(G)

G sağ lineer olduğu için:

R
L(G) L(G) L(G )
Düzenli Düzenli Düzenli
Dil Dil Dil

33
İspat – Bölüm 2

Düzenli Gramer tara


Düzenli
fından oluşturulan
Diller
diller

Herhangi bir düzenli dil düzenli bir


gramere sahiptir. (Düzenli bir gramer
tarafından oluşturulur)

34
İspat fikri:

Düzenli dilimiz L olsun. Bu dilin NFA sı illa


ki vardır. M işte bu NFA olsun . Bu NFA
nın dili de L(M) olsun. M den L(M) = L(G)
olacak şekilde bir G grameri oluşturalım.

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

variable terminal variable


41
Her bir final state için: qf

Ş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

You might also like