Konsep Bahasa Pemograman-BAB 13- Logic Programming Language

BAB 13

Logic Programming Language  

1.Pengenalan Logic Programming Language  

Logic programming merupakan suatu program yang menggunakan bahasa logika, dan kemudian bahasa logika tersebut di ekspresikan dengan bentuk symbol – symbol logika. Logic programming menggunakan proses inferensi logika untuk membuat hasil. Logic programming hanya bersifat deklaratif artinya hanya spesifikasi dari hasil yang dinyatakan bukan proses detail untuk memproduksi mereka.

 

2.Pengenalan Dasar Kalkulus Predikat (Calculus Predicate)

 

  • Proposisi

Proposisi merupakan statement logika yang dapat bersifat benar atau tidak benar. Poposisi terdiri dari berbagai macam objek dan hubungan dari suatu objek dengan objek lainnya.

 

  • Simbol Logika

Merupakan suatu logika yang dapat digunakan sebagai cara yang dasar untuk logika yang lebih formal. Simbol logika berfungsi untuk :

  • Mengekspresikan proposisi.
  • Mengekspresikan hubungan diantara dua proposisi.
  • Mendeskripsikan bagaimana suatu proposisi yang baru dapat disimpulkan dari proposisi yang lain.

Bentuk tertentu dari suatu symbol logika yang digunakan untuk logic programming disebut predicate calculus

 

  • Representasi Objek

Objek dalam suatu proposisi direpresentasikan dalam dua bentuk sederhana yaitu :

  • Konstan : suatu simbol yang merepresentasikan objek
  • Variabel : suatu simbol yang dapat merepresentasikan objek yang berbeda dalam waktu yang berbeda juga.

 

  • Bentuk Compound

Atomic proposisi ada proposisi yang mengandung compound term .Compound term merupakan elemen dari suatu relasi matematika yang cara penulisannya mirip dengan penulisan dalam fungsi matematika (dapat ditulis dalam bentuk tabel dan fungsi matematika adalah pemetaan). Bentuk compound tersusun dari dua bagian, yaitu :

  • Functor : Simbol fungsi yang menamai suatu hubungan
  • Tuple : Daftar parameter yang sudah tersusun

 

Contoh :

student(jon)                             // jon is student

like(seth, OSX)                       // seth like OSX

like(nick, windows)                //nick like windows

like(jim, linux)                         //jim like linux

 

  • Bentuk Proposisi

Proposisi dapat dinyatakan dalam dua bentuk, yaitu :

  • Fact : Proposisi yang telah dianggap benar
  • Query : Kebenaran dari suatu proposisi masih belum ditentukan

Proposisi compound harus memiliki dua atau lebih proposisi atomic dan proposisinya dihubungkan oleh operator.

 

Operator Logika

Name Symbol Example Meaning
Negation Ø Ø a not a
Conjunction Ç a Ç b a and b
Disjunction È a È b a or b
Equivalence º a º b a is equivalent to b
Implication É

Ì

a É b

a Ì b

a implies b

b implies a

 

Quantifier

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

 

3.Logical Programming

PROLOG adalah kependekan dari PROgramming in LOGic, yang berarti pemrograman

logika. Pemrograman Prolog menggunakan bahasa deklaratif, dimana pemrogram

memberi 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.Selain itu, Programmingnya tidak procedural artinya program tidak menyatakan hasilnya akan dikomputasi, tapi lebih ke menyatakan bentuk dari hasilnya.

 

  • Menyusun List

Mendeskripsikan karakteristik dari suatu list yang telah di susun, bukan proses aransemen ulang list.

Contoh :

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)

4.Dasar Prolog

  • Terms

Terms merupakan suatu konstan, variabel, atau struktur. Konstan merupakan suatu atom atau integer. Atom merupakan nilai simbol dari prolog. Atom bisa terdiri dari suatu string kata, digit, dan kata yang bersifat lowercase atau dari string suatu karakter ASCII yang dapat diprint. Terms dapat dibedakan menjadi dua jenis yaitu Variabel dan Struktur.

 

  • Statement

Terdiri dari :

  • Fact Statements

Digunakan untuk hipotesis, Klaus nya Headless Horn

Contoh :

female(shelley).

male(bill).

father(bill, jake).

  • Rule Statements

Digunakan untuk hipotesis, Kalusnya Headless Horn.

  • Sisi kanan : antecedent (bagian if)

Bisa single term atau conjunction

  • Sisi kiri : consequent (bagian then)

Harus single term

  • Conjunction

Term – term yang dipisahkan oleh operasi logika AND

