MAD…..Math_C

We are NOT MAD! but we are Member At Discrete Math C….

Combination of Sets in PROLOG

Posted by madmathc pada Oktober 13, 2009

Subject : How to list all possible combination (consisting two elements) of a set in PROLOG and capture the image from PROLOG

Kali ini, saya akan membahas bagaimana kita menuliskan semua kombinasi yang memungkinkan dari 2 elemen suatu himpunan menggunakan PROLOG.
Sebelum itu, kita akan sedikit membahas tentang apa itu kombinasi. Kombinasi yang saya maksud di sini adalah himpunan yang merupakan gabungan 2 elemen dari 2 himpunan, sehingga dapat dikatakan hampir sama dengan produk Cartesius . Langsung saja kita ke contohnya :

Tuan = {Jo, Maria, Chris}
Anjing = {Arthur, Conan, Doyle, Christie}.

Pada contoh ini, terdapat 2 himpunan, yaitu himpunan Tuan dengan anggota Jo, Maria, dan Chris serta himpunan Anjing dengan anggota Arthur, Conan, Doyle, dan Christie. Kombinasi dari 2 himpunan berikut kita simbolkan dengan Tuan x Anjing.

Tuan x Anjing = {( Jo,Arthur), (Jo,Conan), (Jo,Doyle), (Jo,Christie), (Maria, Arthur), …}

Nah, bagaimana kita menuliskannya ke dalam PROLOG? Berikut inilah langkah-langkahnya :
1. Tuliskan anggota himpunan pada notepad , kemudian save dengan format .pl

Clip

2. Buka program prolog, pilih File – Consult. Pilih data yang kita simpan tadi, sehingga file tersebut dicompile oleh PROLOG. Hasilnya akan muncul seperti ini. Clip_2

3. Pada program PROLOG, ketik
?- tuan(X),anjing(Y).
Lalu tekan Enter. Maka akan muncul hasil seperti berikut.

Clip_3

4. Hasil yang muncul adalah kombinasi pertama. Untuk hasil berikutnya, tekan ; sehingga akan muncul kombinasi lainnya hingga muncul tulisan No

Clip_4Sekian akhir pembahasan ini. Bila ada yang ingin ditanyakan, langsung beri komentar di blog ini. Terima kasih.

Ditulis dalam Tutorial | 1 Komentar »

MoMoN’S Journal #3 “Prolog Introduce part. 1″

Posted by madmathc pada Oktober 4, 2009

Bismillahirrahmanirrahim..
“Mudah-mudahan bermanfaat dan mengantar tujuan yang baik sesuai dengan KepastianNya.”

Assalamualaikum Warahmatullah Wabarakatuh.

Ini adalah postingan saya yang ketiga..mumpung koneksi internet lagi kenceng, mudah-mudahan dari sekedar iseng-iseng berbuah manfaat, Amin.
Tapi kelihatannya urutannya tertukar dengan postingan sebelumnya.
kali ini saya mencoba mencopas sedikit tentang Prolog sebagai aplikasi. Diambil dan dirangkum dari berbagai sumber di internet.

BAHASA PEMROGRAMAN PROLOG

1. SEJARAHNYA:

Prolog adalah singkatan dari Programming in Logic, dikembangkan oleh alain Colmenraurer dan P.Roussel di Universitas Marseilles Prancis pada tahun 1972, karena pada masa tahun 70-an Prolog sedang populer di Eropa untuk aplikasi AI (Artificial Intelligence/Kecerdasan Buatan). Sedangkan di US sendiri malah menggunakan LISP sebagai bahasa pemrograman AI, hanya saja LISP lebih rumit digunakan ketimbang Prolog meskipun banyak kelebihan LISP ketimbang Prolog. Sejak adanya Compiler Prolog, kecepatan eksekusi Prolog yang sangat lambat dan kebanyakan pemakaiannya hanya untuk kalangan perguruan tinggi dan riset saja. Tetapi sejak  Jepang dan US mencanangkan rencana pengembangan teknologi hardware dan software untu tahun 1990-an dan bahasa pemrograman yang dipilih adalah Prolog, maka banyak orang menaruh minat pada Prolog dan sejak saat itulah telah dikembangkan versi prolog yang mempunyai kecepatan dan kemampuan yang lebih tinggi, lebih murah dan lebih mudah digunakan, baik untuk komputer mainframe maupun komputer pribadi sehingga Prolog menjadi alat yang penting dalam program aplikasi kecerdasan buatan (AI) dan pengembangan system pakar (expert system).

