YZM 3217 YAPAY ZEKA DERS#7: PROLOG DİLİ

Benzer belgeler
YZM 3217 YAPAY ZEKA DERS#7: PROLOG DİLİ

Dekleratif Programlama. Örnek : Aile Ağacı. SWI-Prolog. Prolog Dekleratif programlama dili

Prolog da Veri Türleri. Prolog la 4.Hafta. Atom lar (2) Atom lar (1)

Sorguların Çalışması. Kurallar. ?-anne(ayse,ahmet). ?-anne(ayse,ahmet). Geriye Doğru İz Sürme

Uygulamalı Yapay Zeka. Dr. Uğur YÜZGEÇ Ders 2: Prolog Giriş

EGE ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ İLERİ PROGRAMLAMA DİLLERİ SUNUM RAPORU MANTIK PROGRAMLAMA HAZIRLAYAN: Tahir Emre KALAYCI TESLİM ALAN:

İçerik. Prolog la 5.Hafta. soru. Hedef Birleştirme Hasta mı? Geçen Hafta Hedef Birleştirme Çıkarımlar.

Mantık Programlama Hazırlayan:Tahir Emre KALAYCI

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

İsimler ve Kapsam. 24 Şubat Programlama Dilleri - Pamukkale Üniversitesi 1

YZM 3217 YAPAY ZEKA DERS#8: PROLOG: LİSTELER

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları

1 PROGRAMLAMAYA GİRİŞ

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 2

Bölüm 8. İfade Seviyesindeki Kontrol Yapıları ISBN

Öğr. Gör. Serkan AKSU 1

PASCAL PROGRAMLAMA DİLİ YAPISI

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

Hafta 12 Karakter Tutan Diziler

1) Programlama dillerinin temel kavramlarını öğrenir. 1,2,4 1

Programlama Dilleri 1. Ders 4: Diziler

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

EYLÜL ÜNİTELERİ SEPTEMBER UNITS AGE

Dr. Fatih AY Tel: fatihay@fatihay.net

Öğr. Gör. Cansu AYVAZ GÜVEN VERİTABANI-II. Değişken Tanımlama Ve Akış Kontrol Deyimleri

AVRASYA UNIVERSITY. Dersin Verildiği Düzey Ön Lisans (X ) Lisans ( ) Yüksek Lisans( ) Doktora( )

Pascalda oluşturulacak dosyalar değişkenler gibi programın başında tanımlanır.

Manisa Celal Bayar Üniversitesi Yazılım Mühendisliği Bölümü YZM Yapay Zekâ Dersi. Final Soruları A KİTAPÇIĞI. Güz,

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

PROGRAMLAMAYA GİRİŞ DERS 2

İÇİNDEKİLER

HSancak Nesne Tabanlı Programlama I Ders Notları

Hafta 13 Fonksiyonlar

Lambda İfadeleri (Lambda Expressions)

ORACLE DA KÜRSÖRLER. Gerekli sistem değişkenleri

Bölüm 9. Altprogramlar ISBN

Bilgisayar Programlama MATLAB

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

Linux'ta Kabuk ve Kabuk Programlama

Programlama Dili Prensipleri. Lab Notları 8 ve 9

PYTHON PROGRAMLAMA DİLİ

Algoritma ve Akış Diyagramları

ALGORİTMA ANALİZİ. Cumhuriyet Üniversitesi Bilgisayar Mühendisliği Bölümü

İNGİLİZCE AİLE VE AKRABA BİREYLERİ, SOY AĞACI (FAMILY AND RELATIVE INVIDUALS, FAMILY TREE)

HSancak Nesne Tabanlı Programlama I Ders Notları

İnternet Programcılığı Dersi 2.Dönem Ders Notu

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

Gereksiz Kodlar. burada if deyiminin else bölümüne gerek var mı? İfade doğruysa zaten fonksiyon geri dönüyor. Bu aşağıdakiyle tamamen eşdeğerdir:

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 4 MasterPage

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

