Pengenalan PrologTeny Handhayani
Referensi:Programming in Prolog by William F. Clocksin & Christopher S. Mellish
Prolog
Pemrograman prolog terdiri atas:
1. menjelasan fakta tentang objek dan relasinya
2. menjelaskan rules tentang objek dan relasinya
3. menanyakan pertanyaan tentang onjek dan relasinya
Facts
Facts Mendefinisikan fakta tentang “John likes Mary”. Fakta ini terdiri atas dua objek, “Marry” dan “John”, dan relasinya
“likes” Penulisan dalam Prolog
likes(john,mary).
likes(john,mary). Tidak sama dengan likes(mary,john).
Hal-hal yang harus diperhatikan:1. Nama semua relasi dan objek harus dimulai dengan huruf
kecil. Contoh: likes, john, mary2. Relasi ditulis pertama, dan objek ditulis dan dipisahkan dengan
koma. Objek diletakkan dalam tanda kurung3. Tanda titik “.” digunakan untuk mengakhiri fact. Tanda titik
dinamakan ‘periood’ atau ‘‘full stop
Facts
Contoh
Mendefinisikan sebuah predikat “play”, dengan duapemain dan game yang dimainkanplay(john, mary, football)play(jane, jim, badminton)
valuable(gold). Gold is valuablefemale(jane). Jane is femaleowns(jane,gold). Jane owns goldfather(john,mary). John is the father of Mary
gives(john,book,mary). John gives the book to Mary
Questions
Question mirip seperti fact, perbedaannya adalah adanya simbol di depannya
Contoh?-owns(mary, book).
Jika kita menginterpretasikan mary sebagai manusia yg bernama“Mary” dan ‘book’ adalah semabarang buku
Pertanyaan berarti -> Does Mary own the book? Ketika question ditanyakan pada sistem Prolog, maka akan dicari
dalam database Unify : jika dua facts memiliki predikat yang sama dan jika
hubungan argumen keduanya sama Jika Prolog menemukan fact unify dengan questions maka Prolog
memberikan respon ‘yes’ Jika tidak ada fact yang sesua dalam database maka Prolog
memberikan respon ‘no’
Questions
Contoh 1:likes(joe, fish).likes(joe, mary).likes(mary, book).likes(john, book).likes(john, france).
Questions?-likes(joe, money).
no?-likes(mary, joe)
no?-likes(mary, book).
yes
Questions
Contoh 2:
human(socrates).
human(aristotle).
athenian(socrates).
Questions:
?-athenian(socrates).
yes
?-athenian(aristotle).
no
Variables
Menjelaskan suatu objek X yang belum diketahui
Variable pada Prolog: instantiated atau not instantiated
Variable instantiated: penjelasan tentang objek tersebutdiketahui
Variable not instantiated: penjelasan objek tidakdiketahui
Contoh:
Does John like X?
X tidak diketahui sebagai objek apa?
Variables
Contoh
?-likes(john, something that John likes).
Menggunakan variable dalam prolog
?-likes(john, X).
Questions
?-likes(john, SomethingThatJohnLIkes).
*variable dapat berupa sembarang huruf yang diawalidengan huruf kapital
Variable
Factslikes(john, flowers).likes(john, mary).likes(paul, mary).
Question?-likes(john, X).
Pertanyaan menanyakan Is there anything that John likes? Prolog akan memberikan respon X = flowers Question
?-likes(X, mary).X = john; jawaban pertamaX = paul; jawaban ke duano tidak ada lagi jawaban
Conjuctions
Do John and Mary like each other?
Database
likes(mary, chocolate).
likes(mary, wine).
likes(john, wine).
likes(john, mary).
Does John like mary? And does Mary like John?
Menggunakan koma ‘,’ untuk melakukan conjuction‘and’
?-likes(john, mary), likes(mary, john).
Rules Menjelaskan bahwa John likes all people
likes(john,alfred).likes(john, bertrand).likes(john, charles).….
I use an umbrella if there is rain John buys the wine if it is less expensive than the beer Rules:
X is a bird if:
X is an animal, and
X has feathers.
atauX is a sister of Y if:
X is female, and
X and Y has the same parents
Rules
Rukes terdiri atas head dan body yang dihubungkandengan simbol ”:-” dibaca “if”
likes(john, X) :- likes(X, wine).
likes(john, X) :-likes(X,wine), likes(X, food).
John likes anyone who likes wine and food
John likes any female who likes wine
likes(john, X) :- female(X), likes(X,wine).
Latihan
Nama:
Hayam_wuruk (raja - true)
Hasanudin (raja - true)
Tribuana (ratu - true)
Elizabeth (ratu - true)
Jokowi (bukan raja, bukan ratu)
Kartini (bukan raja, bukan ratu)
Desi (bukan raja, bukn ratu)
Buatlah program Prolog yang dapat mengidentifikasi nama-nama tersebut apakah sebagai ratu atau raja!
Instalasi
Instal SWI Prolog
Instal SWI Editor, SWI Editor hanya bisa digunakandengan SWI Prolog 32 bit
Buatlah rule untukhubungan:1.father2.mother3.son4.daughter5.grandfather6.aunt7.sister8.uncle9.cousin10.brother
Buatlah rule untuk hubungan:1.father2.mother3.son4.daughter5.grandfather6.aunt7.sister8.uncle9.cousin10.brother