Örnek : Aile Ağacı Kural oluşturmak Ahmet in annesi yada babası kimdir? Bilgi tabanımızda anne yada baba diye bir ilişki ş tanımlı değil. Bunlar tek tek tanımlanabilir. Fakat bu pek anlamlı olmaz. anne(ayse,fatma). baba(ali,fatma). anne(ayse,ahmet). baba(ali,ahmet). 1 2 Anne ilişkisi female Tüm ve Y ler için, Y, Y nin annesidir Eğer, Y nin ebeveyni ise ve kadınsa. İlişkinin i Prolog da ifadesi i : anne(, Y) :- ebeveyn(, Y), kadin(). baba(, Y) :- ebeveyn(, Y), erkek(). mother Önce erkek yada kadın bilgilerini vermem lazım. erkek(ali). erkek(serdar). erkek(volkan)... kadin(esra). kadin(eda). kadin(asli). 3 4 1
Kurallar Kural oluşturularak tek satırda tanımlama yapılabilir. Kurallar iki parçadan oluşur: head : böyledir body : eğer Sorguların Çalışması Geriye Doğru İz Sürme Önce sorguya uyan gerçekler aranır. Ardından sorguya uyan kurallar aranır. anne(,y) :- ebeveyn(,y),kadin(). ----------- ---------------------------- head body Kuralı doğrulayan gerçekler aranır. 5 6 7 8 2
9 10 11 12 3
Eşleşme var 13 14 15 16 4
Eşleşme doğru şimdi 2. şart aranacak 17 18 19 20 5
2. şart da doğru 21 Şart sağlandı 22 23 Kız Kardeş İlişkisi Tüm ve Y ler için,, Y nin kız kardeşidir Eğer ve Y aynı ebeveyne sahip ise ve bayansa, Y ye eşit değilse İlişkinin Prolog da ifadesi : kizkardes(,y) :- ebeveyn(, ), ebeveyn(, Y), kadin(),not(=y). erkekkardes(,y) :- ebeveyn(, ), ebeveyn(, Y), erkek(),not(=y). kardes(,y):-kizkardes(,y);erkekkardes(,y). Sorgu: kizkardes(,ercan). female sister Y 24 6
Hala İlişkisi Dede, Nine ilişkisi Tüm ve Y ler için,, Y nin halasıdır. Eğer, Y in babasıysa ve, nin kızkardeşiyseş hala(,y):-baba(,y),kizkardes(,). babaanne(,y) :- anne(,),baba(,y). anneanne(,y) :- anne(,),anne(,y). nine(,y):-babaanne(,y);anneanne(,y). Nine şöyle de yazılabilir. nine(,y) :-anne(,),ebeveyn(,y). dede(,y):-baba(,),ebeveyn(,y). 25 26 Ödev Ebeveyn ve cinsiyet ilişkileri kullanılarak eş kuralı tanımlanabilir mi?, Cevap hayır ise Eş ilişkisini nasıl tanımlamalıyım. Teyze, Amca, Dayı, Yeğen, Amcaoğlu, Bacanak, Enişte, Baldız.kurallarını tanımlayın. Abi ve abla kuralı nasıl yazılır, yazılabilmesi için eklememiz gereken gerçekler ne olmalı. Ata İlişkisi Ata ilişkisinin ş iki türü var: Direkt ata Dolaylı (endirekt) ata 1 Nisan 2013 gününe kadar derslersonmez@gmail.com mail atılmalı Konuya prolog1 yazın dosya adı okulnumaran.pl şeklinde olsun 27 28 7
Direkt Ata İlişkisi Dolaylı (Endirekt) Ata İlişkisi Tüm ve ler için,, nin atasıdır Eğer, nin ebeveyni Prolog ifadesi: ata(, ) :- ebeveyn(, ). Y Y1 Y2 Y1 Y2 Y3 29 30 Dolaylı (Endirekt) Ata Programı ata(,) :- ebeveyn(,). ata(,) :- ebeveyn (,Y),ebeveyn (Y,). ata(,) :- ebeveyn (,Y1),ebeveyn (Y1,Y2),ebeveyn (Y2,). ata(,) :- ebeveyn(,y1), ebeveyn (Y1,Y2), ebeveyn(y2,y3), ebeveyn (Y3, ). Problemleri: Uzun. Büyük büyük büyük. Ataları bulamaz. 31 Recursive Ata Tanımı Ata ilişkisini yine ata ilişkisini kullanarak (öz yinelemeli) tanımlayalım. Tüm ve ler için, i, nin Ata sıdır Eğer ya, nin ebeveyni ise yada (1), Y nin Ynin ebeveyni ise ve (2) Y, nin Ata sı ise Prolog ifadesi: ata(,) :- ebeveyn(,) ; ebeveyn(,y),ata(y,). Y 32 8
yolvar(1,4). yolvar(1,3). yolvar(4,2). yolvar(2,3). yolvar(3,5). yolvar(4,6). yolvar(6,1). Nereden Nereye??- gidilir(1,5). 1423 Yes?- gidilir(4,1). 42356 Yes?- gidilir(3,1). 35 No gidilir(,y):-yolvar(,y);yolvar(,),gidilir(,y). 33 Ö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 34 9