BİLGİSAYAR UYGULAMALARI Şırnak Üniversitesi Mühendislik Fakültesi Güz Dönemi Arş.Gör. Eren DEMİR ve Arş.Gör. Veysel KIŞ (

Fonksiyonlar istenilen deger tipinde dönüs yapabilir. INT, VARCHAR deger döndürebileceğiniz gibi bir tablo da döndürebilirsiniz.

4- Turbo Pascal Bilgisayar Programlamada Kullanılan Şart Yapıları

1. PROGRAMLAMAYA GİRİŞ

Matematiksel Operatörler

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 8

OMÜ HAVACILIK VE UZAY BİLİMLERİ FAKÜLTESİ METEOROLOJİ MÜHENDİSLİĞİ BÖLÜMÜ MET103 BİLGİSAYAR PROGRAMLAMA I BÜTÜNLEME SINAVI

Bilgisayar Programlama

WEB TASARIM I. Öğr. Gör. M. Mutlu YAPICI. Ankara Üniversitesi Elmadağ Meslek Yüksekokulu

Veri Yapıları. Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz. İçindekiler:

C Konsol ve Komut Satırı

MATLAB a GİRİŞ. Doç. Dr. Mehmet İTİK. Karadeniz Teknik Üniversitesi Makine Mühendisliği Bölümü

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

ALGORİTMA VE PROGRAMLAMA II

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

C PROGRAMLAMA D İ L İ

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.

Program Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir.

Özyineleme (Recursion)

ANA SINIF TÜRETİLEN BİRİNCİ SINIF TÜRETİLEN İKİNCİ SINIF

PHP'ye Giriş Türkiye PHP Grubu - Linux Şenlikleri PHP Eğitim / Tanıtım Seminerleri Ankara, 11 Mayıs 2006 Hidayet Doğan <hdogan@hido.

ALT PROGRAMLAR BÖLÜM Giriş Alt Programlar Hakkında Genel Bilgiler

MTK467 Nesneye Yönelik Programlama. Hafta 4 - Döngüler Zümra Kavafoğlu

TESİ. indeks. söylenebilir?? bir ilişkidir d) Hiçbiri. veya somutlaştırılmış. düzeyidir? sağlayabilir? sına. d) Hepsi. olabilir? c) Verilerin d) Hepsi

Javascript. 1) Notepad++ aşağıdaki kodları yazıp deneme.html olarak kaydedelim. 2) Biraz önceki sayfa sadece html kodların içeriyordu.

BMT 101 Algoritma ve Programlama I 3. Hafta. Yük. Müh. Köksal GÜNDOĞDU 1

1.1. Yazılım Geliştirme Süreci

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

YZM 2116 Veri Yapıları

1 NEDEN PROGRAMLAMA ÖĞRENMELIYIZ?

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

R ile Programlamaya Giriş ve Uygulamalar

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Nesne Tabanlı Programlama Dersi Edirne Kız Teknik ve Meslek Lisesi

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

Göstericiler (Pointers)

Bilgisayar Programlama (COMPE 102) Ders Detayları

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

BİL-142 Bilgisayar Programlama II

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Genel Kullanılış 1: [değişken ismi] = [değişken ismi] [işlem] [sayı veya string ifade veya değişken]

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi

ELN1001 BİLGİSAYAR PROGRAMLAMA I

Eln 1001 Bilgisayar Programlama I

PostgreSQL ve PL/pgSQL

Bölüm 10: PHP ile Veritabanı Uygulamaları

VERİ TABANI ve YÖNETİMİ

Bir dizinin boyutları sabittir ve kullanılmadan önce belirlenmelidir. Dizi boyutunu belirlemek için başka bir değişkende kullanabilirsiniz.

Transkript:

YZM 3217 YAPAY ZEKA DERS#7: PROLOG DİLİ

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 Sabitler için Küçük harfler Değişkenler için Büyük harfler Program çıktıları çok sade Prolog da olmayanlar For, while döngüleri IF THEN yapısı Diziler ANCAK öz yinelemeli fonksiyonlarla yukarıdakiler sağlanır 2

Dekleratif Programlama Prolog Dekleratif programlama dili Prosedürel programlamada adım adım ne yapılması gerektiğini kodlarız (Ör: C, Pascal, Java vs.) Dekleratif programlamada bir durum tanımlanır. Bu tanıma göre yorumlayıcı ya da 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. 3

Örnek : Aile Ağacı pam tom bob liz ann pat jim 4

İ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ı (atomlar).: sonlandırıcı 5

Aile Ağacı Tüm aile ağacını aşağıdaki Prolog ifadeleriyle tanımlarız: pam ann bob tom pat liz parent(pam, bob). parent(tom, bob). parent(tom, liz). parent(bob, ann). parent(bob, pat). parent(pat,jim). jim 6