2. APA PERBEDAAN PROLOG DENGAN BAHASA PEMROGRAMAN LAINNYA?

Banyaknya bahasa pemrograman yang ada seperti Pascal, C, dan Fortran disebut procedural language, untuk menggunakan bahasa tersebut diperlukan algoritma atau procedure yang dibuat untuk menyelesaikan masalah. Program dapat menjalankan Procedure yang sama berulang-ulang dengan data masukan yang berbeda-beda. Procedure serta pengendalian program sepenuhnya ditentukan oleh programmer dan perhitungan yang dilakukan sesuai dengan procedure yang telah dibuat. Dengan kata lain, Pemrogram harus memberi tahu komputer bagaimana komputer harus menyelesaikan masalah. Prolog mempunyai sifat-sifat yang berbeda dengan bahasa yang disebutkan  diatas, prolog disebut sebagai object oriented language atau declarative language. Dalam prolog tidak terdapat prosedur, tapi hanya tampilan data-data object (fakta) yang akan diolah dengan relasi antar object tersebut yang membentuk suatu aturan. Aturan-aturan ini disebut HEURISTIK dan diperlukan dalam mencari suatu jawaban, dengan kata lain, prolog dalam prolog adalah database. Pemrogram menentukan tujuan (Goal) dan komputer akan menentukan bagaimana cara mencapai tujuan tersebut serta mencari jawabannya. Caranya dengan menggunakan “Formal Reasoning” yaitu membuktikan cocok tidaknya tujuan dengan data-data yang telah ada dan relasinya. Prolog memecahkan masalah seperti yang dilakukan oleh fikiran manusia. Dengan demikian, Prolog sangat ideal untuk memecahkan masalah yang tidak terstruktur dan yang prosedur pemecahannya tidak diketahui, khusunya untuk memecahkan masalah non numeric.

Jadi Perbedaannya:

Bahasa Pemrograman yang umum ( Basic,Pascal, C, Fortran):
1. Diperlukan Algoritma/Procedure untuk memecahkan masalah (Procedural Language),
2. program menjalankan prosedur yang sama berulang-ulang dengan data masukan yang berbeda-beda,
3. Prosedur dan pengendalian program ditentukan oleh programmer dan perhitungan dilakukan sesuai dengan prosedur yang telah dibuat.

Sedangkan Bahasa Pemrograman Prolog :
1. Object oriented languange atau declarative languange.
2. Tidak terdapat prosedur, tetapi  hanya kumpulan data-data objek (fakta) yang akan diolah, dan relasi antar objek tersebut membentuk aturan yang        diperlukan untuk mencari suatu jawaban
3. Programmer menentukan tujuan (goal), dan komputer menentukan bagaimana cara mencapai tujuan tersebut serta mencari jawabannya.
4. Dilakukan pembuktian terhadap cocok-tidaknya tujuan dengan data-data yang telah ada dan relasinya.
5. Prolog ideal untuk memecahkan masalah yang tidak terstruktur, dan prosedur pemecahannya tidak diketahui, khususnya untuk memecahkan masalah non numerik.

Prolog bekerja seperti pikiran manusia, proses pemecahan masalah bergerak di dalam ruang masalah menuju suatu tujuan (jawaban tertentu). Terletak pada kemampuannya untuk mengambil kesimpulan (jawaban) dari data-data yang ada. Karena program dalam bahasa prolog tidak memerlukan prosedur (algoritma). Prolog sangat ideal untuk memecahkan masalah yang tidak terstruktur dan yang prosedur pemecahannya tidak diketahui, khususnya untuk memecahkan masalah non-numerik.

