Anda di halaman 1dari 23

FAJAR A. SUSANTO // 672009105 JERLY SABUNA // 672009141 ABRAHAM P. PRAKASA // 672009145 GLORIA R. MAGGI // 672009306 CHRISTOVORUS A.

SILAMBI // 672009309

PROLOG adalah kependekan dari Programming in Logic yang berarti pemrograman logika. Pemrograman Prolog menggunakan bahasa deklaratif, dimana pemrograman member fakta dan aturan untuk selanjutnya diselesaikan oleh Prolog secara deduktif sehingga menghasilkan suatu kesimpulan. Hal ini berbeda dengan bahasa prosedural seperti Pascal, Fortran, C, atau yang sejenis, dimana pemrogram memberi perintah atau penugasan untuk memecahkan persoalan langkah demi langkah sehingga sering disebut sebagai programming with assignment. Disamping itu berbeda dengan pemrograman fungsional, pemrograman logika ini menggunakan relasi, bukan fungsi sehingga sangat sesuai untuk implementasi sistem pakar. Prolog cocok untuk komputasi simbolik (nonnumerik), cocok untuk pemecahan masalah yang menyangkut objek dan relasi antar objek.

Jadi konsep bahasa pemrograman logic merupakan bahasa pemrograman yang deklaratif, dimana set dari atribut yang akan digunakan untuk penyelesaian masalah harus dispesifikasikan. Bahasa pemrograman yang banyak digunakan adalah Prolog. Paradigma lainnya yang berhubungan di sini adalah inductive logic programming, yang konsen terhadap aturan terhadai dasar dari suatu fakta.

Mengandung komponen-komponen inti, yaitu: Klausa(Clause), adalah suatu frase (ungkapan) atau susunan kata yang di dalam Prolog dapat berupa fakta atau aturan, yang selalu diakhiri dengan tanda titik. Contoh: orangtua(P,Q) :- bapak(P,Q); ibu(P,Q). kakek(A,Z) :- bapak(A,X), orangtua(X,Z).

Relasi, adalah table dengan n buah kolom dan terdiri dari beberapa baris fakta maupun aturan. Contoh: ([a], [], [a]) ([a],[b],[a,b]) ([a,b],[c,d],[a,b,c,d])




DOMAINS Untuk menyatakan jenis variabel atau argumen

Ada lima domain baku di prolog: Char, Integer, Real, String, Symbol contoh: kota = symbol alamat = string

PREDICATES Untuk menuliskan setiap relasi predikat yang digunakan


dalam program

contoh: grandfather(symbol,symbol) father(symbol,symbol) mother(symbol,symbol)


 

CLAUSES Untuk mengelompokkan klausa dari predikat yang sama


Semua fakta dan aturan diimplementasikan di sini Berurutan dari atas ke bawah

contoh: grandfather(X,Z):-father(X,Y),father(Y,Z). grandfather(X,Z):-father(X,Y),mother(Y,Z).


 

GOAL
Berisi pertanyaan yang diajukan kepada prolog. Dituliskan menggunakan kata tunggal, karena hanya boleh ada sebuah Goal.

contoh: father(X,Y).

Unifikasi adalah instance suatu term T yang diperoleh dengan menggantikan sub-term dari variabel-variabelT. Unifikasi merupakan proses pemadanan atau pembandingan untuk mencari jawaban seperti nilai suatu variabel. Melalui unifikasi, Suatu variabel diberi nilai sehingga akan diperoleh jawaban dari suatu pertanyaan (goal)

Jika prolog mendapat pertanyaan maka prolog akan mencari padanan goal dari bagian klausa paling atas. Bila sudah diperoleh klausa yang dicari, terjadilah pengikatan variabel bebas (jika ada) sehingga Ilustrasi: pertanyaan dan klausa menjadi identik, dan pertanyaan tersebut dikatakan menyatu dengan goal = f(X,b) = f(a,Y). X = a, Y = b klausa.
f(a,b) adalah instance dari f(a,Y), f(X,b), f(X,Y) g(a,b) bukan instance dari g(X,X)

Unifikasi terjadi secara implisit yaitu pada saat suatu aturan dijalankan seperti terlihat pada contoh berikut:
fakta = identity(Z,Z) goal = identity(f(X,b),f(a,Y)) X = a, Y = b

Salah satu bentuk data yang populer dalam pemrograman adalah struktur data list dimana dalam Prolog dituliskan dengan menggunakan tanda kurung [] dan setiap elemen dipisahkan oleh tanda koma(,). Sebagai contoh: [] list kosong [a, b, c] list dengan tiga elemen Setiap list dalam Prolog dapat dituliskan sebagai [H | T] dimana H adalah kepala (head) yang menunjukkan elemen pertama dari suatu list dan T adalah ekor (tail), yaitu list tanpa elemen pertama. Nilai H dan T ini dapat dibandingkan dengan operasi car dan cdr pada pemrograman fungsional. Oleh karena itu, list [a, b, c] dapat dituliskan sebagai: [a,b,c|[]] [a,b|[c]] [a|[b,c]] Contoh: goal = [H | T ] = [a,b,c]. YES. H = a, T = [b,c]

