Prolog1 M.Fatih Amasyalı

Slides:



Advertisements
Benzer bir sunumlar
8. SINIF 3. ÜNİTE BİLGİ YARIŞMASI
Advertisements

el ma 1Erdoğan ÖZTÜRK ma ma 2 Em re 3 E ren 4.
Diferansiyel Denklemler
ALİ YALKIN İLKÖĞRETİM OKULU 2/A SINIFI ÇALIŞMA SAYFASI
Değişkenler ve bellek Değişkenler
NOKTA, DOĞRU, DOĞRU PARÇASI, IŞIN, DÜZLEMDEKİ DOĞRULAR
Birlikler ve onluklar Aşağıdaki tabloyu inceleyerek, sonuçları üzerinde konuşalım.
Saydığımızda 15 tane sayı olduğunu görürüz.
Veri ve Veri Yapıları Genel olarak bilgisayarlar.
KÜMELER.
Diferansiyel Denklemler
Prolog2 M.Fatih Amasyalı
Prolog4 cut&fail db değişimi
1/27 GEOMETRİ (Kare) Aşağıdaki şekillerden hangisi karedir? AB C D.
Algoritmalar En kısa yollar I En kısa yolların özellikleri
Algoritmalar DERS 2 Asimptotik Notasyon O-, Ω-, ve Θ-notasyonları
TC ÇAVDARHİSAR KAYMAKAMLIĞI İLÇE MİLLİ EĞİTİM MÜDÜRLÜĞÜ 2011 – 2012 EĞİTİM-ÖĞRETİM YILI OKULLAR HAYAT OLSUN PROJESİ.
KIR ÇİÇEKLERİM’ E RakamlarImIz Akhisar Koleji 1/A.
Verimli Ders Çalışma Teknikleri.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Bölüm 10 Yapılar ve Birleşimler
RİZE ÜNİVERSİTESİ BAHAR YARI YILI MATERYAL DERSİ
İkili Arama Ağaçları (Binary Search Trees) BST
SLAYTI MUTLAKA SESLİ İZLEYİNİZ… İYİ SEYİRLER…
1/20 PROBLEMLER A B C D Bir fabrikada kadın ve çocuk toplam 122 işçi çalışmaktadır. Bu fabrikada kadın işçilerin sayısı, çocuk işçilerin sayısının 4 katından.
AB SIĞIR VE DANA ETİ PAZAR DURUMU 13 Aralık 2012.
HAZIRLAYAN:SAVAŞ TURAN AKKOYUNLU İLKÖĞRETİM OKULU 2/D SINIFI
BPR152 ALGORİTMA VE PROGRAMLAMA - II
1/25 Dört İşlem Problemleri A B C D Sınıfımızda toplam 49 öğrenci okuyor. Erkek öğrencilerin sayısı, kız öğrencilerin sayısından 3 kişi azdır.
YAPAY ZEKA ve UZMAN SİSTEMLER
Çizge Algoritmaları.
ARALARINDA ASAL SAYILAR
1/20 BÖLME İŞLEMİ A B C D : 4 işleminde, bölüm kaçtır?
Gün Kitabın Adı ve Yazarı Okuduğu sayfa sayısı
FİİLİMSİLER (EYLEMSİLER)
KONU KESİRLER BASİT KESİR GJFX BİLEŞİK KESİR.
Problem Çözme Ve Problem Çözme Stratejileri Ödevi Cihan GÖÇ
Matematik 2 Örüntü Alıştırmaları.
Tam sayılarda bölme ve çarpma işlemi
DOĞUŞ ÜNİVERSİTESİ VI. LİSELERARASI MATEMATİK YARIŞMASI
ORAN ve ORANTI DOĞRU ORANTI c a x b c . b = a . x.
HABTEKUS' HABTEKUS'08 3.
DERS 11 KISITLAMALI MAKSİMUM POBLEMLERİ
1 pred1(X,Z):-parent(X,Z). pred1(X,Z):-parent(X,Y), pred1( Y, Z). parent(pam, bob). parent(pam, bob). parent(tom, bob). parent(tom, bob). parent(tom, liz).
Akış Kontrol Mekanizmaları
Chapter 6: Using Arrays.
1/20 ÖLÇÜLER (Zaman) A B C D Bir saat kaç dakikadır?
Diferansiyel Denklemler
Toplama-Çıkarma-Çarpma-Bölme
VERİ İŞLEME VERİ İŞLEME-4.
1 (2009 OCAK-ARALIK) TAHAKKUK ARTIŞ ORANLARI. 2 VERGİ GELİRLERİ TOPLAMIDA TAHAKKUK ARTIŞ ORANLARI ( OCAK-ARLIK/2009 )
Çocuklar,sayılar arasındaki İlişkiyi fark ettiniz mi?
İSMİN HALLERİ.
Toplama Yapalım Hikmet Sırma 1-A sınıfı.
ÇOK DEĞİŞKENLİ FONKSİYONLARDA
1/22 GEOMETRİ (Dikdörtgen) Aşağıdaki şekillerden hangisi dikdörtgendir? AB C D.
1.HAFTA 26 Ağustos 2009 ÇARŞAMBA 2.HAFTA 01 EYLÜL 2009 SALI 3.HAFTA 09 EYLÜL 2009 ÇARŞAMBA 4.HAFTA 15 EYLÜL 2009 SALI 5.HAFTA 23 EYLÜL 2009 ÇARŞAMBA 6.HAFTA.
1.HAFTA 26 Ağustos 2009 ÇARŞAMBA 2.HAFTA 01 EYLÜL 2009 SALI 3.HAFTA 09 EYLÜL 2009 ÇARŞAMBA 4.HAFTA 15 EYLÜL 2009 SALI 5.HAFTA 23 EYLÜL 2009 ÇARŞAMBA 6.HAFTA.
SLAYT 1BBY220 OCLC WorldCat Yaşar Tonta Hacettepe Üniversitesi yunus.hacettepe.edu.tr/~tonta/ BBY220 Bilgi Erişim İlkeleri.
CEBİRSEL İFADELERİ ÇARPANLARINA AYIRMA
Yard. Doç. Dr. Mustafa Akkol
ÖĞR. GRV. Ş.ENGIN ŞAHİN BİLGİ VE İLETİŞİM TEKNOLOJİSİ.
Diferansiyel Denklemler
BİL551 – YAPAY ZEKA Prolog Dili
YAPAY ZEKA P ROLOG 1. Prolog’un özellikleri PROgrammig in LOGic Semboller üzerinde çalışma Gerçekler ve kurallardan oluşur Büyük küçük harfe duyarlıdır.
PROLOG. Prolog Programlarının özellikleri: - Programming in Logic teriminin kısaltılmasıyla adlandırılmıştır. - Semboller üzerinde çalışma prensibi üzerine.
Yapay Zeka ve Uzman Sistemler
Sunum transkripti:

