6-prolog1

41
Prolog1 M.Fatih Amasyalı Web : http://www.ce.yildiz.edu.tr/myfile.php? id=14 E-mail : [email protected]

Upload: goekay-tuna

Post on 28-Apr-2015

72 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 6-prolog1

Prolog1

M.Fatih Amasyalı

Web : http://www.ce.yildiz.edu.tr/myfile.php?id=14

E-mail : [email protected]

Page 2: 6-prolog1

2

• Prolog Programlarının özellikleri:

– PROgrammig in LOGic– Semboller üzerinde çalışma– Problemlerin çözümünü tanımlama yerine çıkarım yapma– Doğal dille düşünülen şeylerin kodlanması kolay– Gerçekler ve kurallardan oluşur.– Büyük küçük harfe duyarlıdır.

• Sabitler için Küçük harfler• Değişkenler için Büyük harfler

– Program çıktıları çok sade– Prolog’da olmayanlar

• For döngüleri• Repeat While döngüleri• IF..THEN yapısı• Goto komutu• Diziler• Yukarıdakiler öz yinelemeli fonksiyonlarla sağlanır

Page 3: 6-prolog1

3

Dekleratif Programlama

• Prolog Dekleratif programlama dili • Prosedürel programlamada bilgisayara adım

adım ne yapması gerektiğini kodlarız. (Ör: C, Pascal, Java vs.)

• Dekleratif programlamada bir durum tanımlanır. Bu tanıma göre yorumlayıcı yada derleyici bir çözüm üretir.

• Prolog – bir cümlenin doğru / yanlış olduğunu – cümle içinde değişken(ler) varsa cümlenin doğru

olması için o değişken(ler)in değer(ler)inin ne olması gerektiğini söyler.

Page 4: 6-prolog1

4

PROLOG MEKANİZMALARI

• Şablon Eşleme

• Otomatik geriye iz sürme

Page 5: 6-prolog1

5

Örnek : Aile Ağacı

p am to m

b o b liz

an n p at

jim

Page 6: 6-prolog1

6

İlişkileri gerçek(fact)lerle tanımlama

• “Tom, Bob’un ebeveynidir” gerçeğinin prolog’da ifadesi :

parent(tom, bob).

– parent: ilişkinin ismi– tom ve bob: ilişkinin argümanları

Page 7: 6-prolog1

7

Aile Ağacı• Tüm aile ağacını aşağıdaki Prolog

ifadeleriyle tanımlarız:parent(pam, bob).

parent(tom, bob).

parent(tom, liz).

parent(bob, ann).

parent(bob, pat).

parent(pat,jim).

p am to m

b o b liz

an n p at

jim

Page 8: 6-prolog1

8

Prolog Sorguları

• ?- iliski(a,b).– a ve b arasında iliski adlı ilişki var mı?– cevap YES yada NO

• ?- iliski(A,b).– b ile iliski adlı ilişkiyi doğrulayan A lar

nelerdir?– cevap A lar varsa A lar

yoksa NO

Page 9: 6-prolog1

9

İlişkileri sorgulamak-1• Bob, Pat’in ebeveyni mi?

?- parent(bob, pat).

Prolog’un cevabı: yes

• Tom, Ben’in ebeveyni mi? :?- parent(tom, ben).

Prolog’un cevabı: no

Page 10: 6-prolog1

10

İlişkileri sorgulamak-2• Liz’in ebeveyni kimdir?

?- ebeveyn(Kim, liz).Prolog’un cevabı : Kim = tom

• Bob’un çocukları kimlerdir??- ebeveyn(bob, Cocuk).Prolog’un cevabı :

Cocuk = ann ; Cocuk = pat ;no

Page 11: 6-prolog1

11

İlişkileri sorgulamak-3

• Kimler kimlerin çocuğudur? ?- ebeveyn (Ebeveyn, Cocuk).

Ebeveyn = pam

Cocuk = bob;

Ebeveyn = tom

Cocuk = bob;

Ebeveyn = tom

Cocuk = liz;

• Çözümler listesini yarıda kesmek için enter

• Devam ettirmek için ;

Page 12: 6-prolog1

12

• Jim’in büyük ebeveyni (grandparent) kimdir?

• Bilgi tabanımızda büyük ebeveyn diye bir ilişki tanımlı değil.

• Büyük ebeveyn ilişkisi iki ebeveyn ilişkisinin ‘ve’ lenmesiyle elde edilebilir.

?- parent(Y, jim), parent(X, Y).X=bobY=pat

İlişkileri sorgulamak-4

X

Y

jim

pa re n t

pa re n t

g ra n dpa re n t

jim’in ebeveynine Y dersek, jim’in ebeveynine Y dersek,

