Laman

Selasa, 26 Oktober 2010

How to list all possible combination (consisting two elements) of set in PROLOG


Dalam Tutorial ini, saya akan menjelaskan bagaimana cara membuat sebuah list dari semua kemungkinan kombinasi (dua elemen bersesuaian) dari himpunan dengan menggunakan prolog.
Untuk melakukan hal ini, masing masing data dalam set tersebut harus dapat dibandingkan dengan sebuah ukuran. Misalkan jika data adalah himpunan bilangan asli kurang dari 20, maka setiap data dapat dibandingkan apakah data 1 lebih besar dari data 2 dan seterusnya.
Jadi contoh sekumpulan data tersebut:

angka(1).
angka(5).
angka(7).
angka(9).
angka(4).

Tapi bagaimana jika data yang ingin dibuat kombinasinya tidak dapat dibandingkan? Caranya adalah dengan membuat data yang tidak dapat dibandingkan menjadi dapat dibandingkan, yaitu dengan menambahkah sebuah index seperti pada list.
Contoh:

kota(kediri,1).
kota(jombang,2).
kota(malang,3).
kota(surabaya,4).
kota(blitar,5).
kota(madiun,6).
kota(sidoarjo,7).
kota(gresik,8).

Dengan cara seperti ini maka data akan tetap dapat dibandingkan.
Dengan membuat facts seperti di atas, sekarang waktunya membuat rules yang tepat untuk menampilkan list dari semua kombinasi yang mungkin dari 2 element.

kota(kediri,1).
kota(jombang,2).
kota(malang,3).
kota(surabaya,4).
kota(blitar,5).
kota(madiun,6).
kota(sidoarjo,7).
kota(gresik,8).
kombinasi(X,Y):- kota(X,A),kota(Y,B),A<B.

Dengan  rules seperti di atas maka jika program dijalankan:
| ?- kombinasi(X,Y).

X = kediri
Y = jombang ? ;

X = kediri
Y = malang ? ;

X = kediri
Y = surabaya ? ;

X = kediri
Y = blitar ? ;

X = kediri
Y = madiun ? ;

X = kediri
Y = sidoarjo ? ;

X = kediri
Y = gresik ? ;

X = jombang
Y = malang ? ;

X = jombang
Y = surabaya ? ;

X = jombang
Y = blitar ? ;

X = jombang
Y = madiun ? ;

X = jombang
Y = sidoarjo ? ;

X = jombang
Y = gresik ? ;

X = malang
Y = surabaya ? ;

X = malang
Y = blitar ? ;

X = malang
Y = madiun ? ;

X = malang
Y = sidoarjo ? ;

X = malang
Y = gresik ? ;

X = surabaya
Y = blitar ? ;

X = surabaya
Y = madiun ? ;

X = surabaya
Y = sidoarjo ? ;

X = surabaya
Y = gresik ? ;

X = blitar
Y = madiun ? ;

X = blitar
Y = sidoarjo ? ;

X = blitar
Y = gresik ? ;

X = madiun
Y = sidoarjo ? ;

X = madiun
Y = gresik ? ;

X = sidoarjo
Y = gresik ? ;

no
| ?-   

How To Install Prolog

Cara menginstall prolog


Buka file installer prolog


Double klik pada file tersebut untuk menjalankannya, maka akan muncul kotak dialog seperti di bawah ini lali klik I Agree.



Pilih komponen-komponen prolog yang akan di install pada komputer dengan memberi checklist pada pilihan kemudian klik Next.


Pilih folder tujuan tempat prolog akan di install, kemudian klik Next.


Atur beberapa kustomisasi pada prolog yang akan di install yang meliputi extension for prolog files, Startmenu program group, dan default prolog workspace kemudian klik Install.




Tunggu beberapa saat hingga proses instalasi prolog selesai, kemudian klik finished. Secara otomatis prolog sudah terinstall pada komputer.




Prolog At Glance

Sekilas tentang Prolog