Prolog1 M.Fatih Amasyalı Web : http://www.ce.yildiz.edu.tr/myfile.php?id=14 E-mail : mfatih@ce.yildiz.edu.tr

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

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.

PROLOG MEKANİZMALARI Şablon Eşleme Otomatik geriye iz sürme

Örnek : Aile Ağacı

İ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ı

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).

Prolog Sorguları ?- iliski(a,b). ?- 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 8

İ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

İlişkileri sorgulamak-2 Liz’in ebeveyni kimdir? ?- ebeveyn(Kim, liz). Prolog’un cevabı : Kim = tom Bob’un çocukları kimlerdir? ?- ebeveyn(bob, Cocuk). Cocuk = ann ; Cocuk = pat ; no

İlişkileri sorgulamak-3 Kimler kimlerin çocuğudur? ?- ebeveyn (Ebeveyn, Cocuk). Ebeveyn = pam Cocuk = bob; Ebeveyn = tom Cocuk = liz; … Çözümler listesini yarıda kesmek için enter Devam ettirmek için ;

İlişkileri sorgulamak-4 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=bob Y=pat jim’in ebeveynine Y dersek, Y’nin ebeveyni jim’in büyük ebeveyni (X) dir.

İ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; Y=pat; no

İlişkileri sorgulamak-6 Ann ve pat’in ortak ebeveyni var mı? ?- parent(Ebeveyn, ann), parent(Ebeveyn, pat). Ebeveyn=bob