Contoh :

ancestor(mary,shelley):- mother(mary,shelley).

Dapat menggunakan variabel untuk menggeneralisasi suatu maksud :

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

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

grandparent(X,Z):- parent(X,Y), parent(Y,Z).

 

 

 

 

 

  • Goal Statements

Digunakan untuk membuktikan suatu teorema, tapi teorema nya dalam bentuk proposisi yang kita ingin sistemnya buktikan atau tidak. Format nya sama dengan Klaus Headless Horn, yaitu

man(fred)

Proposisi conjunctive dan proposisi dengan variabel juga dapat digunakan

father(X, mike)

5.Menginferensikan Proses Suatu Prolog

Jika suatu goals merupakan proposisi compound, maka setiap facts merupakan subgoal. Untuk membuktikan suatu goal itu benar, kita harus menemukan hubungan aturan dan/atau fakta inferensi.Contoh, untuk goal Q

P2 :- P1

P3 :- P2

Q :- Pn

Proses untuk membuktikan suatu subgoal disebut matching, satisfying, atau resolution. Matching merupakan proses membuktikan suatu proposisi. Satisfying merupakan proses membuktikan subgoal. Bottom-up resolution disebut forward chaining, Top-down resolution disebut backward chaining. Pengimplementasian prolog menggunakan backward chaining.

 

  • Strategi Subgoal

Ketika suatu goal memiliki lebih dari satu subgoal, maka kita dapat menggunakan

  • Pencarian depth-first : Mencari bukti lengkap subgoal pertama sebelum mencari bukti lengkap untuk subgoal berikutnya;atau
  • Pencarian breadth-first : Mengerjakan semua subgoal secara parallel

 

  • Bactracking

Ketika suatu goal memiliki banyak subgoal, dan ketika gagal membuktikan suatu subgoal, maka menggunakan subgoal sebelumnya untuk mencari solusi alternatifnya merupakan pengertian dari backtracking. Bactracking bisa memakan banyak waktu dan tempat karena harus mencari semua bukti yang memungkinkan untuk setiap subgoal.

 

  • Aritmatika Sederhana

Prolog mensupport variabel integer dan juga aritmatika integer. Operator is : menggunakan ekspresi aritmatika sebagai operand kanan dan variabel sebagai operand kiri. Contoh :

A is B / 17 + C

 

Penggunaan operator ini tidak sama dengan statement assignment.

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.

  • Trace

Merupakan struktur built-in yang menampilkan instantiasi dari setiap langkah. Tipe pelaksanaan model tracing :

  • Call
  • Exit
  • Redo
  • Fail

Contoh :

likes(jake,chocolate).

likes(jake, apricots).

likes(darcie, licorice).

likes(darcie, apricots).

trace.

likes(jake, X), likes(darcie, X).

  • 1 Call: likes(jake, _0)?

(1) 1 Exit: likes(jake, chocolate)

(2) 1 Call: likes(darcie, chocolate)?

(2) 1 Fail: likes(darcie, chocolate)

  • 1 Redo: likes(jake, _0)?

(1) 1 Exit: likes(jake, apricots)

(3) 1 Call: likes(darcie, apricots)?

(3) 1 Exit: likes(darcie, apricots)

X = apricots

 

 

  • Struktur List

Struktur data basic lain yang bukan merupakan proposisi atomic yang sudah pernah kita lihat merupakan suatu list. List merupakan urutan dari berbagai macam elemen. Elemen dapat terdiri dari atom, proposisi atomik, atau terms lain. Contoh :

[apple, prune, grape, kumquat]

[]                     (empty list)

            [X | Y]             (head X and tail Y)

 

Contoh lain :

reverse([], []).

reverse([Head | Tail], List) :-

reverse (Tail, Result),

append (Result, [Head], List).

 

member(Element, [Element | _]).

member(Element, [_ | List]) :-

member(Element, List).

 

  • Kekurangan Prolog
  • Resolusinya bersifat order control
  • Asumsi yang bersifat closed-world
  • Masalah negasi
  • Terbatasnya intrinsik

 

  • Penggunaan Logic Programming
  • Sistem manajement relasi database
  • Sistem expert
  • Proses bahasa natural

Oleh Kelompok 12

Referensi :

 

Bab 13 :

  • http://arcana70.blogspot.co.id/2014/06/kbp-pert-13.html
  • https://binusmaya.binus.ac.id/newStudent/#/class/resources.COMP6060/007420/1610/LEC/9239
  • Robert W. Sebesta – Concept of Programming Languages (Tenth Edition), Chapter 16

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *