download

Matakuliah : KONSEP BAHASA PEMROGRAMAN
Tahun
: 2010
Pemrograman Logik
Pertemuan 13
Outline Materi
•
•
•
•
•
•
•
Pendahuluan
Pengantar Kalkulus Predikat
Kalkulus Predikat dan Teori Pembuktian
Review Pemrograman Logik
Origin Prolog
Elemen Dasar Prolog
Kekurangan Prolog
Bina Nusantara University
3
Pendahuluan
• Bahasa pemrograman logik atau bahasa pemrograman
deklaratif
• Menyajikan program dalam simbolik logik
• Menggunakan logika inferensi untuk menghasilkan
keluaran
• Deklaratif bukannya prosedural :
•hanya menyatakan spesifikasi hasil, bukannya prosedur rinci untuk
menghasilkannya
•
Aplikasi
•Sistem pengelolaan database relational
•Sistem pakar
Bina Nusantara University
•Pemrosesan bahasa natural
4
Proposisi dan Simbolik Logik
• Pernyataan logikal yang nilainya true atau false
• Terdiri dari obyek-obyek dan relasi diantara obyek
• Logik yang dapat digunakan untuk logik formal
– Ekspresikan proposisi
– Ekspresikan relasi diantara proposisi
– Uraikan bagaimana proposisi baru dapat di-infer dari proposisi
lain
• Bentuk khusus dari simbolik logik yang digunakan
pemrograman logik disebut kalkulus predikat
Bina Nusantara University
5
Representasi Obyek
• Obyek di proposisi disajikan sebagai term : konstan atau
variabel
• Konstant : simbol yang mewakili obyek
• Variabel: simbol yang mewakili obyek berbeda di waktu
berbeda
– Berbeda dari variabel di bahasa imperatif
Bina Nusantara University
6
Term Majemuk
• Atomik proposisi terdiri dari term majemuk
• Term majemuk : satu elemen dari relasi matematika, ditulis seperti
fungsi matematika
– Fungsi matematika adalah pemetaan
– Dapat ditulis sebagai tabel
• Term majemuk terdiri dari
– Functor: simbol fungsi yang menamai relasi
– Tuple : daftar parameter terurut
• Contoh :
student(jon)
like(seth, OSX)
like(nick, windows)
like(jim, linux)
Bina Nusantara University
7
Bentuk Proposisi
• Proposisi dapat dinyatakan dalam dua bentuk:
– Fact: proposisi yang diasumsikan true
– Query: kebenaran proposisi yang perlu dibuktikan
• Proposisi majemuk :
– Mempunyai dua atau lebih proposisi atomik
– Proposisi yang dihubungkan oleh operator
Bina Nusantara University
8
Operator Logikal
Name
Symbol Example Meaning
negation

a
not a
conjunction

ab
a and b
disjunction

ab
a or b
equivalence

ab
implication