Misalnya, dalam pembuatan program catur dengan prolog untuk menentukkan gerakan catur anda tidak perlu menganalisa semua kemungkinan atau menentukkan suatu prosedur tertentu untuk untuk menentukan gerakan berikutnya. Tetapi anda cukup menuliskan aturan umum permainan catur dan lebih baik lagi jika ditambah dengan aturan yang diperoleh dari pengalaman. Prolog akan menentukan sendiri langkah yang akan diambil berdasarkan data-data yang ada saat itu dan aturan-aturan yang diberikan.

3. JENIS PENERAPAN BAHASA PEMROGRAMAN/APLIKASI PROLOG:

* Sistem Pakar (Expert System): Program menggunakan teknik pengambilan kesimpulan dari data-data yang didapat, layaknya seorang ahli.Contoh dalam mendiagnosa penyakit
* Pengolahan Bahasa Alami (Natural Languange Processing): Program dibuat agar pemakai dapat berkomunikasi dengan komputer dalam bahasa manusia sehari-hari, layaknya penterjemah.
* Robotik: Prolog digunakan untuk mengolah data masukanyang berasal dari sensor dan mengambil keputusan untuk menentukan gerakan yang harus dilakukan.
* Pengenalan Pola (Pattern Recognition): Banyak digunakan dalam image processing, dimana komputer dapat membedakan suatu objek dengan objek yang lain.
* Belajar (Learning): Program belajar dari kesalahan yang pernah dilakukan, dari pengamatan atau dari hal-hal yang pernah diminta untuk dilakukan.

4. DASAR-DASAR BAHASA PROLOG:

Tentunya setiap bahasa Pemrograman memiliki aturan masing-masing, agar compiler dapat membaca perintah apa yang diajukan dan bagaimana penyelesaiannya. Prolog terdiri dari Fakta dan Relasi. Fakta menunjukkan bahwa suatu keadaan atau situasi adalah nyata maka Fakta adalah selalu benar ( “True” ). Pembagian Fakta menjadi 2 bagian yaitu fakta yang menunjukkan Relasi dan Fakta yang menunjukkan milik/sifat. Penulisannya harus selalu diakhiri dengan tanda titik (“Full Stop”). Sebagai contoh Fakta dan Relasi:

Fakta

Prolog

Slamet adalah ayah Amin

ayah (slamet, amin).

Anita adalah seorang wanita

wanita (anita).

Angga suka renang dan tenis

suka(angga, renang). dan suka(angga,tenis)

Jeruk berwarna jingga

jngga(jeruk).

Aturan (“Rules”): Aturan adalah suatu pernyataan yang menunjukkan bagaimana fakta-fakta berinteraksi satu dengan yang lain untuk membentuk suatu kesimpulan. Sebuah aturan dinyatakan sebagai suatu kalimat bersyarat. dan kata “if” adalah kata yang dikenal Prolog untuk menyatakan kalimat bersyarat atau disimbolkan dengan “:-“.  Misalnya, ada sebuah fakta: Momon suka Chatting
Dan ada sebuah aturan yang berbunyi: Momon suka sesuatu yang disukai oleh Widi
Informasi yang didapat dari fakta yang diketahui, maka dapat diambil kesimpulan (jawaban) dari aturan tersebut yaitu Momon suka Chatting.
Dalam prolog, fakta di atas dituliskan sebagai:
Suka(Widi,Chatting).
Sedangkan aturan tersebut dapat dinyatakan juga sebagai:
Momon suka sesuatu jika Widi suka sesuatu itu juga

Dan ini dituliskan sebagai:

Suka(Momon,sesuatu) if Suka(Widi,sesuatu).,

Jika di tayangkan dalam sebuah tabel:

Fakta dan Aturan

Prolog

F : Widi suka chatting

A : Momon suka sesuatu yang disukai Widi

suka(widi, chatting).

suka(momon,sesuatu) :- suka(widi,sesuatu).

Jadi…Setiap aturan terdiri dari kesimpulan(kepala) dan tubuh. Tubuh dapat terdiri dari 1 atau lebih pernyataan atau aturan yang lain, disebut subgoal dan dihubungkan dengan logika “and”. Aturan memiliki sifat then/if conditional : “Kepala(head) benar jika tubuh (body) benar”. Mirip-mirip implication di materi Logika (p –> q), p adalah benar jika q benar.

