Modul Pratikum Sistem Pakar (Modul 3)

dokumen-dokumen yang mirip
Sistem Pakar Pencarian Silsilah Keluarga Menggunakan Pemrograman Prolog

Logic Programming (GNU PROLOG)

BAB III LOGIC PROGRAMMING

hidup yang sebenarnya tidak hidup. Namun, selalu terlihat sangat nyata. Kadang aku bertanya, apa mungkin yang ku lihat di langit itu adalah apa yang

Tools Pembangun Sistem Pakar

BAB IV STRUKTUR PROGRAM PROLOG

KECERDASAN BUATAN MASALAH, RUANG KEADAAN DAN PENCARIAN ERWIEN TJIPTA WIJAYA, ST., M.KOM

Penggunaan Algoritma Runut-Balik dalam Proses Resolusi Query dari Eksekusi Program dalam Bahasa Prolog

BAB IV STRUKTUR PROGRAM PROLOG

Perkenalan. Kuliah Kecerdasan Buatan Semester genap 2006/2007. Feb 28, KB-Slide-01

Algoritma Pemrograman

BAB 4 SUSUNAN, OPERATOR DAN ARITMATIKAA

MENGENAL SISTEM PAKAR

BAB 2 SINTAKs DAN LOGIKA PROLOG

BAB 4 SENARAI, OPERATOR DAN ARITMETIK. Pengenalan. Objektif. 4.1 Perwakilan Senarai. TS Sistem Cerdas

Citra Kurniawan, ST, MM 1 Program Studi Teknik Elektronika Sekolah Tinggi Teknik Malang

Konsep. Bahasa Pemrograman. Evangs Mailoa. Pertemuan 7

Pendahuluan. Bab I Logika Manusia

ilmu bahasa pemrograman ilmu c++ Copyright izie ilmu c++

DAFTAR PERTANYAAN (Kuesioner) a. Isilah pertanyaan dibawah ini dengan jawaban yang sebenarnya.

Pertemuan Ke-4 Urutan (sequence) Rahmady Liyantanto. liyantanto.wordpress.com. S1 Teknik Informatika-Unijoyo

PROGRAM STUDI D3 JURUSAN TEKNIK KOMPUTER POLITEKNIK NEGERI SRIWIJAYA PALEMBANG TK Pengantar Prolog Hand On Lab 1 Inteligensi Buatan 100 menit

KOMUNIKASI ASERTIF MENDONGKRAK TINGKAT KEPUASAN PEMANGKU KEPENTINGAN

Sekilas C DAN C++ DISUSUN OLEH. Sebuah bahasa, yaitu: 1. Bahasaa tingkat tinggi. High. dapat. lunak

Modul 1 Pengenalan Prolog

IT132. Ramos Somya, S.Kom.

Pemrograman Logika 03/09/2014. Julio Adisantoso 1. Learning Outcomes KOM204 : BAHASA PEMROGRAMAN. Outline Materi. Logic Programming.

MODUL-1 TOPIK-2 PERAN ARSITEK DALAM TIAP TAHAPAN PROYEK PROYEK ARSITEKTUR DAN JASA ARSITEK. Lanjutan...

BAB I PENDAHULUAN. belajar mengenali kemampuan diri dan lingkungan.

Algoritma Pemrograman

SINTAKS DAN SEMANTIK PADA LOGIKA PROPOSISI. Matematika Logika Semester Ganjil 2011/2012

BAB IV PAPARAN HASIL PENELITIAN. Sekolah ini berada di sebelah Kantor Kepala Desa yang merupakan pusat desa.

BAB II PERSIAPAN, PELAKSANAAN, DAN ANALISIS HASIL A. PERSIAPAN

Algoritma Pemrograman

# Kemampuan Komunikasi # Komunikasi Jitu (1)

Algoritma Pemrograman

Nama, Tipe, Ekspresi, dan Nilai

Findra Kartika Sari Dewi

Algoritma dan Pemrograman. Pertemuan Ke-1 Pengantar Algoritma

PRAKTIKUM 9 ORGANISASI FILE/PENGOLAHAN DATA DENGAN FILE BERTIPE

BAB I PENDAHULUAN. bahasa tulis dan bahasa lisan. Variasi bahasa tulis tidak sedinamis variasi bahasa

3.1 Aktif dalam Safe Mode

KALIMAT DEKLARATIF (Minggu ke-1 dan 2)

PEMROGRAMAN BAHASA C BAB II 2.1 STRUKTUR BAHASA C

BAB 1 PENGENALAN BAHASA PROLOG

Konstruksi Dasar Algoritma

Transkrip Video Modul 2.2. Kursus Membaca Cepat Online