Beriktu disajikan dua contoh pemrograman Prolog yang berkaitan dengan struktur data list. Contoh 1. Menggabungkan dua buah list. clauses append([],Y,Y). append([H|X],Y,[H|Z]):-append(X,Y,Z). goal = append ([a,b],[c,d],Z). YES. Z = [a,b,c,d] goal = append ([a,b],Y,[a,b,c,d]). YES. Y = [c,d] Contoh 2. Memeriksa keanggotaan dalam list. clauses member(X,[X|_]). member(X,[_|Y]):-member(X,Y). goal = member(a,[p,q,a]). YES.

Place holders adalah nama variabel sementara yang digunakan kompiler, biasanya sebagai pengganti open list. Perhatikan contoh berikut: goal = append (X,[c],Z). X=[_1], Z=[_1,c] X=[_1,_2],Z=[_1,_2,c] dan seterusnya

Search tree (sering juga disebut sebagai Prolog Search Tree) adalah tree yang tersusun pada saat aturan diterapkan berdasarkan pertanyaan (goal). Contoh search tree berdasarkan relasi member untuk pertanyaan: goal = member(a,[p, q,a])

Dalam mengevaluasi pertanyaan, kontrol di dalam Prolog ditentukan oleh dua hal, yaitu urutan pertanyaan dan urutan fakta maupun aturan. Untuk urutan pertanyaan, Prolog menggunakan algoritme evaluasi sebagai berikut: start with a query as the current goal; while the current goal is nonempty do let the current goal be G1, G2, , Gk, where k 1; choose the leftmost subgoal G1; if a rule applies to G1 then select the first such rule A :- B1, B2, , Bj, where j 0; let be the most general unifier of G1 and A; the current goal becomes B1 , B2 , , Bj , G2 , G3 , , Gk else backtrack end if end while; succeed

Backward chaining atau Backward Reasoning merupakan salah satu dari metode inferensia yang dilakukan untuk di bidang kecerdasan buatan. Backward chaining dimulai dangan pendekatan tujuan atau goal oriented atau hipotesa. Pada backward chaining kita akan bekerja dari konsekuen ke antesendent untuk melihat apakah terdapat data yang mendukung konsekuen tersebut. Pada metode inferensi dengan backward chaining akan mencari aturan atau rule yang memiliki konsekuen (Then klausa ..) yang mengarah kepada tujuan yang diskenariokan/diinginkan.

Misalkan terdapat suatu sistem dengan tujuan : Goal_1. Untuk mencapai tujuan Goal_1 tersebut dibutuhkan fakta A yang bernilai 1 dan fakta B yang bernilai 1. (Asumsi nilai fakta adalah boolean 1 dan 0). Fakta A sendiri akan diperoleh jika ada fakta C yang bernilai 1. Bagaimanan rancangan sistem pakar dan aturan yang akan dibuat: Langkah 1 : Buat aturan standar untuk menyatakan Goal 1 If A=1 and B=1 Then Goal 1 Langkah 2 : Buat aturan yang menyatakan bahwa jika C bernilai 1 maka A If C=1 Then A=1

Terlihat bahwa konsekuen (Then..) tidak harus mengarah kepada Goal 1, akan tetapi ditujukan kepada antisendent yang dalam hal ini adalah A. Dengan demikian sistem akan mengetahui bahwa antisendent C akan ditanyakan dengan anisendent B untuk menghasilkan Goal 1.

Berbeda dengan bahasa pemrograman yang lain, yang menggunakan algoritma konvensionl sebagai teknik pencariannya, maka prolog menggunakan teknik pencarian yang di sebut heuristik (heutistic) dengan menggunakan pohon logika. Melakukan komputasi rumit pada data yang kompleks. Mengekpresikan algoritma dengan baik. Mengalokasikan memori secara dinamis sehingga programmer tidak harus mendeklarasikan ukuran sebuah struktur data sebelum membuatnya. Mengembangkan dan memodifikasi dirinya sendiri sehingga sebuah program dapat belajar melalui informasi yang didapat selama program dijalankan PROLOG mempunyai Automated Reasoning Procedure (Prosedur Sebab-Akibat Otomatis) yang disebut Inference Engine (Inference = proses pengambilan kesimpulan) yang sudah built-in didalamnya. Akibatnya, program yang menggunakan logika sebab-akibat jadi lebih mudah ditulis dalam PROLOG.

Pemborosan dalam pengalokasian memory sehingga program berjalan menjadi lambat

Anda mungkin juga menyukai