Y’nin ebeveyni jim’in büyük ebeveyni (X) dir.Y’nin ebeveyni jim’in büyük ebeveyni (X) dir.

Page 13: 6-prolog1

13

İlişkileri sorgulamak-5• Torun ilişkisi de benzer

biçimde tanımlanabilir.– tom, X’in ebeveyni, – X, Y’nin ebeveyni ise – Y, tom’un torunudur.

?- parent(tom,X), parent(X, Y).

X=bob

Y=ann;

X=bob

Y=pat;

no

to m

X

Y

pa re n t

pa re n t

g ra n dch ildre n

Page 14: 6-prolog1

14

İlişkileri sorgulamak-6• Ann ve pat’in ortak ebeveyni var mı?

?- parent(Ebeveyn, ann), parent(Ebeveyn, pat).

Ebeveyn=bob

Page 15: 6-prolog1

15

Çocuk ilişkisi

p am to m

b o b liz

an n p at

jim

parent(pam, bob).parent(pam, bob).parent(tom, bob).parent(tom, bob).parent(tom, liz).parent(tom, liz).parent(bob, ann).parent(bob, ann).parent(bob, pat).parent(bob, pat).parent(pat,jim).parent(pat,jim).offspring(bob, pam).offspring(bob, pam).offspring(bob, tom).offspring(bob, tom).offspring(liz, tom).offspring(liz, tom).offspring(ann, bob).offspring(ann, bob).offspring(pat, bob).offspring(pat, bob).offspring(jim, pat).offspring(jim, pat).

Page 16: 6-prolog1

16

Çocuk kuralıo f f s prin g

X

Y

pa re n t

parent(pam, bob).parent(pam, bob).parent(tom, bob).parent(tom, bob).parent(tom, liz).parent(tom, liz).parent(bob, ann).parent(bob, ann).parent(bob, pat).parent(bob, pat).parent(pat,jim).parent(pat,jim).

offspring(bob, offspring(bob, pam).pam).offspring(bob, offspring(bob, tom).tom).offspring(liz, tom).offspring(liz, tom).offspring(ann, offspring(ann, bob).bob).offspring(pat, offspring(pat, bob).bob).offspring(jim, offspring(jim, pat).pat).

parent(pam, bob).parent(pam, bob).parent(tom, bob).parent(tom, bob).parent(tom, liz).parent(tom, liz).parent(bob, ann).parent(bob, ann).parent(bob, pat).parent(bob, pat).parent(pat,jim).parent(pat,jim).offspring(Y, X) :- parent(X, offspring(Y, X) :- parent(X, Y).Y).

Page 17: 6-prolog1

17

Kurallar

• Kurallar iki parçadan oluşur:– head : böyledir– body : eğer

p ar en t( X , Y)o f f s p r in g ( Y, X ) :-

h ead b o d y

Page 18: 6-prolog1

18

Kuralların Çalışması• Veritabanı:

• Çalışma Mekanizması:– offsprings ilişkisi için gerçek ara– Yok => offsprings ilişkisi için kural varsa uygula

– Kuralda X tom’la , Y liz’le eşleştirilerek kuralın bir gerçeklemesi bulunur.

offspring(liz,tom) :- parent(tom,liz).

– parents(tom,liz). gerçeği aranır. Bulunduğunda kuralın eğer kısmı doğrulandığından böyledir kısmı da doğrulanmış olur ve prolog “yes” cevabını verir.

parent(pam, bob).parent(pam, bob).parent(tom, bob).parent(tom, bob).parent(tom, liz).parent(tom, liz).parent(bob, ann).parent(bob, ann).parent(bob, pat).parent(bob, pat).parent(pat,jim).parent(pat,jim).offspring(Y, X) :- parent(X, offspring(Y, X) :- parent(X, Y).Y).

Sorgu:Sorgu:offspring(liz, tom).offspring(liz, tom).

Page 19: 6-prolog1

19

Anne ilişkisi

• Tüm X ve Y ler için,

X, Y’nin annesidir Eğer

X, Y’nin ebeveyni ise ve

X kadınsa.

• İlişkinin Prolog’da ifadesi :

mother(X, Y) :- parent(X, Y), female(X).

m o th e r

X

Y

pa re n t

fe m a le

Page 20: 6-prolog1

20

Kız Kardeş İlişkisi• Tüm X ve Y ler için,

X, Y’nin kız kardeşidir EğerX ve Y aynı ebeveyne sahip ise ve X bayansa

• İlişkinin Prolog’da ifadesi :sister(X, Y) :-

parent(Z, X), parent(Z, Y), female(X).

• Sorgu:sister(X,pat).

s is t e r

Z

X

pa re n t

Y