2.3 Algoritma Tidak Berhubungan dengan Bahasa Pemrograman Tertentu

BAB 2 LANDASAN TEORI

BAB I PENGENALAN BAHASA C

MIND HACKING PERSUASION

Implementasi OOP Pada Perangkat Lunak Pemrograman

POLIS DAN HAK-HAK ASAS ANDA

Tujuan Pembelajaran : Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Modul.

Algoritma Pemrograman

ALGORITMA TUGAS 2 RESUME ALGORITMA PERCABANGAN DAN ALGORITMA PERULANGAN. Disusun Oleh : Sakina Mawardah Teknik Informatika. Dosen : Asep M. Yusuf, S.

STMIK Banjarbaru LOGIKA PROPOSISIONAL. 9/24/2012 H. Fitriyadi & F. Soesianto

BAB I PENDAHULUAN. Kurikulum merupakan hal penting dalam sistem pendidikan Indonesia.

PERTANYAAN UNTUK PAKAR: 1. APA SAJA MANFAAT JUS ALPUKAT UNTUK KESEHATAN? 2. SEBERAPA BESAR PENGARUH DARI JUS ALPUKAT UNTUK KESEHATAN?

KONSEP DASAR PROGRAM BAHASA C

Pertemuan ke - 12 Unit Masukan dan Keluaran Riyanto Sigit, ST. Nur Rosyid, S.kom Setiawardhana, ST Hero Yudo M, ST

Masmimar Mangiang, Dasar-dasar Penulisan materi kuliah Departemen Ilmu Komunikasi, FISIP, Universitas Indonesia

Pentingnya Android Device Manager Bagi Pengguna Smartphone Android

BAB II LANDASAN TEORI. Membaca pada hakikatnya adalah suatu yang rumit yang melibatkan banyak hal,

Siap Hadapi Kerugian dalam Trading

BAB II PERKAWINAN DAN PUTUSNYA PERKAWINAN MENURUT KITAB UNDANG-UNDANG HUKUM PERDATA DAN UNDANG-UNDANG NOMOR 1 TAHUN 1974 TENTANG PERKAWINAN

BAB I PENDAHULUAN 1.1 Latar Belakang Masalah

Penggunaan bahasa. Tujuan pembelajaran:

Algoritma Pemrograman

PEMROGRAMAN DASAR ( PASCAL ) PERTEMUAN I

INFERENCE & EXPLANATION TEKNIK PENARIKAN KESIMPULAN & MEMBERI PENJELASAN

1. Bagaimana Mordekhai dan orang-orang Yahudi menerima berita itu?

Brigida Arie Minartiningtyas, M.Kom

ALGORITMA PEMROGRAMAN 1C PEMROGRAMAN LOGIK

BAHASA KOMPUTER. Komunikasi antara manusia dengan komputer (HUMAN COMPUTER INTERACTION HCI)

Bahasa Pemrograman :: Pemrograman List

ALGORITMA PEMOGRAMAN SEMESTER GENAP 2017/2018

PENGENALAN C++ Bab 1

BAB II PERSIAPAN, PELAKSANAAN, DAN ANALISIS HASIL

Penjadwalan Proses. Penjadwalan bertugas memutuskan hal-hal berikut : Proses yang harus berjalan. Kapan dan selama berapa lama proses berjalan

BAB 4 ALJABAR RELASIONAL

LAB SHEET PRAKTIK PEMROGRAMAN KOMPUTER

ALGORITMA PEMROGRAMAN 1C PRAGMATIK

BAB-2 : TIPE DATA, VARIABEL DAN OPERATOR

Algoritma Dan Pemrograman. Pengampu : Muhammad Zidny Naf an, Lc., S.Kom., M.Kom

KONTRAK PERKULIAHAN BAHASA PEMROGRAMAN KOM204

SATUAN ACARA PERKULIAHAN (SAP)

Review : Sifat Implementasi Linear List dengan Array

FORWARD & BACKWARD CHAINING SISTEM PAKAR

Algoritma Pemrograman

Universitas Komputer Indonesia. Pemrograman dengan C++ Builder 2004 Taryana S.

Bagaimana Berjalan Dalam Roh Bagian ke-3

Algoritma dan Struktur Data I Mia Fitriawati, S.Kom, M.Kom

Cara Melaksanakan. Keterampilan Membuka dan Menutup Pelajaran

Arkavi vs Raja Setan

Transkripsi:

