ikp213-05-prolog

20

Click here to load reader

Transcript of ikp213-05-prolog

Page 1: ikp213-05-prolog

BAHASA PEMROGRAMAN

(IKP213)

Pertemuan 5: Prolog, 22 November 2011

Page 2: ikp213-05-prolog

Pemrograman Prolog

Pemrograman Prolog – IKP213

2

Pemrograman Deklaratif

Fakta

Aturan-aturan deduksi

First-Order Predicate Logic

Execution Engine

unification

resolution

Page 3: ikp213-05-prolog

Pemrograman Prolog

Pemrograman Prolog – IKP213

3

Konstanta, Entitas, Atom

rangkaian huruf lower case

pat, jim, bob, . .

Variabel

huruf UPPER CASE

X, Y, Z, . .

Page 4: ikp213-05-prolog

SWI-Prolog

Pemrograman Prolog – IKP213

4

http://www.swi-prolog.org/

Implementasi Prolog di Windows

Tuliskan fakta dan rules dalam berkas teks

Consult berkas teks dari IDE SWI-Prolog

File Consult

Tuliskan kueri / goals

Page 5: ikp213-05-prolog

Contoh Silsilah Keluarga

Pemrograman Prolog – IKP213

5

Page 6: ikp213-05-prolog

Fakta Silsilah Keluarga

Pemrograman Prolog – IKP213

6

parent(tom,bob).

parent(pam,bob).

parent(tom,liz).

parent(bob,ann).

parent(bob,pat).

parent(pat,jim).

Relasi dengan arity 2

parent/2

Page 7: ikp213-05-prolog

Kueri Prolog

Pemrograman Prolog – IKP213

7

parent(tom, X).

X = bob ;

X = liz ;

false.

Siapa yang memiliki tom sebagai orang tua?

parent(Y, ann).

Y = bob ;

false.

Siapa orang tua dari ann?

Page 8: ikp213-05-prolog

Kueri Prolog

Pemrograman Prolog – IKP213

8

parent(X, Y).

Menampilkan semua fakta

Cari semua X dan Y yang memenuhi relasi parent

Substitusi variabel dengan atom di dalam fakta

yang ada

Tidak ada atom yang dapat mensubstitusi: false

parent(badu, Y).

false.

Page 9: ikp213-05-prolog

Konjungsi Kueri

Pemrograman Prolog – IKP213

9

Siapa grandparent dari jim?

Siapa parent dari jim? Y

Siapa parent dari Y? X

X adalah grandparent dari jim

parent(Y, jim), parent(X, Y).

Cari seseorang, Y, yang menjadi parent dari jim

dan cari X yang menjadi orang tua dari Y

Page 10: ikp213-05-prolog

Fakta-fakta Baru

Pemrograman Prolog – IKP213

10

female(pam).

female(liz).

female(pat).

female(ann).

male(tom).

male(bob).

male(jim).

Relasi dengan arity 1

Page 11: ikp213-05-prolog

Rules

Pemrograman Prolog – IKP213

11

offspring(X, Y) :- parent(Y, X).

X adalah offspring dari Y, jika Y adalah parent

dari X

mother(X,Y) :- parent(X,Y),

female(X).

X adalah mother dari Y, jika X adalah parent dari

Y dan X adalah female

Page 12: ikp213-05-prolog

Unifikasi

Pemrograman Prolog – IKP213

12

parent(X, liz).

Periksa semua fakta yang diberikan

Untuk fakta yang sama, terapkan algoritma Unifikasi

Disagreement set

parent(X, liz) dengan parent(tom, bob).

disagreement set {X, tom}

fail

parent(X, liz) dengan parent(tom, liz).

disagreement set {X, tom}

success

Page 13: ikp213-05-prolog

Resolusi

Pemrograman Prolog – IKP213

13

offspring(X, liz)

Terapkan algoritma unifikasi untuk rule offspring(X, Y)

disagreement set {liz, Y}

resolusi / menggantikan Head Goal offspring(X, Y)

dengan sub-goal parent(Y, X)

unifikasi Y dengan liz pada sub-goal parent(Y, X)

Unifikasi sub-goal parent(liz, X)

Page 14: ikp213-05-prolog

Monkey and Banana Problem

Pemrograman Prolog – IKP213

14

States

Monkey at door

Monkey on floor

Box at window

Monkey does not have banana

Ultimate goal

state(X, Y, Z, has).

Page 15: ikp213-05-prolog

Monkey and Banana Problem

Pemrograman Prolog – IKP213

15

Allowable moves

grasp banana

climb box

push box

walk around

Prolog rule

move ( state(middle, onbox, middle, hasnot), grasp,

state(middle, onbox, middle, has) ).

Page 16: ikp213-05-prolog

Monkey and Banana Problem

Pemrograman Prolog – IKP213

16

canget(state(atdoor, onfloor, atwindow, hasnot) ).

Page 17: ikp213-05-prolog

Ringkasan

Pemrograman Prolog – IKP213

17

Deklarasi clauses berupa fakta dan rules

Fakta dinyatakan dengan relasi

Fakta memuat Atom

Rules memuat Variabel

Kueri (Goals) memuat Variabel atau Atom

Page 18: ikp213-05-prolog

Latihan

Pemrograman Prolog – IKP213

18

Siapa grandparent dari ann?

Siapa grandchild dari bob?

Tuliskan rule aunt(X, Y)

Tuliskan rule hastwochildren(X)

Tuliskan rule hasdaughter(X)

Tuliskan rule grandchildren(X, Y)

Page 19: ikp213-05-prolog

Pustaka

SWI-Prolog, http://www.swi-prolog.org/

GNU-Prolog

Ivan Bratko, "Prolog Programming for Artificial

Intelligence"

http://tjerdastangkas.blogspot.com/search/label/ikp213

19

Pemrograman Prolog – IKP213

Page 20: ikp213-05-prolog

AKHIR PERTEMUAN 4

Rabu, 19 Oktober 2011