pa re n t

femalefemale

Page 21: 6-prolog1

21

Hala İlişkisi• parent(pam, bob).• parent(tom, bob).• parent(tom, liz).• parent(bob, ann).• parent(bob, pat).• parent(pat,jim).• female(ann).• female(liz).• female(pat).• male(bob).• male(tom).• sister(X, Y) :- parent(Z, X), parent(Z, Y),

female(X).• hala(Z,Y):-

parent(X,Y),male(X),sister(Z,X).

SORGU:SORGU: ?- hala(X,Y).?- hala(X,Y).

X = lizX = lizY = ann ;Y = ann ;

X = lizX = lizY = pat ;Y = pat ;

NoNo

Page 22: 6-prolog1

22

Ata İlişkisi

• Ata ilişkisinin iki türü var:

– Direkt ata

– Dolaylı (endirekt) ata

Page 23: 6-prolog1

23

Direkt Ata İlişkisi

pre de ce s s o r

X

Z

pa re n t

• Tüm X ve Z ler için,

X, Z’nin atasıdır Eğer

X, Z’nin ebeveyni

• Prolog ifadesi:predecessor(X, Z) :- parent(X,

Z).

Page 24: 6-prolog1

24

Dolaylı (Endirekt) Ata İlişkisi

pre de ce s s o r

X

Y

pa re n t

Z

pa re n t pre de ce s s o r

X

Y 1

pa re n t

Y 2

pa re n t

Z

pa re n t

pre de ce s s o r

X

Y 1

pa re n t

Y 2

pa re n t

Y 3

pa re n t

Z

pa re n t

Page 25: 6-prolog1

25

• predecessor(X,Z) :- parent(X,Z).

• predecessor(X,Z) :- parent(X,Y), parent(Y,Z).

• predecessor(X,Z) :- parent(X,Y1), parent(Y1,Y2), parent(Y2,Z).

• predecessor(X,Z) :- parent(X,Y1), parent(Y1,Y2), parent(Y2,Y3), parent(Y3, Z).

• …

Dolaylı (Endirekt) Ata Programı

Problemleri:Problemleri:Uzun …. Uzun …. Büyük büyük büyük …. Büyük büyük büyük ….

Ataları bulamaz.Ataları bulamaz.

Page 26: 6-prolog1

26

Yeni Ata Programı• Ata ilişkisini yine ata ilişkisini

kullanarak (öz yinelemeli) tanımlayalım.

Tüm X ve Z ler için,X, Z’nin Ata’sıdır Eğer

Y diye bir kişi varsa ve

(1) X, Y’nin ebeveyni ise ve

(2) Y, Z’nin Ata’sı ise

• Prolog ifadesi:predecessor(X, Z) :- parent(X, Y),

predecessor(Y, Z).

pre de ce s s o r

X

Y

pa re n t

Z

pre de ce s s o r

Page 27: 6-prolog1

27

• parent(pam, bob).• parent(tom, bob).• parent(tom, liz).• parent(bob, ann).• parent(bob, pat).• parent(pat,jim).• predecessor(X, Z) :- parent(X, Z).• predecessor(X, Z) :- parent(X, Y),predecessor(Y, Z).

HEDEF / SORGU ?-predecessor(tom, pat).

PR1PR1

PR2PR2

Sonuç Ata İlişkisi

Page 28: 6-prolog1

28

Cevap nasıl bulunur?

• Prolog hedefe ulaşmak için programdaki yazılış sırasına göre cümlecikleri kullanır.

Y = b o b

b y ru le p r1 b y ru le p r2

n o

pr e de c e s s o r ( to m , pat)

par e nt( to m , pat)par e nt( to m , Y)

pr e de c e s s o r (Y, pat)

b y fa c t p a re n t(to m , b o b )

pr e de c e s s o r (bo b, pat)

ye s

par e nt(bo b, pat)

b y ru le p r1

Page 29: 6-prolog1

29

X’den 1’e yaz

• yazdir(M):-– not(M=0),– write(M),– write(' '),– K is M-1,– yazdir(K).

• yazdir(8).– 8 7 6 5 4 3 2 1 – No

Page 30: 6-prolog1

30

X kere h yaz

• hyaz(X):-– not(X=0),– Y is X-1,– put(104),– hyaz(Y).

• ?- hyaz(3).– hhh– No

Page 31: 6-prolog1

31

Nereden Nereye?

• yolvar(1,4).• yolvar(1,3).• yolvar(4,2).• yolvar(2,3).• yolvar(3,5).• yolvar(4,6).• yolvar(6,1).• gidilir(X,Y):-

write(X),yolvar(X,Y).• gidilir(X,Y):-

yolvar(X,Z),gidilir(Z,Y).

