Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
1
Yapay Zeka ve Uzman Sistemler
Aslı Eyecioğlu Özmutlu
2
Hedefler Prolog Uygulamaları
3
Prolog Uygulamaları SWI-Prolog İndirilmesi Çalıştırlması
Dosya oluşturma
4
Prolog Uygulamaları Genel Bilgiler SWI-Prolog’da bilgilerini yüklemek istediğiniz ‘pl’ uzantılı dosyayı şu şekilde çalıştırın. File Consult ‘dosyanın bilgisayarda kayıtlı olduğu yer’
5
Prolog Uygulamaları Genel Bilgiler Sorgulama yaparken nokta (.) koymayı unutmayın. Şöyle bir ekran çıkar karşınıza: ?- ebeveyn(ali) | Unuttuysanız notka (.) koyup devam edin. | . Yes
6
Prolog Uygulamaları Genel Bilgiler Her yeni dosya yüklediğinizde eski bilgiler (önceden consult edilen dosyaların bilgileri) prologda saklı kalacaktır. O yüzden sorgulama ekranına ‘halt.’ yazıp çalıştırın. ?-halt.
7
Prolog Uygulamaları Genel Bilgiler Bilgi yüklü dosya consult edildikten sonra içindeki bilgileri görmek için yerleşik fonksiyon olan ‘listing.’ sorgulama ekranına yazılır: ?-listing.
8
Prolog Uygulamaları Temel Sorgulama Mustafa sihirbazdır.
Mustafa Ali’yi korkutur. Tüm sihirbazlar buyucudur. Ayten tum buyuculerden nefret eder. Kemal tum buyuculerden nefret eder. Ali’nin babasi Ali’yi korkutan herseyden nefret eder. Bu cümleleri prologda yazın.
9
Prolog Uygulamaları Temel Sorgulama
Sonra yazdığımız gerçekler ve kurallarla ilgili sorgulama yapalım. Sorgular: Kemal Mustafa’dan nefret eder mi? Kemal neden nefret eder? Ayten neden nefret eder?
10
Prolog Uygulamaları SYNTAX ERROR Sihirbaz(mustafa).
nefret_eder(alinin babasi,X) :- korkutur(X,ali). S büyük harf olduğu için yazım hatasıdır ’alinin babasi’ tırnak içinde kullanılırsa dogru olur.
11
Prolog Uygulamaları SYNTAX ERROR Sihirbaz(mustafa).
nefret_eder(alinin babasi,X) :- korkutur(X,ali). S büyük harf olduğu için yazım hatasıdır ’alinin babasi’ tırnak içinde kullanılırsa dogru olur. ! Türkçe karakterlere dikkat!!!
12
Prolog Uygulamaları SİNGLETON VARIABLES buyucu(X):- sihirbaz(Y).
X ve Y herhangi bir gercekle ya da kuralla eşlesmedi (unification)
13
Gryffindor Table Bu masada kim kimin yanında oturuyor?
Bunun kuralını yazdıran prolog programı nasıl yazılır?
14
Gryffindor Table sağında_oturur(X,Y). solunda_oturur(X,Y). ortasındadır(X,Y,Z) :- solunda_oturur(X,Y), sağında_oturur(Z,Y). Y ortadadır eğer X, Y nin solunda ve Z, Ynin sağında oturursa.
15
Gryffindor Table yanyana_oturur(X,Y). Eğer X, Ynin solunda veya X,Y’nin sağındaysa. yanyana_oturur(X,Y) :- solunda_oturur(X,Y); sağında_oturur(Y,X). X ve Y yanyana oturuyorsa, X, Y’nin ya solundadır ya da sağında.
16
Aile Ağacı Bu aile ağacındaki ilişkileri tanımlayalım:
17
Aile Ağacı father_of(Father,Child) and mother_of(Mother,Child)
grandfather_of(Grandfather,Child) and grandmother_of(Grandmother,Child) sister_of(Sister,Person) brother_of(Brother,Sister) aunt_of(Aunt,Person) and uncle_of(Uncle,Person)
18
Tomorrow’s Lunch Starters green salad melon tomato salad rabbit pate
Main dishes rock salmon with mayonnaise and capers roast beef with girolle mushroom sauce pasta, courgette and cheese bake Desert cheese yoghurt Paris Brest pastry
19
Tomorrow’s Lunch Starters green salad melon tomato salad rabbit pate
Main dishes rock salmon with mayonnaise and capers roast beef with girolle mushroom sauce pasta, courgette and cheese bake Desert cheese yoghurt Paris Brest pastry Problem: Yandaki verilen menüden yola çıkarak kişinin, çok_aç, az_aç, diyette Olup olmadığına göre ne yiyebileceğini bulan programı yazdıralım. Önce yandaki bilgileri bilgi tabanına işleyelim.
20
Tomorrow’s Lunch Önce yandaki bilgileri bilgi tabanına işleyelim :
starter, main, desert adlı yüklemleri oluşturalım. çok_aç, az_aç, aç_değil, diyette bilgilerinin kurallarını oluşturalım: çok_aç: Çok aç olan biri her bir menuden (starter, main, desert ) bir tane seçebilir. az_aç: Az aç olan biri bu menuden sadece iki yemek seçebilir. Starter,main veya main,desert. diyette: diyette olan biri sadece starter seçebilir. 1. Adımda seçim yapabileceğimiz 3 farklı değişken var. bu değişkenleri sorgulamak için yeni bir yüklem oluşturalım. Buna menu diyelim. menu(X,Y,Z). 2. Adımda menu yuklemine açlık durumu bilgilerini taşıyacak başka bir değişken daha atayalım. menu(açlık_durumu, X,Y,Z).
21
Tomorrow’s Lunch menu (starter, main, desert ) menu(X,Y,Z)
menu(Açlık_durumu,X,Y,Z) çok_aç: X,Y,Z az_aç: X,Y veya X,Z veya Y,Z diyette: X menu(cok_ac,X,Y,Z) :- starter(X),main(Y),desert(Z). menu(az_ac,X,Y,yok) :- starter(X),main(Y). menu(az_ac,yok,Y,Z) :- main(Y), desert(Z). menu(diyette,X,yok,yok) :- starter(X)
22
Adımları İzleme(Trace)
trace yerleşik bir yüklemdir ve adımları izlememize izn verir. Prolog programının 4 farklı port’u (giriş-çıkış ünitesi) vardır.
23
Adımları İzleme(Trace)
Call: goal’e ulaşmak için cümleleri taramaya başlar. Exit: goal’e ulaştığında oraya bir izleme noktası bırakır(backtracking point), değişkenleri bilgilere atadıktan sonra aramayı bitirir. Redo:Goal’e ulaşamazsa izleme noktasına geri döner tekrar arama yapar. Fail:Değişkenler bilgi tabanındaki cümlelerle eşleşmezse False sonucunu verir.
24
Sentence Generator word(article,a). word(article,every).
word(noun,criminal). word(noun,'big kahuna burger'). word(verb,eats). word(verb,likes). sentence(Word1,Word2,Word3,Word4,Word5) :- word(article,Word1), word(noun,Word2), word(verb,Word3), word(article,Word4), word(noun,Word5). ?- sentence(A,B,C,D,E).
25
Travel Travel diye yeni bir yüklem tanımlayalım ve
Özyineleme (Recursive) 3 farklı yolculuk türü bilgisi yüklü bir bilgi tabanı var. byCar(auckland,hamilton). byCar(hamilton,raglan). byCar(valmont,saarbruecken). byCar(valmont,metz). byTrain(metz,frankfurt). byTrain(saarbruecken,frankfurt). byTrain(metz,paris). byTrain(saarbruecken,paris). byPlane(frankfurt,bangkok). byPlane(frankfurt,singapore). byPlane(paris,losAngeles). byPlane(bangkok,auckland). byPlane(losAngeles,auckland). Travel diye yeni bir yüklem tanımlayalım ve travel(valmont,raglan) sorgusuna True cevabı versin.
26
Yararlanılan Kaynaklar
Fatih Amasyalı, Prolog Programlama Dilinde Makina Mühendisliği Alanında Uzman Sistemlerin Hazırlanması, 1998, Harran Üniversitesi,Yüksek Lisans Tezi.
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.