Kelihatannya sampai disini dulu Jurnalku kali ini… insya4jji saya akan mencoba mencopas kelanjutan Prolog pada Jurnal berikutnya (Part.II), mumpung koneksi Internet masih ngacirrr dan belum kena Densus 88 (RTO/Pengurangan kuota arus koneksi internet). Alhamdulillah banyak juga yang bisa saya copas kali ini.

Saya Akhiri dahulu..Wassalamualaikum Warahmatullah Wabarakatuh.

Ttd.

MoMoNCha

5209108718

Ditulis dalam SWI - Prolog | 3 Komentar »

MoMoN’s Journal #2 “SWI Prolog example”

Posted by madmathc pada Oktober 2, 2009

Bismillahirrahmanirrahim
“Mudah-mudahan menjadi sebuah hal yang bermanfaat mengantar kepada tujuan dengan ilmu sebagai pedoman hidup yang baik”

Hay hay hay.. ini adalah postinganku yang kedua..
kali ini saya akan membahas tentang pemakaian sederhana dari aplikasi/compiler SWI-Prolog, saya copas dari sebuah forum dan ingin mengetes bagaimana cara kerja SWI-Prolog secara sederhanyanya.sippno1 langsung saja ya kawan-kawan…

1. Langkah pertama adalah downlod program aplikasi SWI Prolog.. ini nih linknya ani_pif:http://www.swi-prolog.org
sudah di instal ke CPU/Laptop anda? mari kita lanjutkan ke bagian 2..

2. Bikin contoh specification seperti ini dengan notepad atau yang sejenis bisa juga pakai wordpad.
Contoh nama: Beri nama familiy.pl,
simpan di mydocument/prolog.
Jangan ada spasi antara nama dengan kurung buka.
Ingat! setiap akhir dari save data compiler harus menggunakan “full stop (.)” sebab kalau tidak akan menyebabkan eror, contoh penulisan karakter yg menyebabkan error: parent (x,y), harusnya parent(x,y).
Coba dipahami setiap tata cara peraturannya, bahkan bagi pemula di prolog juga bakal ngerti kok. Nanti expert system anda, rule-rulenya dibuat seperti ini sinis watch it carefully ya.. soalnya saya sendiri belum begitu menguasai aplikasi tersebut..:
ketik di notepad atau wordpad sebagai berikut:

note: gunakan “%” untuk memberikan keterangan dan penjelasan dari tiap param apa yah
parent( pam, bob). % Pam is a parent of Bob
parent( tom, bob).
parent( tom, liz).
parent( bob, ann).
parent( bob, pat).
parent( pat, jim).
male( tom). % Tom is male
male( bob).
male( jim).
female( pam). % Pam is female
female( liz).
female( ann).
female( pat).
different(X, Y) :- not(X = Y).

offspring( Y, X) :- % Y is an offspring of X if
parent( X, Y). % X is a parent of Y

mother( X, Y) :- % X is the mother of Y if
parent( X, Y), % X is a parent of Y and
female( X). % X is female

grandparent( X, Z) :- % X is a grandparent of Z if
parent( X, Y), % X is a parent of Y and
parent( Y, Z). % Y is a parent of Z

sister( X, Y) :- % X is a sister of Y if
parent( Z, X),
parent( Z, Y), % X and Y have the same parent and
female( X), % X is female and
different( X, Y). % X and Y are different

predecessor( X, Z) :- % Rule prl: X is a predecessor of Z
parent( X, Z).

predecessor( X, Z) :-% Rule pr2: X is a predecessor of Z
parent( X, Y),
predecessor( Y, Z).

3. Buka swi-prolog, panggil spesifikasi diatas dengan perintah (jangan lupa gunakan titik/full stop diakhir):
[family].

4. Lakukan query. Misalnya apakah benar Pat ibunya jim? quernya spt berikut:
?- mother(pat,jim).

Siapa saja pendahulu Jim? (saat prolog mengeluarkan jawaban, tekan spasi untuk jawaban berikutnya)
?- predecessor(X,jim).

Siapakah orang tua dari jim dan kakeknya?
?- parent( Y, jim ), parent( X, Y ).