Prolog Sorguları?- iliski(a,b). a ve b arasında iliski isminde bir ilişki var mı? cevap YES yada NO?- iliski(a,b). b ile iliski adlı ilişkiyi doğrulayan A lar nelerdir? cevap varsa A lar yoksa NO A: değişken a, b: atom (sabit) 7

İlişkileri sorgulamak-1 Bob, Pat in ebeveyni mi??- parent(bob, pat). yes Tom, Ben in ebeveyni mi? :?- parent(tom, ben). no pam ann bob tom pat liz jim 8

İ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 pam ann bob jim tom pat liz 9

İ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 ; pam ann bob jim tom pat liz 10

İ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 X parent Y parent jim grandparent 11

İ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 X parent Y parent jim grandparent 12

Çocuk ilişkisi pam ann bob jim tom pat liz 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). 13

Kurallar Kurallar iki parçadan oluşur: head : böyledir (sonuç, çıkarım) body : eğer offspring(y, X) :- head parent(x, Y) body 14

Kuralların Çalışması Veritabanı: parent(pam, bob). parent(tom, bob). parent(tom, liz). parent(bob, ann). offspring(y, X) :- parent(x, Y). Sorgu: offspring(liz, tom). Çalışma Mekanizması: 1. offsprings ilişkisi için gerçek ara 2. Yok => offsprings ilişkisi için kural varsa uygula 3. Kuralda X tom la, Y liz le eşleştirilerek kuralın bir gerçeklemesi bulunur: offspring(liz,tom) :- parent(tom,liz). 4. 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 15

Örnek: 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 : parent X Y female mother mother(x, Y) :- parent(x, Y), female(x). 16

Örnek: Kız kardeş iliş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 parent İlişkinin Prolog da ifadesi : sister(x, Y) :- parent(z, X), parent(z, Y), female(x). X Z sister parent Y Sorgu: sister(x,pat). 17

Örnek: Hala ilişkisi Tüm X ve Y ler için, X, Y nin halasıdır Eğer Z, Y nin ebeveyni ise ve Z, erkek ise ve X, Z in kız kardeşi ise İlişkinin Prolog da ifadesi : sister(x, Y) :- parent(z, X), parent(z, Y), female(x). hala(x,y) :- parent(z,y), male(z), sister(x,z). 18

Sonuç Ata İlişkisi parent(pam, bob). parent(tom, bob). parent(tom, liz). PR1 parent(bob, ann). PR2 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). 19

Cevap nasıl bulunur? Prolog hedefe ulaşmak için programdaki yazılış sırasına göre cümlecikleri kullanır. by rule pr1 parent(tom, pat) no predecessor(tom, pat) Y = bob by rule pr2 parent(tom, Y) predecessor(y, pat) predecessor(bob, pat) by fact parent(tom, bob) by rule pr1 parent(bob, pat) yes 20

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

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(y,x):- futbolcu(x), taraftar(y), aynitakim(x,y), kendikalesinegolatar(x). sever(y,x):- futbolcu(x), taraftar(y), karsitakim(x,y), kendikalesinegolatar(x). 22

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.

Aşırı Yükleme Aynı isimde farklı ilişkiler olabilir: point(1, 1), point(1, 1, 1), point(1, 1, 1, 1), +(X,Y,Z):-Z is X+Y. +(X,Y,Z,F):-F is X+Y+Z.?- +(200,0.03,7.2,G). G = 207.23 ; No?- +(200,0.03,G). G = 200.03 ; No 27

Ve, veya ; (1) P :- Q; R. P doğrudur Eğer Q doğruysa veya R doğruysa Aynı ifadeyi aşağıdaki şekilde de yazabiliriz: P :- Q. P :- R. 28

Ve, veya ; (2) Ve, veya dan daha yüksek önceliklidir. Aşağıdaki iki ifade aynı sonucu verir: P :- Q, R; S, T, U. P :- (Q, R); (S, T, U). Aynı ifadeyi aşağıdaki şekilde de yazabiliriz: P :- Q, R. P :- S, T, U. 29

Hedefleri Birleştirme araba(chrysler,130000,3,kirmizi,12000). araba(ford,90000,4,gri,25000). araba(ferrari,30000,5,siyah,30000). kamyon(mercedes,10000,2,mavi,20000). kamyon(ford,50000,8,sari,28000). kamyon(volvo,35000,2,siyah,35000). arac(marka,kilometresi,yas,renk,fiyat):- araba(marka,kilometresi,yas,renk,fiyat); kamyon(marka,kilometresi,yas,renk,fiyat). 30

