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
| ?-   

Tidak ada komentar:

Posting Komentar