?- gidilir(1,5).?- gidilir(1,5).14231423YesYes

?- gidilir(4,1).?- gidilir(4,1).4235642356YesYes

?- gidilir(3,1).?- gidilir(3,1).3535NoNo

Page 32: 6-prolog1

32

X ayda kaç saniye var?

• eder(asir,100,yil).• eder(yil,4,mevsim).• eder(mevsim,3,ay).• eder(ay,4,hafta).• eder(ay,30,gun).• eder(gun,24,saat).• eder(saat,60,dakika).• eder(dakika,60,saniye).• eder2(X,K,Y):-eder(X,K,Y).• eder2(X,K*K1,Y):-eder(X,K,M),eder2(M,K1,Y).• coz(N1,Obje1,Kac,Obje2):-• (eder(Obje1,M,Obje2);eder2(Obje1,M,Obje2)),• Kac is M*N1.

?- coz(3,ay,Kac,saniye).?- coz(3,ay,Kac,saniye).Kac = 7776000 ;Kac = 7776000 ;NoNo

?- coz(3,ay,Kac,gun).?- coz(3,ay,Kac,gun).Kac = 90 ;Kac = 90 ;NoNo

Page 33: 6-prolog1

33

Doğal Dil vs. Prolog

• Bütün çocuklar kısadır.• kisa(X):-cocuk(X).• Bütün erkek çocuklar arabaları sever. • sever(X,araba):-erkek(X),cocuk(X).• Bütün çocukların annesi vardır.• var(X,anne):-cocuk(X).• Sebzeyi hiçbir çocuk sevmez.• sevmez(X,Y):-sebze(Y), cocuk(X). • Çocuğunu döven öğretmeni hiçbir anne sevmez.• sevmez(X,Y):-anne(X,Z),ogretmen(Y,Z),dover(Y,Z).

Page 34: 6-prolog1

34

Doğal Dil vs. Prolog 2• Bütün insanlar canlıdır. Ahmet insandır. Dolayısıyla Ahmet canlıdır.• canli(X):-insan(X).• insan(ahmet).• ?-canli(ahmet).• Ahmet 20 metre zıplayabilir. Birisi X metreye zıplayabilirse daha

azlarına da zıplayabilir.• ziplar(ahmet,20).• ziplar(X,Y):-ziplar(X,Z),Z<Y.• ?-ziplar(ahmet,15).• Kendi kalesine gol atan futbolcuyu kendi takımının taraftarları

sevmez, karşı takımınkiler sever. • sevmez(X,Y):-futbolcu(X), taraftar(Y), aynitakim(X,Y),

kendikalesinegolatar(X). • sever(X,Y):- futbolcu(X), taraftar(Y), karsitakim(X,Y),

kendikalesinegolatar(X).

Page 35: 6-prolog1

SWI Prolog’la çalışmak

• SWI prolog kurulur.

http://www.swi-prolog.orghttp://www.swi-prolog.org

• Gerçekler ve kurallar .pl uzantılı bir dosyaya kaydedilir.

Page 36: 6-prolog1

SWI Prolog’la çalışmak

• .pl uzantılı dosyanın üzerine çift tıklanarak

Page 37: 6-prolog1

SWI Prolog’la çalışmak

• Yada SWI prolog açıldıktan sonra file menüsünden dosya ‘consult’ edilerek

Page 38: 6-prolog1

SWI Prolog’la çalışmak

• Gerçek ve kurallarımız prolog’a yüklenir. Artık sorgularımız komut satırından girilerek çalıştırılabilir.

Page 39: 6-prolog1

39

Özet• Prolog’la nesneler arası ilişkiler kolaylıkla

ifade edilebilir.

• Kullanıcı bilgi tabanındaki verileri kolaylıkla sorgulanabilir.

• İlişkilerin argümanları:– atom : sabit nesneler ör: tom, ann, …– Değişken(variable) : genel nesneler ör: X, Y, …

Page 40: 6-prolog1

40

Özet

• Prolog programları cümleciklerden oluşur. 3 tür cümlecik vardır. – Facts (Gerçekler) daima, koşulsuz olarak doğru

olan şeyleri tanımlarlar. – Rules (Kurallar) koşul(lar)a bağlı olarak doğru olan

şeyleri tanımlarlar.– Questions (Sorgular) Kullanıcının veritabanını

sorgulamak için kurduğu cümleciklerdir.

• Prolog nasıl çalışır?• Çeşitli örnekler

Page 41: 6-prolog1

41

Kaynaklar

• PROLOG Programming for Artificial Intelligence, Ivan Bratko, 3rd Edition, Addison-Wesley, 2001

• Tacettin Ayar, Prolog Ders Notları