Fiyatı 25000 den az olan araçlar:?- arac(marka,kilometre,yasi,renk,fiyat), Fiyat<25000. Marka = chrysler KiloMetre = 130000 Yasi = 3 Renk = kirmizi Fiyat = 12000 ; Marka = mercedes KiloMetre = 10000 Yasi = 2 Renk = mavi Fiyat = 20000 ; No 31

Hedef Birleştirme Hasta mı? tahlil(ahmet,tahlil1,90). tahlil(ahmet,tahlil2,25). tahlil(ahmet,tahlil3,10). yuksektansiyon(x) :- (tahlil(x,tahlil1,y),y>100); (tahlil(x,tahlil2,z),z<30). kalphastasi(x) :- yuksektansiyon(x), tahlil(x,tahlil3,q), Q<20.?-kalphastasi(ahmet).

/*Unification Ch05Ex01.pro*/ domains title, author = symbol pages = integer predicates book(title, pages) written_by(author, title) long_novel(title) Goal: written_by(x, Y) X=fleming, Y=DR NO X=melville, Y=MOBY DICK 2 Solutions Goal: Trace CALL: written_by( _, _) RETURN: *written_by("fleming","dr NO ) YES clauses written_by(fleming, "DR NO"). written_by(melville, "MOBY DICK"). book("moby DICK", 250). book("dr NO", 310). long_novel(title) :- written_by(_, Title), book(title, Length), Length > 300. Goal: long_novel(title)

/* Backtracking Cho5ex02.pro */ predicates likes(symbol,symbol) tastes(symbol,symbol) food(symbol) clauses likes(bill, X) :- food(x), tastes(x, good). tastes(pizza, good). tastes(brussels_sprouts, bad). food(brussels_sprouts). food(pizza). Goal: likes(bill, X) X=pizza 1 Solution CALL: likes("bill",_) CALL: food(_) RETURN: *food("brussels_sprouts") CALL: tastes("brussels_sprouts","good") REDO: tastes("brussels_sprouts","good") REDO: food(_) RETURN: food("pizza") CALL: tastes("pizza","good") RETURN: tastes("pizza","good") RETURN: likes("bill","pizza")

/* Backtracking Cho5ex02.pro */ predicates likes(symbol,symbol) tastes(symbol,symbol) food(symbol) clauses likes(bill, X) :- food(x), tastes(x, good). tastes(pizza, good). tastes(brussels_sprouts, bad). food(brussels_sprouts). food(pizza). Goal: likes(bill, X) X=pizza 1 Solution CALL: likes("bill",_) CALL: food(_) RETURN: *food("brussels_sprouts") CALL: tastes("brussels_sprouts","good") REDO: tastes("brussels_sprouts","good") REDO: food(_) RETURN: food("pizza") CALL: tastes("pizza","good") RETURN: tastes("pizza","good") RETURN: likes("bill","pizza")

Arama Kontrolü Fail --- geriye doğru taramaya devam etmeyi zorlamak için. Cut(!) --- geriye doğru taramayı engellemek için kullanılır.

/* use of fail - Ch05ex06.pro */ domains name = symbol predicates father(name, name) everybody clauses father(leonard, katherine). father(carl, jason). father(carl, marilyn). everybody :- father(x, Y), write(x, " is ", Y, "'s father\n"), fail. Goal: father(x, Y) X=leonard, Y=katherine X=carl, Y=jason X=carl, Y=marilyn 3 Solutions Goal: Without fail Goal: everybody leonard is katherine s father YES Goal: With fail Goal: everybody leonard is katherine's father carl is jason's father carl is marilyn's father No Goal:

/* Cut Example - Ch05ex07.pro */ predicates buy_car(symbol, symbol) car(symbol, symbol, integer) colors(symbol, symbol) clauses buy_car(model, Color) :- car(model, Color, Price), colors(color, sexy),!, Price < 25000. car(maserati, green, 25000). car(corvette, black, 24000). car(corvette, red, 26000). car(porsche, red, 24000). colors(red, sexy). colors(black, mean). colors(green, preppy). Goal: buy_car(x, Y) No Solution Goal: buy_car(x, red) No Solution CALL: buy_car(_,"red") CALL: car(_,"red",_) REDO: car(_,"red",_) REDO: car(_,"red",_) RETURN: *car("corvette","red",26000) CALL: colors("red","sexy") RETURN: colors("red","sexy") 26000<25000 FAIL: buy_car(_,"red")