1 TOPIK : LOGIKA PROGRAM dengan PREDIKAT FAIL, TRUE, CUT dan NOT Turbo Prolog menyediakan dua predikat penting, yakni predikat fail yang selalu mengakibatkan kegagalan untuk memaksa lacak balik dan predikat cut (!) yang selalu berhasil untuk mencegah lacak balik. Predikat Fail dan True Seperti telah dikatehui, lacak balik terjadi bila menemui kegagalan. Dalam kedaaan tertentu kita perlu memaksa lacak balik untuk memperoleh alternatif jawaban yang lain. Untuk itu disediakan predikat fail yang selalu gagal dan memaksa lacak balik. Memanggil predikat fail berakibat sama seperti membandingkan 1 =2. Tuliskan program berikut ini : ibu(symbol,symbol) seseorang ibu(acih,uup) ibu(enah, bek) ibu(nani, asep) seseorang :- ibu(x,y), write(x, adalah ibu, Y), goal seseorang Jika program dijalankan, akan menjawab sebagai berikut : Jika diberi goal eksternal ibu(x,y) (bagian Goal di program ditutp dulu dengan tanda komentar) akan menyebutkan semua fakta yang ada sebagai berikut : X= acih, Y= uup X = enah, Y = bek X = nani, Y = asep Jika dengan goal internal seperti tampak pada program dan tidak ada predikat fail, maka Turbo Prolog hanya memberi satu jawaban : acih adalah ibu uup Tetapi karena ada fail, lihat apa yang dilakukan oleh Prolog. Ketika Prolog memanggil klausa Ibu, Prolog mencatat adanya jawaban lain karena fakta untuk ibu lebih dari satu. Hal ini disebut non deterministik, sebaliknya disebut deterministik.

2 Coba anda bandingkan goal yang memakai fail dengan yang tidak ada fail nya. Dari goal tersebut, jelas bahwa Prolog tidak akan pernah memanggil klausa setelah predikat fail karena begitu Prolog gagal akibat predikat fail, Prolog langsung melakukan lacak balik. Jadi tidak ada artinya meletakkan sesuatu setelah predikat Predikat Cut Cut berarti memotong. Dalam Turbo Prolog cut berarti memotong jejak untuk melakukan lacak balik. Predikat ini dilambangkan dengan tanda seru (!). Predikat cut tidak pernah gagal sebagaimana predikat true hanya saja predikat true tidak berpengaruh terhadap pemotongan jejak lacak balik. Pada goal atau aturan yang memungkinkan adanya lacak balik, Prolog memenuhi sub-goal dari atas ke bawah selangkah demi selangkah, kemudian naik lagi ke atas setingkat jika mengalami kegagalan. Cara meletakkan cut, seperti meletakkan predikat lain dalam tubuh aturan contoh : x :- a,b,!,c,d. x :- e. Perhatikan dua klausa untuk aturan x diatas. Setelah melakukan pemadanan dengan aturan x yang pertama, Prolog mencatat titik lacak balik karena ada x yang lain. Selanjutnya subgoal dipanggil. Jika gagal, lacak balik ke klausa x berikutnya. Jika berhasil lanjutkan ke b. Apabila b gagal, lacak balik ke a atau ke x berikutnya, jika a tidak mengandung titik lacak balik. Tapi apabila b berhasil, Prolog memasuki cut sehingga titik lacak balik sebelumnya terhapus semua. Akibatnya bila kemudian gagal, tidak terjadi lacak balik ke b, a atau tidak juga ke x berikutnya. Setelah memsuki cut, apabila c gagal, program berhenti dengan gagal, tetapi jika c berhasil, proses berlanjut ke d. Apabila d gagal, lcak balik hanya pada c. Jika d berhasil, program selesai dalam keadaan berhasil. Predikat cut berguna untuk : Apabila kita mengetahui sebelumnya bahwa kemungkinan mencari jawaban yang lain tidak akan memberi arti sama sekali yang hanya membuang waktu dan memori saja. Cut yang demikian disebut cut green, yakni kehadirannya tidak mengubah logika program, tetapi diperlukan untuk peningkatan efisiensi. Jika logika program memang membutuhkan cut untuk mencegah perhatian Prolog terhadap alternatif sub-goal. Cut ini disebut cut merah (red cut), karena secara logika memang perlu meletakkan cut. Tuliskan program berikut : trace minuman(symbol,symbol)