Prolog adalah sebuah bahasa pemograman logika yang diciptakan oleh orang Perancis pada tahun 1972 yaitu oleh Alain Colmerauer dan Robert Kowalski.Nama “Prolog” sendiri berasal dari bahasa Perancis programmation en logique (pemrograman logika). Penciptaan prolog ini dimaksudkan untuk menciptakan sebuah bahasa pemograman yang berdasar pada logika.Prolog memiliki beberapa karakteristik yang dapat membedakannya dengan bahasa pemograman yang lain, diantaranya :

Prolog

Bahasa Pemograman Umum

Tidak memerlukan prosedur dalam memecahkan sebuah kasus, namun hanya memerlukan kumpulan fakta sehingga sekumpulan fakta tersebut akan membentuk sebuah aturan yang akhirnya bisa digunakan untuk memecahkan persoalan.

Memerlukan prosedur (Algoritma) dalam memecahkan sebuah persoalan.

Programer hanya menentukan tujuan, sedangkan komputer yang mencari cara agar tujuan tersebut tercapai sekaligus mencari jawabannya.

Pengendakian program serta prosedurnya sepenuhnya dilakukan oleh programer dan perhitungan dilakukan berdasarkan prosedur yang telah dibuat.

Program bekerja seperti pikiran manusia, proses pemecahan masalah mengarah pada sebuah jawaban.

Program yang dibuat menjalankan prosedur secara berulang-ulang walaupun dengan input yang berbeda.

Sumber :

karmila.staff.gunadarma.ac.id/Downloads/files/3496/Prolog-1.doc

http://id.wikipedia.org/wiki/Prolog

Basic Concept: Fact and Rules

FACT and RULES in PROLOG


1. FACT

Fact merupakan ekspresi predikat yang menyatakan pernyataan deklaratif tentang masalah utama suatu project. Prolog fact merupakan salah satu terapan dalam Fact tersebut. Prolog fact bertujuan utama untuk mendefinisikan suatu predikat dengan menjelaskan tentang elemen-elemen yang memenuhi di dalam predikat tersebut. Apabila terdapat suatu variable pada Prolog, itu bisa jadi diasumsikan sebagai sebuah hal yang bersifat universal. Untuk lebih jelasnya lagi dapat dijelaskan sebagai berikut:

sayang (ayah, ibu).

/* Ayah sayang Ibu */

sayang (X, ibu).

/* Semua orang sayang ibu */

sayang (ayah, Y).

/* Ayah sayang semua orang */

sayang (Y, ayah), sayang (ayah, Y).

/* Semua orang sayang ayah dan ayah sayang semua orang */

sayang (ayah, ibu) ; sayang (ayah, anak).

/* Ayah sayang ibu atau ayah sayang anak */

tidak (sayang(ayah, kelinci)).

/* Ayah tidak sayang kelinci */

Sayang (ayah, ibu) :- sayang(ayah, anak).

/* Ayah sayang ibu jika ayah sayang anak */

2. RULES

Sejauh ini kita telah melihat bagaimana untuk mewakili fakta dan queri. Sekarang kita beralih ke rules. Rules memungkinkan kita untuk membuat pernyataan bersyarat. Setiap aturan dapat memiliki beberapa variasi, yang disebut klausa. Klausa ini memberikan kita pilihan yang berbeda tentang bagaimana melakukan inferensi. Prolog rules itu digunakan untuk mendefinisikan sebuah predikat yang telah digunakan di dalam Prolog Fact. Di dalam prolog rules biasanya menggunakan tanda :- yang berarti (…. jika…….).

Contoh dari valid rules

friends(X,Y) :- likes(X,Y),likes(Y,X).            

/* X and Y are friends if they like each other */

hates(X,Y) :- not(likes(X,Y)). 
 /* X hates Y if X does not like Y. */
enemies(X,Y) :- not(likes(X,Y)),not(likes(Y,X)).  

/* X and Y are enemies if they don't like each other */


Contoh dari invalid rules



left_of(X,Y) :- right_of(Y,X)                     
/* Missing a period */
likes(X,Y),likes(Y,X) :- friends(X,Y).            
/* LHS is not a single literal */
not(likes(X,Y)) :- hates(X,Y).                    
/* LHS cannot be negated */

*example rules from http://cs.trincoll.edu/