Bagaimana? ternyata pertanyaan logika sederhana bisa diselesaikan dengan mudah menggunakan SWI-Prolog..
Sayangnya.. sewaktu kuis kemarin saya lupa baca-baca forum jadi masih gagap teknologi (gaptek) masalah Prolog ini..tatutt, tetapi sedikit demi sedikit saya coba copas lebih lanjut dan memberikan contoh sederhana lainnya melalui Blog ini…muach
see ya..muach
Wassalamualaikum warahmatullah wabarakatuh

Ttd.

MoMoNCha
5209108718

Ditulis dalam SWI - Prolog | Tinggalkan sebuah Komentar »

MoMoN’s Journal #1

Posted by madmathc pada Oktober 2, 2009

Bismillahirrahmanirrahim,
Assalamualaikum Warahmatullah Wabarakatuh,

Mudah-mudahan dari Blog yang kami buat ini mampu memberikan manfaat ke depannya khususnya bagi kami mahasiswa Sistem Informasi ITS dan umumnya untuk para pembacanya.

Sejarah

Pembentukan kelompok diawali dari pertemuan minggu pertama mata kuliah Discrete Mathematic, kami berempat adalah Septian, Widi, Eko dan Wahyu (Momon) mahasiswa dari DM kelas C membentuk kelompok kecil bernamakan “The Algorithms” sekedar mengerjakan tugas kelompok daily dari Mr. Chakshon – our lecturer, untuk membuktikan bahwa matematika diskrit itu perlu dalam kehidupan sehari-harinya, misalnya, bagaimana seorang pengendara dapat menemukan tujuannya dengan memperhatikan beberapa faktor seperti banyaknya jalan, delay traffic lights, tingkat kemacetan pada jam-jam tertentu, ataupun banyaknya penggunaan kendaraan pada jalan tertentu. Dari hal-hal sederhana semacam itulah dengan berbagai perhitungan Matematika Diskrit mampu menjadi solusi pemecahannya.

Dengan metode perkuliahan berbasis kompetensi, yang artinya kira-kira mahasiswa dianggap sudah mampu dan memahami materi perkuliahan yang ada sebelum Dosen masuk ke kelas dan memberikan informasi materinya. Seperti halnya Mat-Dis, the lecturer, Mr Chackson that always using English while he were tutoring us, but still he also accept questions in Bahasa Indonesia when there’s student of Ds-Math who doesn’t get the matters by using English.

ngakak

ngakak

Maaf jika penggunaan bahasa di log ini menjadi campur aduk seperti ini..sekali-sekali guna melatih kemampuan berbahasa linggis eh, Inggris. SKS pada mata kuliah Mat-Dis yang 3SKs untuk 1 hari pertemuan oleh ‘kesepakatan bersama’ akhirnya dipecah menjadi 2 kali pertemuan, yaitu Rabu siang jam 13.00 dan Kamis pagi jam 10.40, (mudah-mudahan tidak salah dengan ini).. berbagai teori logika dan simbol-simbolnya jika tidak mampu dipahami dengan baik, tentu saja dapat mengakibatkan blank-spot pada memori otak – contohnya seperti saya sendiri yang sulit memahami konsep dan teori MatDis tersebut…

sinisme

sinisme

waktupun berlalu, setelah libur Idul Fitri kemarin kami-pun sepakat membuat nama kelompok baru yaitu “M.A.D. Math-C” yang kepanjangannya adalah “Member At Descrete Mathematic Class C” guna memenuhi tugas kelompok sebelum bulan Januari 2010. Berupa pengaplikasian program “PROLOG” menjadi dua buah sistem perhitungan sederhana..mudah-mudahan tugas kami ini dapat diselesaikan dengan baik dan memberi manfaat.

Yaah… kira-kira itu saja pembukaan dari saya sebagai member dari kelompok “M.A.D. MATH-C”ani_hmm
Wassalamualaikum Warahmatullah Wabarakatuh.

ttd.
Momoncha

Ditulis dalam Discrete Math | Tinggalkan sebuah Komentar »

Hello world!

Posted by madmathc pada September 30, 2009

Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!

Ditulis dalam Uncategorized | 1 Komentar »

 
Ikuti

Get every new post delivered to your Inbox.