3 test_baik(symbol) minuman_baik minuman(susu, sehat). minuman (kopi, menyegarkan). minuman (arak, berbahaya). minuman (sirup, berenergi). minuman_baik :- minuman(jenis,sifat), tes_baik(sifat), write(jenis, minuman, Sifat), minuman_baik. tes_baik(berbahaya) :- test_baik (_). goal minuman_baik. Jalankan program diatas, lalu perhatikan pada jendel Trace,kenapa diperoleh hal tersebut... Deterministik dan Cut Diatas telah dikemukakan bahwa predikat kan bersifat non deterministik apabila kembali dari pemanggilan klausa, meningalkan titik lacak balik karena ada alternatif lain dalam klausa. Hal ini akan mempengaruhi penggunaan memori (jika ada pengulangan) sehingga bisa terjadi dalam kompilasi benar, tapi saat dijalankan program akan berhenti. Dengan predikat cut, yang dapat mencegah terjadinya lacak balik ke klausa berikutnya, kumpulan klausa menjadi seolah-olah satu klausa saja, karena apabila match dengan salah satu klausa, titik lacak balik dihapus sehingga menutup kemungkinan terjadinya lacak balik. Artinya klausa akan bersifat deterministik yang harus memberi satu jawaban Jadi predikat bersifat non deterministik apabila : Ada suatu klausa tanpa cut dan ada lagi klausa dibawahnya (ada alternatif lain). Ada klausa yang memanggil predikat non-deterministik. Perhatikan contoh berikut : a :- a1,!,a2,a3. a1 :- a11,a12. /* a1 bersifat non deterministik */ a1 :- a21,a22. Pada contoh ini, klausa a1 bersifat non deterministik karena ada dua kemungkinan aturan. Jika klausa a tidak menggunakan cut, maka klausa a bersifat non deterministik karena memanggil klausa non deterministik (a1). Cara lain mencegah non deterministik dalam contoh ini adalah dengan memberi tanda cut sebgai berikut :

4 a :- a1,a2,a3. a1 :- a11,!,a12. /* a1 bersifat non deterministik */ a1 :- a21,a22. Perlu diperhatikan bahwa penggunaan cut bisa mengubah logika pemrograman atau dapat memberi hasil yang tidak terduga. Oleh karena itu gunakan terlebih dulu petunjuk kompiler check_determ untuk memeriksa adanya predikat yang non deterministik, baru kemudian diberi cut. Usahakanlah agar dalam setiap program hanya terdiri dari predikat deterministik, kecuali jika non deterministik memang sangat diperlukan. Kapankah kita menghendaki non-deterministik? jawabannya antara lain adalah apabila kita membutuhkan proses pengulangan dengan lacak balik. Predikat not Predikat not berfungsi untuk membalik keadaan. Dengan not, pemanggilan yang berhasil menjadi gagal dan sebaliknya. Penggunaan not khusus untuk atom atau mengandung variabel tapi harus sudah terikat dan not tidak boleh dipakai di kepala klausa (aturan), seperti : not(aturan1(...)) :- sc1,... /* salah */ not(besar(x)),... /* benar*/ Sub klausa besar diatas digunakan untuk memeriksa apakah sesuatu berukuran besr atau tidak. Kita bisa menyatakan bahwa sesuatu berukuran besar jika kita tahu sesuatu tersebut. Misalnya kita ditanya : Si anu besar atau tidak?. Kita akan bingung dan balik bertanya: siapa yang dimaksud?. Oleh karena itu, dalam Turbo Prolog akan diperingatkan jika variabel X diatas tidak terikat. Dalam hal ini Prolog mencegah terjadinya pengikatan variabel oleh klausa dalam predikat not, karena akan menimbulkan pertentangan. Contoh penggunaan not : sayang(symbol) ular(symbol) sayang(x) :- binatang(x), not(ular(x)), write( Dedi sayang, X), binatang(kucing). binatang(kobra). binatang(kambing). binatang(burung).

5 ular(kobra). ular(piton). goal sayang(x). Logika program dan Cut Telah kita ketahui bahwa cut dapat mengubah logika program atau logika program terkadang memerlukan cut. Hal ini wajar karena Prolog bekerja dengan lacak balik sedangkan cut dapat memotong jejak lacak balik tersebut. Untuk itu peletakan cut harus mempertimbangkan jangan sampai program menjadi salah atau menghasilkan sesuatu yang tidak terduga. Perhatikan contoh berikut : r :- s,t. r :- u. Secara deklaratif, r benar jika : 1. s dan t benar. 2. s gagal /salah dan u benar (atau not(s) dan u benar). 3. s benar, not(t) benar dan u benar. 4. u benar. Bandingkan jika ada cut seperti : r :- s,!,t. r :- u Secara deklaratif berarti r benar jika : s dan t benar not(s) dan u benar u benar Dengan demikian kita harus mengusahakan agar peletakan cut tidak sampai menghilangkan logika yang memang diperlukan. Dalam contoh diatas, misalkan kita menghendaki agar jika terjadi kegagalan di t, program harus lacak balik ke klausa r berikutnya, maka kita tidak boleh meletakkan cut seperti pada contoh diatas. Jika kita menghendaki agar r deterministik dan kegagalan di t harus lacak balik ke r berikutnya, maka letakkan cut diujung tubuh aturan r. cobakan...