Çocuk ilişkisi parent(pam, bob). parent(tom, bob). parent(tom, liz). parent(bob, ann). parent(bob, pat). parent(pat,jim). offspring(bob, pam). offspring(bob, tom). offspring(liz, tom). offspring(ann, bob). offspring(pat, bob). offspring(jim, pat). 15

Çocuk kuralı parent(pam, bob). parent(tom, bob). parent(tom, liz). parent(bob, ann). parent(bob, pat). parent(pat,jim). offspring(bob, pam). offspring(bob, tom). offspring(liz, tom). offspring(ann, bob). offspring(pat, bob). offspring(jim, pat). parent(pam, bob). parent(tom, bob). parent(tom, liz). parent(bob, ann). parent(bob, pat). parent(pat,jim). offspring(Y, X) :- parent(X, Y). 16

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

Kuralların Çalışması Sorgu: offspring(liz, tom). Veritabanı: parent(pam, bob). parent(tom, bob). parent(tom, liz). parent(bob, ann). parent(bob, pat). parent(pat,jim). offspring(Y, X) :- parent(X, Y). Sorgu: offspring(liz, tom). 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. 18

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). 19

Kız Kardeş İlişkisi Tüm X ve Y ler için, X, Y’nin kız kardeşidir Eğer X 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). female 20

Hala İlişkisi SORGU: ?- hala(X,Y). X = liz Y = ann ; Y = pat ; No 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: ?- hala(X,Y). X = liz Y = ann ; Y = pat ; No 21

Ata İlişkisi Ata ilişkisinin iki türü var: Direkt ata Dolaylı (endirekt) ata 22

Direkt Ata İlişkisi Prolog ifadesi: 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). 23

Dolaylı (Endirekt) Ata İlişkisi 24

Dolaylı (Endirekt) Ata Programı 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). parent(Y2,Y3), parent(Y3, Z). … Problemleri: Uzun …. Büyük büyük büyük …. Ataları bulamaz. 25

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). 26

Sonuç Ata İlişkisi 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). PR1 PR2 27

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

X’den 1’e yaz yazdir(M):- yazdir(8). not(M=0), write(M), write(' '), K is M-1, yazdir(K). yazdir(8). 8 7 6 5 4 3 2 1 No 29

X kere h yaz hyaz(X):- ?- hyaz(3). not(X=0), Y is X-1, put(104), hyaz(Y). ?- hyaz(3). hhh No 30

Nereden Nereye? yolvar(1,4). yolvar(1,3). yolvar(4,2). yolvar(2,3). ?- gidilir(1,5). 1423 Yes ?- gidilir(4,1). 42356 ?- gidilir(3,1). 35 No 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). 31

X ayda kaç saniye var? eder(asir,100,yil). eder(yil,4,mevsim). ?- coz(3,ay,Kac,saniye). Kac = 7776000 ; No ?- coz(3,ay,Kac,gun). Kac = 90 ; 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. 32

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).

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). 34

SWI Prolog’la çalışmak SWI prolog kurulur. http://www.swi-prolog.org Gerçekler ve kurallar .pl uzantılı bir dosyaya kaydedilir.

SWI Prolog’la çalışmak .pl uzantılı dosyanın üzerine çift tıklanarak

SWI Prolog’la çalışmak Yada SWI prolog açıldıktan sonra file menüsünden dosya ‘consult’ edilerek

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.

Ö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, …

Ö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 40

Kaynaklar PROLOG Programming for Artificial Intelligence, Ivan Bratko, 3rd Edition, Addison-Wesley, 2001 Tacettin Ayar, Prolog Ders Notları