Anda di halaman 1dari 4

02/23/2013

Logic Programming
• Pemrograman deklaratif, mendeklarasikan tujuan
komputasi, bukan menyusun algoritme secara
detil.
LOGIC PROGRAMMING • Disebut juga rule-based programming.
• Aplikasinya:
– Artificial intelligence, misalnya MYCIN
Bahasa Pemrograman – Database information retrieval, misalnya SQL
Kuliah #5 • Fitur dari pemrograman logika:
– Nondeterministik, program bisa memperoleh banyak
jawaban, tidak hanya satu jawaban
– Backtracking, lacak balik secara otomatis

Julio Adisantoso, IPB 2

Horn clauses Horn clauses


• Program logika menggunakan ekspresi logika • Dapat ditulis sebagai
matematika untuk jawaban masalah. h  p1, p2, …., pn
• Dasar pemrograman logika adalah proposisi
dan predikat. Artinya, h adalah benar (true) hanya jika p1, p2, …., pn
• Salah satu bentuknya adalah Horn clause. secara simultan adalah benar.
• Definisi: • Contoh:
Horn clause memiliki sebuah head h yang disebut salju(C)  hujan(C), beku(C)
sebagai predikat, dan body sebagai daftar dari
predikat p1, p2, …., pn.

Julio Adisantoso, IPB 3 Julio Adisantoso, IPB 4

Logika Predikat Bahasa Deklaratif


• Disebut juga kalkulus predikat. • Prawiro adalah bapak dari Joko, ditulis:
• Dinyatakan dalam bentuk fakta dan aturan. bapak(prawiro, joko).
• Contoh:
– lelaki(joko) // fakta • A adalah kakek dari Z, dibuat aturan:
jika A bapaknya X dan X bapaknya Z
– menikah(joko, tuti) // fakta atau
– yx orang(y)  ibu(x,y) // aturan jika A bapaknya X dan X ibunya Z
ditulis sebagai
– xy[menikah(x,y)  lelaki(x)]  ~lelaki(y) kakek(A,Z) :- bapak(A,X), bapak(X,Z).
• lelaki, menikah, orang, ibu disebut relasi. kakek(A,Z) :- bapak(A,X), ibu(X,Z).

Julio Adisantoso, IPB 5 Julio Adisantoso, IPB 6

1
02/23/2013

Operator Relasi Fakta


HANYA JIKA :- • Kenyataan atau kebenaran yang diakui
DAN , • Menyatakan:
– Hubungan dua atau lebih obyek
ATAU ; – Sifat obyek
• Contoh:
bapak(prawiro, joko).
merah(darah).
asin(garam).

Julio Adisantoso, IPB 7 Julio Adisantoso, IPB 8

Aturan Variabel
• Argumen suatu predikat, berupa atom,
• Logika yg dirumuskan dalam bentuk relasi
variabel, atau obyek lain.
sebab-akibat dan hubungan implikasi.
• Disebut sebagai TERM.
• Dua jenis variabel (diawali dengan huruf
• Contoh:
kapital):
kakek(A,Z) :- bapak(A,X), bapak(X,Z).
– Bernama, misal: X, Joko, Orang
kakek(A,Z) :- bapak(A,X), ibu(X,Z).
– Tak bernama (place holder): _
• Simbol (diawali dengan huruf kecil), misalnya:
joko, orang
Julio Adisantoso, IPB 9 Julio Adisantoso, IPB 10

Compiler Prolog GNU dan SWI Prolog


• GNU Prolog (http://www.gprolog.org/)
atau SWI Prolog (http://www.swi-prolog.org/)
• is a free Prolog compiler
• Prosedur :
– Tulis program prolog menggunakan editor yang
mudah.
– Simpan file program sumber dengan nama *.pro,
misalnya contoh1.pro
– Jalankan program Prolog
– Loading program, misalnya [contoh1] atau
menggunakan menu File | Consult.
– Jalankan query
Julio Adisantoso, IPB 11 Julio Adisantoso, IPB 12

2
02/23/2013

contoh1.pro Load and Query (contoh1.pro)


kakek(X,Z):- ayah(X,Y), ayah(Y,Z). LOAD :
kakek(X,Z):- ayah(X,Y), ibu(Y,Z). ?- [contoh1].
ayah(john,bill). QUERY :
ayah(bill,mary). ?- ayah(Ayah,chris).
ayah(bill,tom). ?- kakek(X,chris).
ayah(tom,chris).
ayah(tom,bob).
ibu(mary,june).
ibu(mary,katie).

Julio Adisantoso, IPB 13 Julio Adisantoso, IPB 14

GNU Prolog Console Contoh2.pl


ukuran(beruang, besar).
ukuran(gajah, besar).
ukuran(kucing, kecil).
warna(beruang, coklat).
warna(kucing, hitam).
warna(gajah, kelabu).
gelap(Z):-warna(Z, hitam).
gelap(Z):-warna(Z, coklat).

Julio Adisantoso, IPB 15 Julio Adisantoso, IPB 16

Load and Query (contoh2.pro) Latihan #1


LOAD : Buat program logika untuk menentukan hasil
?- [contoh2]. pengurangan bilangan pertama dan kedua.
QUERY :
?- gelap(Z), ukuran(Z,besar).

Julio Adisantoso, IPB 17 Julio Adisantoso, IPB 18

3
02/23/2013

Latihan #2 Latihan #3
Buat program logika untuk menentukan Buat program logika untuk menentukan nilai
bilangan terbesar dari dua bilangan faktorial dari bilangan bulat n, n≥0

Julio Adisantoso, IPB 19 Julio Adisantoso, IPB 20

Latihan #4 Latihan #5
Buat program logika untuk menentukan nilai deret fibonacci ke n, n≥0 Buat program logika untuk menjumlahkan deret
fibonacci(0) = 0
fibonacci(1) = 1 1+2+3+…+ n, n≥1
fibonacci(n) = fibonacci(n-1) + fibonacci(n-2)

Julio Adisantoso, IPB 21 Julio Adisantoso, IPB 22

Latihan #6
Buat program logika untuk menentukan a
pangkat b, dimana a dan b bilangan bulat dan
a,b≥0

Julio Adisantoso, IPB 23

Anda mungkin juga menyukai