Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
1
Yapay Zeka ve Uzman Sistemler
Aslı Eyecioğlu Özmutlu
2
Proje Çalışması Gruplar en fazla 6, en az 3 kişilik olacak.
Gruplar belirlendikten sonra aşağıdaki form en geç 22 Kasım 2017 tarihine kadar doldurulacak:
3
Prolog-2 Online IDE Prolog-1 Özet Doğal dil ve Prolog
Predicates/Clauses/Goals
4
Prolog-2 Online IDE https://ideone.com/
Her programlama dili için kullanılabilir online tümleşik geliştirme ortamı.
5
Prolog Özet Bir Prolog programı iki tür ifadelerden oluşur: Gerçekler ve Kurallar. · Gerçekler, programcının doğruluğundan emin olduğu bilgiyi ilişkiler veya özellikler olarak anlattığı satırlardır. · Kurallar, bağımlı ilişkilerdir. Prolog bu kuralları kullanarak bir bilgiden hareketle bir konuda karar verir. Bir kural, verilen şartlar yerine geliyorsa başarılı olur, yani doğru olur.
6
Prolog Özet · Baş kısmı verilen gerçekler doğrulanıyorsa doğrudur.
· Prolog’da bütün kuralların iki kısmı vardır: Baş ve Gövde kısmı. Bunlar birbirinden :- sembolleri ile ayrılırlar. · Baş kısmı verilen gerçekler doğrulanıyorsa doğrudur. · Gövde kısmı ise doğru olması gereken şartları taşır. Böylece Prolog, programın baş kısmının doğru olduğunu ispatlayabilir.
7
Prolog Özet Gerçekler ve kurallar birbirinin aynısıdır. Gerçeklerin kurallardan tek farkı, açıklayıcı bilgi taşıyan gövdelerinin olmamasıdır. Prolog’a bir dizi gerçek veya kural tanıttıktan sonra, bu gerçekler veya kurallar hakkında soru sormak mümkündür. Buna Prolog Sistemini Sorgulama denir.
8
Prolog Özet Prolog’daki Karar Motoru bir kuralın baş ve gövde kısmını incelerken, bilinen gerçek ve kurallara başvurur. Şartların yerine gelip gelmediğini kontrol eder. Bir kuraldaki bütün şartlar doğrulandıktan sonra, bağımlı olan kısım, yani kuralın baş kısmının doğru olduğuna karar verir. Bütün şartlar, bilinen gerçeklere göre karşılanamazsa, sorguya olumlu cevap verilemez.
9
Prolog Programı Bileşenleri
Prolog programı 4 bileşenden oluşur: Yüklemler (Predicates) Gerçekler ve Kurallar (Facts and Rules) Değişkenler (Domains) Hedefler/Sorgular (Goals)
10
Yüklemler (Predicates)
Bir ilişkinin sembolik ismine yüklem denir ve yükleme bağlı olan nesnelere argüman denir. Bir yüklemin genel yazılış biçimi şöyledir: yuklem_adi(argüman_tip1, argüman_tip2, argüman_tip3,….,argüman_tipN) Mesela sever(yasin, esra) gerçeğindeki sever ilişkisi yüklem, yasin ve esra ise bu yüklemin agrümanları olan nesnelerdir.
11
Yüklemler (Predicates)
Argümanlı ve agrümansız yüklem örnekleri: sahis(soyad, ad, cinsiyet). sahis yüklem; soyad, ad, cinsiyet ise bu yüklemin argümanlarıdır. basla = argümanı olmayan yüklem Sınırlı olmakla beraber, bir yüklem argümansız olarak da kullanılabilir.
12
Gerçekler ve Kurallar(Clauses)
Gerçekler ve Kurallar (Clauses) Prolog dilini oluşturan iki türlü ifade vardır. Bu ifadeler gerçekler veya kurallardan ibarettir. Prolog dilinin kalbini oluşturan bu ifadelere clause denilmektedir.
13
Sorgular/Hedefler(Goals)
Sorgular (Goals) Prolog dilinde ulaşılması istenen bilgilerin doğruluğunu sorguladığımız bölümdür. Program çalışırken Prolog ilk önce GOAL satırını çalıştırır.
14
Değişkenler(Domains)
Değişkenler büyük harf veya alt çizgiyle başlar. Devamında harf, rakam veya simgeler olabilir. Anonim Değişken Sadece alt çizgiyle (_) oluşturulan değişkenlere anonim değişken denir. Anonim değişkenler, programların gereksiz bilgi ve satırlarla karmaşık hale gelmelerini engeller. Böylece bir sorgulamadan beklenilen bilgileri alabilir ve ihtiyaç olmayan değerler iptal edilmiş olur.
15
Değişkenler(Domains)
Anonim Değişken Her alt çizgi karakteri yeni bir anonim değişken ifade eder. Not: Anonim değişkenler True yada False değeri döndürür. Diğer değişkenlerin yerine kullanılabilen anonim değişkenlerin, normal değişkenlerden tek farkları şudur: anonim değişkenler hiçbir zaman bir değere eşitlenemezler. vardir(_,televizyon). yemek_yer(_). İfadeleri konuşma dilinde “Herkesin televizyonu var” ve “Herkes yemek yer” olarak çevrilebilir. Örneğin; ?-parent(Ali,_). Sadece Alinin çocuğu var mı ? True yada False
16
Değişkenler(Domains)
Anonim Değişken Örnek: CLAUSES erkek(selahattin). erkek(cihat). bayan(sacide). bayan(sezen). ebeveyn(selehattin, cihat). ebeveyn(sacide, cihat). ebeveyn(selehattin, sezen). GOAL ebeveyn(Ebeveyn,_).
17
Değişkenler(Domains)
Anonim Değişken Yukarıdaki örnek yazdıktan sonra GOAL ebeveyn(Ebeveyn,_) sorgusu çalıştırılarak, ebeveyn olan kişilerin isimleri öğrenilebilir. Çocukların isimleri istenmediği için isimlerinin yerine anonim değişken kullanılmıştır. Programın sonucunda şu sonuç görüntülenir: Ebeveyn=selehattin /*Cihat’ın ebeveyni */ Ebeveyn=sacide /* Cihat’ın ebeveyni*/ Ebeveyn=selehattin /* Sezen’in ebeveyni*/ Tanımlanan değişken anonim olduğu için, alınacak cevabın ikinci argümanla bağlantısı olmayacaktır. Anonim değişkenler, gerçeklerin tanımlanmasında da kullanılabilir.
18
Örnek-1 CLAUSES satin_alabilir(X,Y):- sahis(X), araba(Y), hoslanir(X,Y), satilik(Y). sahis(ahmet). sahis(paki). sahis(cengiz). sahis(levent). araba(buick). araba(bmw). araba(passat). araba(toyota). hoslanir(paki,buick). hoslanir(levent, toyota). hoslanir(cengiz, passat). hoslanir(ahmet, tenis). satilik(pizza). satilik(toyota). satilik(buick). satilik(passat). PREDICATES nondeterm satin_alabilir(symbol, symbol) nondeterm sahis(symbol) nondeterm araba(symbol) hoslanir(symbol, symbol) satilik(symbol) Yukarıdaki programı yazdıktan sonra Levent ve Cengiz’in ne satın alabileceğini, kimin buick marka arabayı alabileceğini bulmak için aşağıdaki hedef cümleleri kullanılabilir: GOALS satin_alabilir(Kim, Ne). satin_alabilir(levent, Ne). satin_alabilir(cengiz, Ne). satin_alabilir(Kim, buick).
19
Örnek-1 DOMAINS title, author = symbol pages = unsigned PREDICATES
book(title, pages) nondeterm written_by(author, title) nondeterm long_novel(title) 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 written_by(X,Y)’dir.
20
Doğal dil ve 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 ve Prolog 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).
22
Doğal dil ve Prolog 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).
23
Örnek-2 Prolog’daki Kural yapısına bir örnekle yakından bakalım.
1. Aşağıdaki cümlede, menü’de olan bir yemeğin Mehmet’e uygun olup olmadığı sorgulanmaktadır. Mehmet ülser olduğu için sadece doktorunun izin verdiği yemekleri yer. Menü ve yukarıdaki kurala bakarak, Mehmet’in hangi yemeği sipariş edebileceğine karar verilebilir. Bunu yapabilmek için, menüdeki yemeğin belirli şartları taşıyıp taşımadığına bakılmaladır. a. Menudeki_yemek bir sebze mi? b. Menudeki_yemek doktorun tavsiye ettiği listede var mı? c. Sonuç: Eğer a ve b şıklarının ikisinin de cevabı ‘Evet’ ise, bu durumda Mehmet menüdeki bu yemeği yiyebilir.
24
Örnek-2 Yukarıdaki ifadeler; Prolog gerçekleri olarak şöyle yazılabilir: mehmet_yiyebilir(Menudeki_yemek):- sebze(Menudeki_yemek), doktor_tavsiyeli(Menudeki_yemek). sebze(Menudeki_yemek) ifadesinden sonra ‘,’ konulmuştur. Çünkü virgül, iki amaç arasındaki bağlantıyı gösterir ve ‘and’ anlamındadır. mehmet_yiyebilir(Menudeki_yemek) ilişkisinin doğrulanabilmesi için, sebze(Menudeki_yemek), doktor_tavsiyeli(Menudeki_yemek) ilişkilerinin her ikisinin de doğru olması gerekir.
25
Örnek-3 Bir müşteri arabayı severse ve araba satılık ise bu arabayı satın alabilir. Bu kural konuşma dilinde aşağıdaki şekilde ifade edilir. Müşteri modeli satın alabilir :- Müşteri bir şahıs ve Model bir araba ve Müşteri modelden hoşlanırsa ve Model satılık ise. Bu kuralın baş kısmı, gövde kısmındaki her dört şartın da doğrulanması halinde doğru olacaktır. Yukarıda yazılan gerçekler, aşağıdaki şekilde program haline getirilebilir.
26
Örnek-3 Bir müşteri arabayı severse ve araba satılık ise bu arabayı satın alabilir. Doğal dildeki bu ilişki, aşağıdaki kuralla Prolog’a aktarılabilir: satin_alabilir(Musteri, Model) :- sahis(Musteri), araba(Model), hoslanir(Musteri, Model), satilik(Model).
27
Örnek-3 Yandaki programı yazdıktan sonra Levent ve Cengiz’in
CLAUSES satin_alabilir(X,Y):- sahis(X), araba(Y), hoslanir(X,Y), satilik(Y). sahis(ahmet). sahis(paki). sahis(cengiz). sahis(levent). araba(buick). araba(bmw). araba(passat). araba(toyota). hoslanir(paki,buick). hoslanir(levent, toyota). hoslanir(cengiz, passat). hoslanir(ahmet, tenis). satilik(pizza). satilik(toyota). satilik(buick). satilik(passat). Yandaki programı yazdıktan sonra Levent ve Cengiz’in ne satın alabileceğini, kimin buick marka arabayı alabileceğini bulmak için aşağıdaki hedef cümleleri kullanılabilir: GOALS satin_alabilir(Kim, Ne). satin_alabilir(levent, Ne). satin_alabilir(cengiz, Ne). satin_alabilir(Kim, buick).
28
Birleşik Hedefler:Ve(,)-Veya(;)
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.
29
Birleşik Hedefler:Ve(,)-Veya(;)
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.
30
Birleşik Hedefler:Ve(,)-Veya(;)
Birleşik bir hedefin çözümünü bulmak için her iki alt hedefin doğru olması gerekir. Bu durumda, iki alt hedef arasında (ve) anlamına gelen ‘,’ kullanılır. Fakat istenilen durumlarda alt hedeflerden sadece birinin doğru olması şartı da aranabilir. Bu durumda alt hedefler arasında (veya) anlamına gelen ‘;’ kullanılması gerekir. Bu duruma Ayırma işlemi denilmektedir.
31
Birleşik Hedefler:Ve(,)-Veya(;)
PREDICATES nondeterm araba(symbol,long,integer,symbol,long) nondeterm kamyon(symbol,long,integer,symbol,long) nondeterm arac(symbol,long,integer,symbol,long) CLAUSES araba(chrysler,130000,3,kirmizi,12000). araba(ford,90000,4,gri,25000). araba(datsun,8000,1,kirmizi,30000). kamyon(ford,80000,6,mavi,8000). kamyon(datsun,50000,5,sari,20000). kamyon(toyota,25000,2,siyah,25000). arac(Marka,Kilometresi,Yas,Renk,Fiyat):- araba(Marka,Kilometresi,Yas,Renk,Fiyat); kamyon(Marka,Kilometresi,Yas,Renk,Fiyat). GOAL araba(Marka, Kilometresi, Kullanim_Suresi, Renk, 25000). Bu örnekteki hedef, tarif edilen dolarlık arabayı bulur.
32
Birleşik Hedefler:Ve(,)-Veya(;)
Benzer şekilde; fiyatı dolardan daha az olan bir araba var mı? şeklindeki bir soruya cevap bulmak da mümkündür. Bunun için GOAL araba(Marka, Kilometresi, Kullanim_Suresi, Renk, Fiyat), Fiyat< 25000 şeklindeki bir sorguyla bu sorunun cevabını bulmak mümkündür. Bu kuralı sorgulandığında, alınacak cevap chrysler olacaktır.
33
Birleşik Hedefler:Ve(,)-Veya(;)
Şimdi ‘fiyatı dolardan az olan bir araba veya fiyatı dolardan daha az olan bir kamyon var mıdır?’ şeklindeki bir soruya uygun bir hedef yazalım: GOAL araba(Marka, Kilometresi, Kullanim_Suresi, Renk, Fiyat), Fiyat< 25000; kamyon (Marka, Kilometresi, Kullanim_Suresi, Renk, Fiyat), Fiyat< Prolog ilk önce fiyatı dolardan daha az olan bir araba olup olmadığını araştırır. Sonuç doğru olsun veya olmasın, ikinci alt hedef de araştırılır. Her ikisinden birinin doğru olması durumunda alınacak cevap olumlu olacaktır. Hedefin doğrulanması için birden fazla alt hedefin aynı anda doğru olması gerekmez.
34
Prolog Çalışma Prensibi
Prolog, sorgulama esnasında, verilen gerçekler listesinin başından sonuna kadar tarama yapar ve taranacak gerçek kalmayana kadar gerçekleri tarar, sorguya uyan cevapları bulmaya çalışır.
35
Prolog Çalışma Prensibi
Eşleştirme (Unification) Prolog bir goal’ü bir subgoal (call) ile uyuşturmaya çalışırken Unification adı verilen bir arama işlemi yapılır. Unification, subgoal’de bulunan veri yapıları ile verilen clause’daki bilgileri uyuşturma çabasıdır. Unification, diğer geleneksel dillerde bulunan parametre iletme, durum seçimi (case selection), yapı yaratma (structure building), yapı erişimi (structure access) ve atama gibi işlemleri implement eder.
36
Prolog Çalışma Prensibi
Geriye İz Sürme (Backtracking) Bir problemin çözümünü ararken mantıksal bir yol izlemek gereklidir. Ama bazen izlenen mantıksal yol istenen sonuca ulaşamayabilir. Böyle bir durumla karşılaşıldığında başka alternatif çözüm yolları denemek gerekir. Örneğin bir labirentin içinde çıkış yolu bulmak üzere dolaşılırken izlenebilecek ve kesin çözüme götürecek yöntemlerden biri de yolun her ikiye ya da üçe ayrıldığı noktada hep soldaki yolu seçmektir. Bu şekilde ilerlenirken çıkmaz bir yere gelinirse en son sola dönülen yere kadar geriye dönülerek bu sefer sağdaki yol seçilip yine bir sonraki yol ayrımlarından hep sola dönme yöntemi izlenebilir. Bu şekilde olası tüm yollar denenmiş olur ve sonuca mutlaka ulaşılır.
37
Prolog Çalışma Prensibi
Geriye İz Sürme (Backtracking) Prolog da bu yöntemin aynısını kullanmaktadır. Bu yönteme “Backtracking”, yani “Geriye iz sürme” yöntemi denmektedir. Prolog bir probleme çözüm ararken, iki olası durum arasında karar vermek zorunda kalabilir. Her seçim yaptığı noktaya bir “Backtracking point”), yani bir belirteç koyarak subgoal’lerden ilkini sağlama işini gerçekleştirmeye çalışır. Eğer seçtiği subgoal çözüme ulaşmazsa Prolog geriye dönecek, belirteç koyduğu noktada diğer bir alternatifi seçerek çözümü aramaya devam edecektir.
38
Prolog Çalışma Prensibi
Geriye İz Sürme (Backtracking) Backtracking kavramı örnek bir program üzerinde açıklanabilir. PREDICATES nondeterm likes(symbol,symbol) nondeterm tastes(symbol,symbol) nondeterm food(symbol) CLAUSES likes(bill, X): food(X), tastes(X,good). tastes(pizza,good). tastes(spinach,bad). food(spinach). food(pizza). GOAL likes(bill,What). Bu örnekteki kuraldan Bill’in tadı güzel olan yiyeceklerden hoşlandığı anlaşılmaktadır. Program Bill’in neden hoşlandığını aramak üzere likes(bill,What) goal’ünü gerçekleştirecektir.
39
Prolog Çalışma Prensibi
Geriye İz Sürme (Backtracking) Bu iş için program baştan sona doğru taranmaya başlanır. Bulunan ilk clause’da What değişkeni X değişkeni ile unify edilir çünkü aranan ve bulunan clause’lar birbiriyle uyuşmuştur. likes(bill, What) likes(bill, X) Unification işleminden sonra Prolog, ele aldığı kuralın goal’ü sağlayıp sağlamadığını araştırır.
40
Prolog Çalışma Prensibi
Geriye İz Sürme (Backtracking) Bunun için kuralın ilk bölümü olan food(X) subgoal’ü ele alınır. Bu ilk subgoal’ü sağlamak için Prolog tekrar programın en başına döner. İlk clause’da X değişkeni spinach bilgisi ile sağlanır. Elde edilen çözüm dışında bir başka alternatif daha olduğu için Prolog ilk çözümü bulduğu noktaya bir Backtracking point koyar. Bu nokta Prolog’un spinach verisi için çözüm gerçekleşmezse geriye döneceği ve diğer alternatifi deneyeceği noktadır.
41
Prolog Çalışma Prensibi
Geriye İz Sürme (Backtracking) Bu veri ile Prolog tastes(spinach, good) subgoal’ünü sağlamaya çalışır. Bu subgoal kuralın ikinci maddesidir. Clause’lar arasında tastes(spinach, good) durumu sağlanmadığından Prolog Backtracking point koyduğu noktaya food(spinach) durumuna geri döner. Bu noktada Prolog başka bir değişkeni deneyebilmek için bu noktadan sonra bağladığı tüm değişkenleri bırakır. Programın bu noktada “food(X)” clause’u için deneyebileceği diğer alternatif veri pizza’dır. X değişkeni pizza verisine bağlanır. Bu noktadan sonra program sağlaması gereken ikinci subgoal olan tastes(pizza,good) clause’unu ele alır.
42
Prolog Çalışma Prensibi
Bu clause’a uygun bir durum olup olmadığı programın yine en başına dönülerek program sonuna kadar aranır. Aranan yeni subgoal program içinde bulunduğundan, çözümü aranan goal için başarıya ulaşılmış olur. Kontrol edilen likes(bill,What) goal’ü için “pizza” çözümü bulunur çünkü What değişkeni “likes” kuralındaki X değişkeni ile unify edilmiş ve X değişkeni de pizza verisine bağlanmıştır. Sonuç aşağıdaki gibi rapor edilir: What = pizza
43
Prolog Çalışma Prensibi
Backtracking’in Dört Temel İlkesi 1. Subgoal’ler yukarıdan aşağıya doğru sırayla sağlanmalıdır. 2. Clause’lar programın içinde bulundukları sıra ile test edilirler. 3. Bir subgoal bir kuralın sol taraf değeri ile uyuştuğu zaman, kuralın sağ tarafının da doğruluğu sağlanmalıdır. Kuralın sağ tarafı doğruluğu sağlanacak bir alt goal’ler kümesidir. 4. Bir goal, bulunması gereken tüm gerçekler bulunduğunda sağlanmış olur.
44
Prolog Çalışma Prensibi
CUT- Backtracking’i Önleme Prolog, backtracking’i önlemek için kullanılan ve ünlem işareti (!) olarak yazılan bir Cut mekanizmasını içerir. Cut programın içerisine bir subgoal’ün bir kuralın içerisine yerleştirildiği gibi yerleştirilir. İşlem sırası Cut’a gelince Cut çağrısı (call) başarı ile sonuçlanır ve eğer varsa bir sonraki subgoal çağrılır. Cut bir kere geçildiğinde bir daha Cut’tan önce ele alınmış subgoal’lere ve Cut’ın içinde bulunduğu predicate’ı tanımlayan diğer predicate’lere backtracking yapmak da mümkün değildir.
45
Prolog Çalışma Prensibi
CUT- Backtracking’i Önleme Cut’ın iki ana kullanımı vardır: Bazı olasılıkların asla anlamlı çözümlere ulaşmayacağı biliniyorsa alternatif çözüm aramak zaman kaybıdır. Eğer böyle bir durumda Cut kullanılıyorsa program daha hızlı çalışacak ve daha az bellek kullanacaktır. Bu durum Green Cut (Yeşil Cut) olarak adlandırılır. Program mantığı Cut’ı gerektiriyorsa alternatif subgoal’lerin dikkate alınmasını önlemek için kullanılır. Bu da Red Cut (Kırmızı Cut) olarak adlandırılır.
46
Prolog Çalışma Prensibi
Cut Nasıl Kullanılır? Kuralın içindeki bir önceki subgoal’e backtracking’i önleme • r1: a,b,!,c. Bu, Prolog programına a ve b subgoal’leri için bir çözümün yeterli olduğunu söyleme yoludur.
47
Prolog’da Problem Çözme
Ali okula gittiğinde öğlen yemeğini kantinde yer. Ali eve gittiğinde öğlen yemeğini mutfakta yer. Ali sınıfta kitap okudu. Bilgileri verilip ali öğlen yemeğini nerede yedi ? sorusuna cevap veren bir kodu yazalım . Burada bilinmesi gerekenler. Birisi bir yerde bulunmuşsa oraya gitmiştir. Birisi bir yere gitmişse ve o yeri içine alan yere de gitmiştir. Sınıf okulun içindedir. Oda evin içindedir.
48
Prolog’da Problem Çözme
Programda cümleler: vardir(yüklem,özne,belirtilinesne,dolaylıtümlec,cümleno) yapısında tutulmuştur. kapsar(oda,ev). kapsar(sinif,okul). vardir(oku,ali,kitap,sinif,12)
49
Prolog’da Problem Çözme
vardir2(git,M,_,Yer,_):-vardir(_,M,_,Yer,_). % M Yer'de bulunmuşsa -> M Yer'e gitmiştir • vardir2(F,M,B,Yer1,I):-kapsar(Yer2,Yer1),vardir2(F,M,B,Yer2,I). % M Yer2'de birşey yapmissa ve Yer2 yer1'i kapsiyorsa -> M Yer1'de de ayni seyi yapmistir • vardir2(yer,ali,oglenyemegi,mutfak,_):-vardir2(git,ali,_,ev,_). % ali eve gitmisse -> oglenyemegini mutfakta yer. • vardir2(yer,ali,oglenyemegi,kantin,_):-vardir2(git,ali,_,okul,_). % ali okula gitmisse -> oglenyemegini kantinde yer. vardir ilişkisi gerçek cümle(bilgi)leri, vardir2 ilişkisi türetilen cümle(bilgi)lerini ifade etmektedir.
50
Prolog’da Problem Çözme
• ?- vardir2(yer,ali,oglenyemegi,Nerede,_). • Nerede = kantin; • Burada sistem; – alinin sınıfta bulunduğunu görüp okulda bulunduğu bilgisini edinmiş. – Okulda bulunduğuna göre okula gitmiştir çıkarımını yapmış. – Okulda gittiğine göre yemeğini de kantinde yemiştir sonucuna ulaşmıştır. vardir(oku,ali,kitap,sinif,12). Cümlesi yerine vardir(oku,ali,kitap,oda,12). Cümlesi olsaydı sistemin cevabı mutfak olacaktır.
51
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. Vasif Nabiyev, Yapay Zeka, Seçkin Yayıncılık, 2016, 5. Baskı
52
Teşekkürler Aslı Eyecioğlu Özmutlu aozmutlu@bartin.edu.tr
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.