ab
ab
a is
equivalent
to b
a implies b
b implies a
Bina Nusantara University
9
Kuantifier
Name
Example
Meaning
universal
X.P
For all X, P is true
existential
X.P
There exists a value of X
such that P is true
Bina Nusantara University
10
Bentuk Klausa
• Banyak cara untuk menyajikan hal yang sama
• Gunakan bentuk proposisi
• Format klausa
– B1  B2  …  Bn  A1  A2  …  Am
– Dibaca jika semua A true maka paling sedikit satu B true
• Antecedent : sisi kanan
• Consequent : sisi kiri
Bina Nusantara University
11
Kalkulus Predikat dan Pembuktian Teori
• Penggunaan proposisi adalah menemukan teori baru
yang dapat disimpulkan dari aksioma dan teori yang
diketahui
• Resolusi: prinsip inferensi yang mengijinkan proposisi
yang di-infer dihitung dari proposisi yang diketahui
– Unifikasi: menemukan nilai variabel dalam proposisi agar
proses matching berhasil
– Instantiation: pemberian nilai temporer ke variabel agar unifikasi
berhasil
– Sesudah pemberian variabel dengan nilai, jika matching gagal,
perlu backtrack dan beri dengan nilai berbeda
Bina Nusantara University
12
Bukti dengan Kontradiksi
• Hipotesa: himpunan proposisi yang perlu dibuktikan
kebenarannya
• Goal: negasi teori sebagai proposisi
• Teori dibuktikan dengan menemukan inkonsistensi
Bina Nusantara University
13
Pembuktian Teori
• Basis untuk pemrograman logik
• Ketika proposisi digunakan untuk resolusi, hanya bentuk
tertentu yang dapat digunakan
• Klausa Horn – hanya mempunyai dua bentuk
– Headed: proposisi atomik tunggal di sisi kiri
– Headless: sisi kiri kosong (digunakan untuk menyatakan fact)
• Kebanyak proposisi dapat dinyatakan sebagai klausa
Horn
Bina Nusantara University
14
Review Pemrograman Logik
• Semantik deklaratif
– Cara sederhana untuk menentukan arti setiap pernyataan
– Lebih sederhana daripada semantik bahasa imperatif
• Pemrograman adalah nonprosedural
– Program tidak menyatakan hasil komputasi tetapi bentuk dari
hasil
• Contoh mengurutkan list: menguraikan karakteristik list
terurut, bukan proses pengurutan list
– sort(old_list, new_list)  permute (old_list, new_list)  sorted
(new_list)
– sorted (list)  j such that 1 j < n, list(j)  list (j+1)
Bina Nusantara University
15
Origin Prolog
• University of Aix-Marseille
– Pemrosesan bahasa natural
• University of Edinburgh
– Pembuktian teori otomatis
• Prolog menggunakan sintaks Edinburgh
Bina Nusantara University
16
Term, Variabel dan Struktur
•
•
•
•
Term: konstan, variabel atau struktur
Constant: atom atau integer
Atom: nilai simbolik Prolog
Atom terdiri dari :
– string huruf, digit, dan underscore diawali dengan huruf kecil
– string karakter printable ASCII dipisahkan dengan apostrophes
• Variable: sembarang string huruf, digit dan underscore
dimulai dengan huruf besar
• Instantiation: pengikatan variabel ke nilai
• Structure: representasi proposisi atomik
functor(parameter list)
Bina Nusantara University
17
Pernyataan Fact
• Digunakan untuk hipotesa
• Klausa Headless Horn
female(shelley).
male(bill).
father(bill, jake).
Bina Nusantara University
18
Pernyataan Rule
• Digunakan untuk hipotesa
• Klausa Headed Horn
• Sisi kanan : antecedent (bagian if )
– Term tunggal atau konjungsi
• Sisi kiri : consequent (bagian then)
– Harus term tunggal
• Conjunction: term multipel dipisahkan oleh operasi AND
logikal (implikasi)
Bina Nusantara University
19
Contoh Rule
ancestor(mary,shelley):mother(mary,shelley).
• Dapat menyebabkan variabel (obyek universal ) berarti
umum:
parent(X,Y):- mother(X,Y).
parent(X,Y):- father(X,Y).
grandparent(X,Z):- parent(X,Y),
parent(Y,Z).
sibling(X,Y):- mother(M,X), mother(M,Y),
father(F,X), father(F,Y).
Bina Nusantara University
20
Pernyataan Goal
• Untuk pembuktian teori, teori adalah dalam bentuk
proposisi yang menginginkan sistem menerima atau
menolak – goal statement
• Format sama seperti headless Horn
man(fred)
• Proposisi konjungtif dan proposisi dengan variabel juga
tujuan legal
father(X,mike)
Bina Nusantara University
21
Inferensi Prolog
• Query disebut goal
• Jika goal proposisi majemuk, setiap fakta adalah
subgoal
• Untuk membuktikan goal benar, harus menemukan
rangkaian inference rule dan/atau fact. Untuk goal Q:
B :- A
C :- B
…
Q :- P
• Proses membuktikan subgoal disebut matching,
satisfying, atau resolusi
Bina Nusantara University
22
Pendekatan
• Resolusi Bottom-up, forward chaining
– Mulai dengan fakta dan rule database dan mencoba
menemukan sekuen yang menuju ke goal
– Tugas dimulai dengan large set of possibly correct answers
• Resolusi Top-down , backward chaining
– Mulai dengan goal dan mencoba menemukan sekuen yang
mengarah ke himpunan fakta dalam database
– Tugas dimulai dengan small set of possibly correct answers
• Prolog menggunakan pendekatan backward chaining
Bina Nusantara University
23
Strategi Subgoal
• Jika goal mempunyai lebih dari subgoal, dapat
menggunakan
– Depth-first search (DFS): menemukan bukti untuk subgoal
pertama sebelum mengerjakan yang berikutnya
– Breadth-first search(BFS): kerjakan semua subgoal secara
paralel
• Prolog menggunakan DFS karena dapat dilakukan
menggunakan sumber yang lebih sedikit
Bina Nusantara University
24
Backtracking
• Backtracking: goal dengan subgoal multipel, jika gagal
membuktikan kebenaran salah satu subgoal, pikirkan
kembali subgoal sebelumnya untuk mencari solusi
alternatif
• Mulai pencarian dimana pencarian sebelumnya
dikesampingkan
• Butuh waktu dan ruang yang banyak karena mencari
semua bukti yang mungkin dari subgoal
Bina Nusantara University
25
Aritmatika Sederhana
• Prolog mendukung variabel integer dan aritmatika
integer
• Operatoris : sisi kanan adalah ekspresi aritmatika dan
sisi kiri adalah variabel
A is B / 17 + C
• Tidak sama dengan pernyataan penugasan
Bina Nusantara University
26
Contoh
speed(ford,100).
speed(chevy,105).
speed(dodge,95).
speed(volvo,80).
time(ford,20).
time(chevy,21).
time(dodge,24).
time(volvo,24).
distance(X,Y) :- speed(X,Speed),
time(X,Time),
Y is Speed * Time.
Bina Nusantara University
27
Trace
• Struktur built-in yang menayangkan instantiation
disetiap langkah
• Model eksekusi tracing:
–
–
–
–
Call (mulai mencoba menemukan goal)
Exit (jika goal telah dipenuhi)
Redo (jika backtrack terjadi)
Fail (jika goal gagal)
Bina Nusantara University
28
Contoh
likes(jake,chocolate).
likes(jake,apricots).
likes(darcie,licorice).
likes(darcie,apricots).
trace.
likes(jake,X),
likes(darcie,X).
Bina Nusantara University
29
Struktur List
• Struktur data dasar lain selain atomik proposisi adalah
list
• List adalah sekuen sembarang elemen
• Elemen mungkin atom, atomik proposisi atau term lain,
termasuk list
[apple, prune, grape, kumquat]
[]
(list kosong)
[X | Y]
(head X dan tail Y)
Bina Nusantara University
30
Contoh Append dan Reverse
append([], List, List).
append([Head | List_1], List_2, [Head
|List_3]) :append (List_1, List_2, List_3).
reverse([], []).
reverse([Head | Tail], List) :reverse (Tail, Result),
append (Result, [Head], List).
Bina Nusantara University
31
Kelemahan Prolog
•
•
•
•
Resolusi urutan kendali
Asumsi closed-world
Masalah negasi
Limitasi intrinsik
Bina Nusantara University
32
Latihan
A. SOAL PILIHAN
1. Contoh bahasa deklaratif adalah
a. LISP dan Java
c. Java dan Prolog
b. LISP dan Prolog
d. LISP, Prolog dan Java
2. Prolog menggunakan sintaks
a. MIT
c. Edinburgh
b. Aix-Marseille
d. Oxford
3.Prolog menggunakan pendekatan
a. BFS
dan backward chaining
chaining
c. DFS dan backward chaining
Bina Nusantara University
b. DFS dan forward
d. BFS dan forward chaining
33
LATIHAN
4.Pemrograman logic adalah
a. procedural
c. fungsional
b. imperative
d. nonprocedural
5. Aplikasi dari pemrograman logic adalah
a. sistem pakar dan pemrosesan bahasa natural
b. pemrosesan bahasa natural dan system pengelolaan DB relational
c. system pengelolaan DB relational dan sistem pakar
d. system pakar, pemrosesan bahasa natural dan sistem pengelolaan DB
relational
Bina Nusantara University
34
LATIHAN
B. SOAL URAIAN
1. Uraikan apa perbedaan antara DFS dan BSF ketika
kita
mendiskusikan bagaimana mencapai multiple goal?
2. Apa relasi yang ada di antara resolusi dan unifikasi
dalam Prolog?
Bina Nusantara University
35
Ringkasan
•
•
•
•
•
Simbolik logik adalah basis pemrograman logik
Program logik adalah nonprosedural
Pernyataan Prolog adalah fact, rule atau goal
Resolusi adalah aktifitas utama di interpreter Prolog
Meskipun ada sejumlah kekurangan dengan
pemrograman logik saat ini, tetapi ia digunakan di
berbagai bidang
Bina Nusantara University
36