APLIKASI PERMAINAN SEMUT MENCARI PERMEN DENGAN MENGGUNAKAN METODE SEARCH TREE SKRIPSI Oleh: JHONSEN NIM.1144042 PROGRAM STUDI TEKNIK INFORMATIKA SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER STMIK TIME MEDAN 2015 ABSTRAK Search tree adalah suatu metode pelacakan yang dapat diterapkan untuk mencari solusi pada bidang ilmu Artificial Intelligence (AI). Salah satu contoh persoalan AI yang memerlukan penerapan search tree adalah dalam pencarian lintasan yang dapat dilalui oleh seekor semut. Deskripsi dari permasalahan ini adalah sebagai berikut, diketahui seekor semut akan bergerak dari suatu titik (x,y) ke titik A(m,n). Semut hanya boleh membelok atau melintas pada titik-titik grid dan selalu melangkah horizontal ataupun vertikal. Pencarian solusi dari permasalahan ini menggunakan metode breadth first search (BFS). Langkah awal adalah membuat search tree dari masalah yang dimasukkan. Pencarian dimulai dari posisi awal sebagai node akar, selanjutnya metode BFS mencari solusi dengan mengembangkan node akar ke level-level berikutnya, semua pergerakan yang mungkin, tidak melanggar ketentuan dan menghasilkan kondisi baru dikembangkan semaksimal mungkin. Pencarian berakhir apabila tidak ada lagi node atau kondisi baru yang dapat dikembangkan. Semua node yang merupakan posisi tujuan merupakan solusi. Hasil penelitian ini adalah sebuah perangkat lunak dapat digunakan untuk bermain ‘Permainan Semut Mencari Permen’ pada sebuah komputer. Kata Kunci: Semut mencari permen, search tree, metode breadth first search (BFS) i ABSTRACT A search tree is a tree data structure in whose nodes data values are stored from some ordered set, in such a way that in-order traversal of the tree visits the nodes in ascending order of the stored values. This means that for any internal node containing a value y, the values x stored in its left sub tree satisfy x ≤ y, and the values y stored in its right sub tree satisfy v ≤ y. Each sub tree of a search tree is by itself again a search tree. One of those AI problems that need the implementation of search tree is a problem for seeking the path for an ant. The problem could be described as follow, an ant wants to move from start point, to destination point,. This destination point could represent candy, sugar, etc. The ant could only moves in grid points and always moves horizontally or vertically. The ant could passed the path that has been passed before. To increase the complexity of problem, we could add several barriers, which will be represented by water and the range of the should be limited. The result of this research is software for playing ant seeking candy in computer. Keywords: Ant seeking candy, search tree, breadth first search (BFS) ii KATA PENGANTAR Puji syukur kepada Tuhan Yang Maha Esa yang telah memberikan kesehatan kepada saya penulis dan berkat kebajikan yang telah diperbuat selama ini sehingga saya dapat menjelaskan skripsi yang merupakan salah satu pemenuhan kurikulum program studi Teknik Informatika pada STMIK TIME Medan. Adapun judul dari skripsi ini adalah “Aplikasi Permainan Semut Mencari Permendengan Menggunakan Metode SearchTree”. Dalam penyusunan skripsi ini, penulis banyak menerima bantuan, baik bimbingan maupun petunjuk serta saran nasehat dari berbagai pihak. Melalui kesempatan ini,penulis ingin menyampaikan rasa terima kasih yang sebesar – besarnya kepada : 1. Bapak Erwin Panggabean, M.Kom, selaku Dosen Pembimbing I yang telah membantu dan membimbing penulis dalam menyelesaikan skripsi ini. 2. Bapak Huliman, M.Kom, selaku Dosen Pembimbing IIyang telah membantu dan membimbing penulis dalam menyelesaikan skripsi ini. 3. Bapak Simon Kanggali, selaku Ketua Yayasan STMIK TIME Medan. 4. Bapak Prof. Chainur Arrasyid, S.H, selaku Ketua BPH STMIK TIME Medan. 5. Bapak Prof.Harlem Marpaung, Ph.D, selaku Ketua STMIK TIME Medan. 6. Bapak Jackri Hendrik, S.T, M.Kom, selaku Puket I STMIK TIME Medan. 7. Bapak Hendri, M.Kom, selaku Ketua Program Studi Teknik Informatika STMIK TIME Medan. iii 8. Seluruh Dosen STMIK TIME Medan, yang telah banyak memberikan ilmu pengetahuan kepada penulis selama perkuliahan. 9. Kedua orang tua tercinta dan teman-teman yang telah membantu baik dari segi moril maupun material hingga selesainya penyusunan skripsi ini. Meskipun telah disusun, penulis menyadari bahwa isi dan teknik penulisan skripsi ini masih memerlukan perbaikan untuk menyempurnakannya baik dari segi tata bahasa manapun materi yang terkandung didalamnya. Oleh karena itu, setiap kritik dan saran akan dijadikan bahan perbaikan untuk penulisan selanjutnya. Medan, April 2015 Penulis Jhonsen iv DAFTAR ISI ABSTRAK .......................................................................................................... i ABSTRACT.......................................................................................................... ii KATA PENGANTAR ......................................................................................... iii DAFTAR ISI ....................................................................................................... v DAFTAR GAMBAR ........................................................................................... viii DAFTAR TABEL ............................................................................................... x DAFTAR LAMPIRAN ....................................................................................... xi BAB I PENDAHULUAN ......................................................................... 01 1.1. Latar belakang masalah ........................................................... 01 1.2. Identifikasi masalah ................................................................. 02 1.3. Batasan masalah ...................................................................... 02 1.4. Tujuan dan manfaat penelitian ................................................. 03 1.5. Sistematika penulisan .............................................................. 04 BAB II LANDASAN TEORI .................................................................... 05 2.1. Artificial Intelligence (AI) ....................................................... 05 2.1.1. Sejarah AI ..................................................................... 8 2.1.2. Perbedaan antara AI dan Kecerdasan Alami .................. 10 2.1.3. Ruang Lingkup AI pada Aplikasi Komersial ................. 11 2.1.4. Komputasi AI dan Komputasi Konvensional ................. 14 2.1.5. Soft Computing ............................................................ 14 2.2. Representasi Pengetahuan ....................................................... 16 v 2.2.1. List ............................................................................... 18 2.2.2. Skema ........................................................................... 19 2.2.3. Struktur Pohon .............................................................. 19 2.2.4. Sistem Produksi ............................................................ 21 2.3. State Space and Search Problema ............................................. 23 2.4. Metode Pencarian .................................................................... 24 2.4.1. Breadth-First Search .................................................... 25 2.4.2. Depth-First Search ....................................................... 26 2.4.3. Pencarian Heuristik (Heuristic Search) ......................... 27 2.5. Pencarian Lintasan Pada Bidang Kartesian .............................. 29 2.6. Model Waterfall ....................................................................... 33 BAB III METODE PENELITIAN ............................................................. 35 3.1. Tempat dan jadwal penelitian ................................................. 35 3.2. Kerangka kerja ....................................................................... 35 3.2.1. Pengumpulan Data ........................................................ 36 3.2.2. Analisa sistem ............................................................... 37 3.2.3. Perancangan sistem ....................................................... 37 3.2.4. Pembangunan sistem ..................................................... 38 3.2.5. Uji coba sistem ............................................................. 38 BAB IV ANALISA DAN PERANCANGAN ............................................. 39 4.1. Analisa .................................................................................. 39 4.2. Perancangan ........................................................................... 52 4.2.1. Form ‘Login’ ................................................................ 53 4.2.2. Form ’Main’ ................................................................. 54 vi 4.2.3. Form ‘Bermain’ ............................................................ 55 4.2.4. Form ‘User’ .................................................................. 56 4.2.5. Form ‘Skor Tertinggi’ ................................................... 57 4.2.6. Form ‘Mengenai Pembuat’ ........................................... 58 BAB V HASIL DAN PEMBAHASAN ..................................................... 59 5.1. Hasil ........................................................................................ 59 5.2. Pembahasan ............................................................................. 65 BAB V1 KESIMPULAN DAN SARAN ..................................................... 67 6.1. Kesimpulan .............................................................................. 67 6.2. Saran ........................................................................................ 67 DAFTAR PUSTAKA LAMPIRAN vii DAFTAR GAMBAR Gambar 2.1. Sistem yang menggunakan AI ........................................................ 7 Gambar 2.2. Contoh List .................................................................................... 18 Gambar 2.3. Contoh Pohon ................................................................................ 19 Gambar 2.4. Bagan Sistem Produksi ................................................................... 22 Gambar 2.5. Metode Breadth-First Search ......................................................... 25 Gambar 2.6. Metode Depth-First Search ............................................................ 27 Gambar 2.7. Solusi Lintasan-1 ........................................................................... 30 Gambar 2.8. Solusi Lintasan-2 ........................................................................... 30 Gambar 2.9. Solusi Lintasan-3 ........................................................................... 30 Gambar 2.10. Solusi Lintasan-4 ........................................................................... 31 Gambar 2.11. Solusi Lintasan-5 ........................................................................... 31 Gambar 2.12. Solusi Lintasan-6 ........................................................................... 31 Gambar 2.13. Solusi Lintasan-7 ........................................................................... 32 Gambar 2.14. Solusi Lintasan-8 ........................................................................... 32 Gambar 2.15. Solusi Lintasan-9 ........................................................................... 32 Gambar 2.16. Solusi Lintasan-10 ......................................................................... 33 Gambar 2.17. The Classic Life Cycle .................................................................... 34 Gambar 3.1. Kerangka kerja penelitian ............................................................... 36 Gambar 4.1. Contoh struktur pohon pelacakan dengan metode BFS ................... 47 Gambar 4.2. Kriteria solusi paling optimum ....................................................... 48 Gambar 4.3. Langkah-langkah solusi paling optimum terhalang oleh rintangan .. 49 Gambar 4.4. Solusi paling optimum-1 ................................................................ 50 Gambar 4.5. Solusi paling optimum-2 ................................................................ 51 Gambar 4.6. Solusi tidak optimum-1 .................................................................. 51 Gambar 4.7. Solusi tidak optimum-2 .................................................................. 52 Gambar 4.8. Rancangan Form ‘Login’ ............................................................... 53 Gambar 4.9. Rancangan Form ‘Main’ ................................................................ 54 Gambar 4.10. Rancangan Form ‘Bermain’ ............................................................ 55 viii Gambar 4.11. Rancangan Form ‘Pilihan Pemain’ .................................................. 56 Gambar 4.12. Rancangan Form ‘Skor Tertinggi’ .................................................. 57 Gambar 4.13. Rancangan Form ‘Mengenai Pembuat’ ........................................... 58 Gambar 5.1. Tampilan Login .............................................................................. 59 Gambar 5.2. Tampilan Awal .............................................................................. 60 Gambar 5.3. Tampilan Nama Pemain ................................................................. 60 Gambar 5.4. Tampilan Tambah Pemain .............................................................. 61 Gambar 5.5. Tampilan Permainan ...................................................................... 62 Gambar 5.6. Tampilan Permainan Ketika Berhasil Memenangkan Permainan .... 63 Gambar 5.7. Tampilan Pesan Pemberitahuan Bahwa Permainan Berakhir .......... 64 Gambar 5.8. Tampilan Skor Tertinggi ................................................................. 64 Gambar 5.9. Tampilan Mengenai Pembuat ......................................................... 65 ix DAFTAR TABEL Tabel 2.1 AI Vs. Pemrograman Konvensional .................................................. 14 Tabel 2.2 Hubungan Antara Unsur-Unsur Pokok dalam Soft Computing............ 15 Tabel 3.1 Daftar Waktu dan Kegiatan Penelitian ............................................... 35 x DAFTAR LAMPIRAN Lampiran 1. Listing Program CD Lampiran 2. Surat Keputusan Dosen Pembimbing Skripsi Lampiran 3. Daftar Riwayat Hidup Mahasiswa Lampiran 4. Listing Program Lampiran 5. Kartu Bimbingan xi BAB I PENDAHULUAN 1.1 Latar Belakang Masalah Pohon pelacakan adalah suatu pohon yang dapat diterapkan untuk menyelesaikan persoalan pada bidang ilmu Artificial Intelligence (AI), dimana akar dari pohon berupa keadaan awal dari permasalahan dan cabang (dahan) berupa keadaan-keadaan yang mungkin terjadi dari keadaan sebelumnya serta daun merupakan keadaan akhir dari permasalahan tersebut. Keadaan-keadaan akhir tersebut dapat merupakan solusi dari permasalahan ataupun mungkin saja tidak ada yang dapat dijadikan solusi dari permasalahan. Salah satu contoh persoalan AI yang memerlukan penerapan pohon pelacakan adalah dalam mencari lintasan yang dapat dilalui oleh seekor semut pada bidang Kartesian. Persoalan ini dapat dideskripsikan sebagai berikut. Diketahui seekor semut akan bergerak dari titik pusat (0,0) ke titik A(m,n). Semut tersebut hanya boleh membelok pada titik-titik grid dan selalu melangkah sejajar dengan sumbu-x atau sumbu-y. Semut tersebut tidak boleh melintasi titik yang telah pernah dilaluinya. Setelah itu, disediakan sederetan ketentuan yang membatasi pergerakan semut tersebut. Yang menjadi permasalahannya adalah bagaimana bentuk lintasan-lintasan yang dapat dilalui oleh semut tersebut dengan menggunakan ketentuan-ketentuan yang telah ditetapkan tersebut. Dalam bidang ilmu AI, Persoalan ini sangat menantang dan sangat menarik untuk dipelajari. Oleh karena itu, penulis mengambil skripsi dengan judul 1 2 “Aplikasi Permainan Semut Mencari Permen dengan Menggunakan Metode Search Tree”. 1.2 Identifikasi Masalah Berdasarkan latar belakang pemilihan judul, maka yang menjadi permasalahan adalah penerapan metode search tree dalam menyelesaikan persoalan pencarian lintasan yang dapat dilalui oleh seekor semut. 1.3 Batasan Masalah Ruang lingkup permasalahan dalam merancang perangkat lunak ini dibatasi sebagai berikut. 1. Ukuran daerah yang dapat ditelusuri dimulai dari 5 x 5 satuan dan maksimal 10 x 10 satuan. 2. Pada daerah penelusuran akan terdapat halangan (rintangan) yang berupa genangan air. 3. Perangkat lunak dapat menampilkan semua solusi-solusi yang mungkin. 4. Jika tidak terdapat solusi, maka perangkat lunak akan menampilkan pesan pemberitahuan. 5. Bahasa pemrograman yang digunakan untuk membangun sistem adalah Microsoft Visual Basic 2010. 6. Database digunakan untuk menyimpan data ‘Pemain’ dan ‘Skor Tertinggi’. 3 1.4 Tujuan dan Manfaat Penelitian Tujuan penyusunan skripsi ini adalah untuk merancang suatu perangkat lunak yang dapat menyelesaikan persoalan pencarian lintasan yang dapat dilalui oleh seekor semut menggunakan metode search tree. Manfaat dari penyusunan skripsi ini, yaitu : 1. Bagi penulis a. Untuk menambah wawasan dan pengetahuan penulis mengenai metode search tree dan penerapannya dalam mencari solusi dari ‘Permainan Semut Mencari Permen’. b. Untuk meningkatkan kemampuan penulis mengenai cara pembuatan aplikasi dengan menggunakan Microsoft Visual Basic.NET 2010. 2. Bagi pembaca a. Aplikasi dapat digunakan sebagai sarana hiburan yang cukup menarik untuk mengisi waktu senggang. b. Laporan penelitian dapat dijadikan sebagai referensi dalam pengembangan perangkat lunak permainan lainnya. 3. Bagi STMIK TIME a. Untuk membantu pemahaman mata kuliah AI, terutama mengenai penerapan pohon pelacakan. b. Perangkat lunak dapat digunakan sebagai fasilitas pendukung dalam proses belajar mengajar. 4 1.5 Sistematika Penulisan Rincian isi dari laporan skripsi ini meliputi beberapa BAB, yaitu: BAB I PENDAHULUAN Bab ini membahas latar belakang masalah, identifikasi masalah, batasan masalah, tujuan dan manfaat serta sistematika penulisan. BAB II LANDASAN TEORI Bab ini berisi tentang Artificial Intelligence (AI), representasi pengetahuan, state space and search problema, metode pencarian, pencarian lintasan pada bidang Kartesian dan model Waterfall. BAB III METODE PENELITIAN Bab ini berisi pembahasan jadwal penelitian, kerangka peneliti, metode pengumpulan data, dan alur kerja program. BAB IV ANALISA DAN PERANCANGAN SISTEM Bab ini berisi pembahasan masalah serta rancangan tampilan form yang terdapat pada program yang akan dibuat. BAB V HASIL DAN PEMBAHASAN BAB ini berisi tampilan output program dan penjabaran mengenai kelebihan dan kelemahan program yang dibuat. BAB VI KESIMPULAN DAN SARAN Bab ini berisi kesimpulan dan saran untuk pengembangan perangkat lunak ke depannya. BAB II LANDASAN TEORI 2.1 Artificial Intelligence (AI) Artificial Intelligence (AI) disebut juga dengan kecerdasan buatan. AI merupakan salah satu bagian ilmu komputer yang mempelajari tentang bagaimana cara membuat agar komputer dapat melakukan pekerjaan seperti yang dilakukan oleh manusia. Menurut Suyanto (2011:2), sebagian kalangan menerjemahkan AI sebagai berikut: kecerdasan buatan, kecerdasan artifisial, intelijensia artifisial, atau intelijensia buatan. Pada buku ini, istilah AI sengaja tidak diterjemahkan ke Bahasa Indonesia karena istilah tersebut sudah sangat akrab bagi orang Indonesia. Begitu juga dengan singakatan istilah tersebut, yaitu AI, sudah sangat melekat di berbagai media ilmiah maupun non ilmiah. Menurut Sutojo, et al. (2011:1), kecerdasan buatan berasal dari Bahasa Inggris AI atau disingkat AI, yaitu: intelligence adalah kata sifat yang berarti cerdas, sedangkan artificial artinya buatan. Kecerdasan buatan yang dimaksud disini merujuk pada mesin yang mampu berpikir, menimbang tindakan yang akan diambil, dan mampu mengambil keputusan seperti yang dilakukan oleh manusia. Menurut Desiani dan Arhami (2006:1), AI atau kecerdasan buatan dapat didefinisikan sebagai: cabang dari ilmu komputer yang konsern dengan pengautomatisasi tingkah laku cerdas. Pernyataan tersebut juga dapat dijadikan definisi dari AI. Definisi ini menunjukkan bahwa AI adalah bagian dari komputer sehingga harus didasarkan pada sound theoretical (teori suara) dan prinsip-prinsip aplikasi dari bidangnya. 5 6 Menurut Siswanto (2010:1), “AI definisinya adalah proses dimana peralatan mekanik dapat melaksanakan kejadian-kejadian dengan menggunakan pemikiran atau kecerdasan seperti manusia”. Menurut Suparman dan Marlan (2007:1), “AI merupakan subbidang pengetahuan komputer yang khusus ditujukan untuk membuat software dan hardware yang sepenuhnya bias menirukan beberapa fungsi otak manusia”. Menurut Kristanto (2004:2), AI atau kecerdasan buatan dapat didefinisikan sebagai berikut: bagian dari ilmu pengetahuan komputer yang khusus ditujukan dalam perancangan otomatisasi tingkah laku cerdas dalam sistem kecerdasan komputer. Sistem memperlihatkan sifat-sifat khas yang dihubungkan dengan kecerdasan dalam kelakuan atau tindak-tanduk yang sepenuhnya bias menitukan beberapa fungsi otak manusia, seperti pengertian Bahasa, pengetahuan, pemikiran, pemecahan masalah dan lain sebagainya. Tujuan dari AI adalah untuk memecahkan persoalan dunia nyata (bersifat praktis) dan memahami intelligence (bersifat memahami). AI merupakan salah satu bagian ilmu komputer yang mempelajari tentang bagaimana cara membuat agar komputer dapat melakukan pekerjaan seperti yang dilakukan oleh manusia. Pada awalnya, komputer hanya difungsikan sebagai alat hitung saja. Namun seiring dengan perkembangan zaman, maka peran komputer semakin mendominasi kehidupan umat manusia. Komputer tidak lagi hanya digunakan sebagai alat hitung, tetapi, komputer dimanfaatkan untuk mengerjakan segala sesuatu yang bisa dikerjakan oleh manusia. Manusia bisa menjadi pandai dalam menyelesaikan segala permasalahan di dunia ini karena manusia mempunyai pengetahuan dan pengalaman. Pengetahuan diperoleh dari belajar. Semakin banyak bekal pengetahuan yang dimiliki oleh seseorang tentu saja diharapkan akan lebih mampu dalam menyelesaikan permasalahan. Namun bekal 7 pengetahuan saja tidak cukup, manusia juga diberi akal untuk melakukan penalaran, mengambil kesimpulan berdasarkan pengetahuan dan pengalaman yang mereka miliki. Tanpa memiliki kemampuan menalar yang baik, manusia dengan segudang pengalaman dan pengetahuan tidak akan dapat menyelesaikan masalah dengan baik. Demikian pula, dengan kemampuan menalar yang sangat baik, namun tanpa bekal pengetahuan dan pengalaman yang memadai, manusia juga tidak akan bisa menyelesaikan masalah dengan baik. Komputer juga harus diberi bekal pengetahuan dan mempunyai kemampuan untuk menalar, agar komputer bisa bertindak seperti dan sebaik manusia. Untuk itu pada AI, komputer dibekali dengan kedua komponen tersebut agar komputer bisa menjadi mesin yang pintar. Untuk menciptakan aplikasi kecerdasan buatan ada 2 bagian utama yang sangat dibutuhkan, yaitu: 1. Basis Pengetahuan (Knowledge Base) Menurut Kusumadewi (2003:3), “basis pengetahuan berisi fakta-fakta, teori, pemikiran, dan hubungan antara satu dengan yang lainnya”. 2. Motor Inferensi (Inference Engine) Menurut Kusumadewi (2003:3), “motor inferensi merupakan kemampuan menarik kesimpulan berdasarkan pengalaman, atau dapat juga disebut dengan penalaran”. Skema Sistem yang menggunakan AI dapat dilihat pada Gambar 2.1. Gambar 2.1 Sistem yang menggunakan AI Sumber : Kusumadewi, 2003 8 Definisi AI dapat dipandang dari berbagai sudut pandang, yaitu: 1. Sisi kecerdasan. AI akan membuat mesin menjadi ‘cerdas’ (mampu berbuat seperti apa yang dilakukan oleh manusia). 2. Sisi penelitian. AI adalah suatu studi bagaimana membuat agar komputer dapat melakukan sesuatu sebaik yang dikerjakan oleh manusia. 3. Sisi bisnis. AI adalah kumpulan peralatan yang sangat powerful dan metodologis dalam menyelesaikan masalah-masalah bisnis. 4. Sisi pemrograman. AI meliputi studi tentang pemrograman simbolik, penyelesaian masalah (problem solving), dan pencarian (searching). (Kusumadewi, 2003) 2.1.1 Sejarah AI Menurut Kusumadewi (2003:5), pada tahun 1950-an, para ilmuan dan peneliti mulai memikirkan bagaimana caranya agar mesin dapat melakukan pekerjaannya seperti yang bisa dikerjakan oleh manusia. Alan Turing, seorang matematikawan dari Inggris pertama kali mengusulkan adanya tes untuk melihat bisa tidaknya sebuah mesin dikatakan cerdas. Hasil tes tersebut kemudian dikenal dengan Turing Test, dimana mesin tersebut menyamar seolah-olah sebagai seseorang di dalam suatu permainan yang mampu memberikan respon terhadap serangkaian pertanyaan yang diajukan. Turing beranggapan bahwa, jika mesin 9 dapat membuat seseorang percaya bahwa dirinya mampu berkomunikasi dengan orang lain, maka dapat dikatakan bahwa mesin tersebut cerdas, seperti layaknya manusia. AI termasuk bidang ilmu yang relatif muda. AI dimunculkan oleh seorang profesor dari Massachusetts Institute of Technology yang bernama John McCarthy pada tahun 1956 pada Darmouth Conference yang dihadiri oleh para peneliti AI. Pada konferensi tersebut, juga didefinisikan tujuan utama dari AI, yaitu mengetahui dan memodelkan proses-proses berpikir manusia dan mendesain mesin agar dapat menirukan kelakuan mesin tersebut. Beberapa program AI yang mulai dibuat pada tahun 1956-1966, antara lain: 1. Logic Theorist, diperkenalkan pada Dartmouth Conference, program ini dapat membuktikan teorema-teorema matematika. 2. Sad Sam, diprogram oleh Robert K. Lindsay (1960). Program ini dapat mengetahui kalimat-kalimat sederhana yang ditulis dalam Bahasa Inggris dan mampu memberikan jawaban dari fakta-fakta yang didengar dalam sebuah percakapan. 3. ELIZA, diprogram oleh Joseph Weizenbaum (1967). Program ini mampu melakukan terapi terhadap pasien dengan memberikan beberapa pertanyaan dan jawaban. (Kusumadewi, 2003) 10 2.1.2 Perbedaan antara AI dan Kecerdasan Alami Menurut Kusumadewi (2003:3), jika dibandingkan dengan kecerdasan kecerdasan yang dimiliki oleh manusia (kecerdasan alami), AI memiliki beberapa keuntungan secara komersial antara lain: 1. AI lebih bersifat permanen. Kecerdasan alami akan cepat mengalami perubahan. Hal ini dimungkinkan karena sifat manusia yang pelupa. AI tidak akan berubah sepanjang sistem komputer dan program tidak diubah. 2. AI lebih mudah diduplikasi dan disebarkan. Mentransfer pengetahuan manusia dari satu orang ke orang lain membutuhkan proses yang sangat lama, dan keahlian itu juga tidak akan pernah dapat diduplikasi dengan lengkap. Oleh karena itu, jika pengetahuan terletak pada suatu sistem komputer, pengetahuan tersebut dapat disalin dari komputer tersebut dan dapat dipindahkan dengan mudah ke komputer yang lain. 3. AI lebih murah dibanding dengan kecerdasan alami. Menyediakan layanan komputer akan lebih mudah dan lebih murah dibandingkan dengan harus mendatangkan seseorang untuk mengerjakan sejumlah pekerjaan dalam jangka waktu yang sangat lama. 4. AI bersifat konsisten. Hal ini disebabkan karena AI adalah bagian dari teknologi komputer. sedangkan kecerdasan alami akan senantiasa berubah-ubah. 11 5. AI dapat didokumentasi. Keputusan yang dibuat oleh komputer dapat didokumentasi dengan mudah dengan cara melacak setiap aktivitas dari sistem tersebut. Kecerdasan alami sangat sulit untuk didokumentasi. 6. AI dapat mengerjakan pekerjaan jauh lebih cepat dibanding dengan kecerdasan alami. 7. AI dapat mengerjakan pekerjaan lebih baik dibanding dengan kecerdasan alami. Sedangkan keuntungan dari kecerdasan alami adalah: 1. Kreatif. Kemampuan untuk menambah ataupun memenuhi pengetahuan itu sangat melekat pada jiwa manusia. Pada kecerdasan buatan, untuk menambah pengetahuan harus dilakukan melalui sistem yang dibangun. 2. Kecerdasan alami memungkinkan orang untuk menggunakan pengalaman secara langsung. sedangkan pada kecerdasan buatan harus berkerja dengan input-input simbolik. 3. Pemikiran manusia dapat digunakan secara luas, sedangkan AI sangat terbatas. (Sandi, 2008) 2.1.3 Ruang Lingkup AI pada Aplikasi Komersial Menurut Kusumadewi (2003:6), makin pesatnya perkembangan teknologi menyebabkan adanya perkembangan dan perluasan lingkup yang membutuhkan kehadiran AI. Karakteristik ‘cerdas’ sudah mulai dibutuhkan di berbagai disiplin ilmu dan teknologi. AI tidak hanya dominan di bidang ilmu komputer 12 (informatika), namun juga sudah merambah di berbagai disiplin ilmu yang lain. Irisan antara psikologi dan AI melahirkan sebuah area yang dikenal dengan nama cognition & psycolinguistics. Irisan antara teknik elektro dengan AI melahirkan berbagai ilmu, seperti pengolahan citra, teori kendali, pengenalan pola, dan robotika. Dewasa ini, AI juga memberikan konstribusi yang cukup besar di bidang manajemen. Adanya sistem pendukung keputusan dan Sistem Informasi Manajemen (SIM) juga tidak terlepas dari andil AI. Adanya irisan penggunaan AI di berbagai disiplin ilmu tersebut menyebabkan cukup rumitnya untuk mengklasifikasikan AI menurut disiplin ilmu yang menggunakannya. Untuk memudahkan hal tersebut, maka pengklasifikasian lingkup AI didasarkan pada output yang diberikan, yaitu pada aplikasi komersial. Lingkup utama dalam AI adalah: 1. Sistem pakar (Expert System). Pada system pakar, komputer digunakan sebagai sarana untuk menyimpan pengetahuan para pakar. Dengan demikian, komputer akan memiliki keahlian untuk menyelesaikan permasalahan dengan meniru keahlian yang dimiliki oleh pakar. 2. Pengolahan bahasa alami (Natural Language Processing). Dengan pengolahan bahasa alami ini, diharapkan user dapat berkomunikasi dengan komputer dengan menggunakan bahasa sehari-hari. 3. Pengenalan ucapan (Speech Recognition). Melalui pengenalan ucapan, diharapkan manusia dapat berkomunikasi dengan komputer menggunakan suara. 13 4. Robotika & sistem sensor (Robotics & Sensory Systems). 5. Computer Vision, mencoba untuk dapat menginterpretasikan gambar atau objek-objek tampak melalui komputer. 6. Intelligent Computer-aided Instruction. Komputer dapat digunakan sebagai tutor yang dapat melatih dan mengajar. 7. Game Playing. Beberapa karakteristik yang ada pada sistem yang menggunakan AI adalah pemrogramannya yang cenderung bersifat simbolik ketimbang algoritmik, bisa mengakomodasi input yang tidak lengkap, bisa melakukan inferensi dan adanya pemisahan antara kontrol dengan pengetahuan. Namun, seiring dengan perkembangan teknologi, muncul beberapa teknologi yang juga bertujuan untuk membuat agar komputer menjadi cerdas sehingga dapat menirukan kerja manusia sehari-hari. Teknologi ini juga mampu mengakomodasi adanya ketidakpastian dan ketidaktepatan data input. Dengan didasari pada teori himpunan, maka pada tahun 1965, muncul Fuzzy Logic. Kemudian pada tahun 1975, John Holland mengatakan bahwa setiap problem berbentuk adaptasi (alami maupun buatan) secara umum dapat diformulasikan dalam terminologi genetika. Algoritma genetika ini merupakan simulasi proses evolusi Darwin dan operasi genetika atas kromosom. 14 2.1.4 Komputasi AI dan Komputasi Konvensional Menurut Kusumadewi (2003:4), pada awal diciptakannya, komputer hanya diperuntukkan sebagai alat hitung atau komputasi konvensional. Untuk itu, ada beberapa perbedaan antara komputasi yang dilakukan pada AI dengan komputasi konvensional tersebut. Perbedaan komputasi AI dengan komputasi konvensional dapat dilihat pada Tabel 2.1. Tabel 2.1 AI Vs. Pemrograman Konvensional Dimensi Komputasi Konvensional Komputasi AI Pemrosesan Mengandung konsepkonsep simbolik Algoritmik Sifat Input Bisa tidak lengkap Harus lengkap Pencarian Kebanyakan bersifat heuristik Biasanya didasarkan pada algoritma Keterangan Disediakan Biasanya tidak disediakan Fokus Pengetahuan Data dan informasi Struktur Kontrol dipisahkan dari pengetahuan Kontrol terintegrasi dengan informasi (data) Sifat output Kuantitatif Kualitatif Pemeliharaan & update Relatif mudah Sulit Kemampuan menalar Ya Tidak (Kusumadewi, 2003) 2.1.5 Soft Computing Menurut Kusumadewi (2003:7), Soft computing dapat didefinisikan sebagai berikut: koleksi dari beberapa metodologi yang bertujuan untuk mengeksploitasi adanya toleransi terhadap ketidaktepatan, ketidakpastian dan kebenaran parsial untuk dapat diselesaikan dengan mudah, robustness, dan biaya penyelesaiannya murah. Definisi ini pertama kali diungkapkan oleh Prof. Lotfi A. Zadeh pada tahun 1992. 15 Soft computing merupakan inovasi baru dalam membangun sistem cerdas. Sistem cerdas ini merupakan sistem yang memiliki keahlian seperti manusia pada domain tertentu, mampu beradaptasi dan belajar agar dapat bekerja lebih baik jika terjadi perubahan lingkungan. Unsur-unsur pokok dalam Soft Computing adalah: 1. Sistem Fuzzy (mengakomodasi ketidaktepatan). 2. Jaringan Syaraf (menggunakan pembelajaran). 3. Probabilistic Reasoning (mengakomodasi ketidakpastian). 4. Evolutionary Computing (optimasi). Keempat unsur tersebut bukan merupakan pesaing antara satu dengan lainnya, namun diantaranya bisa saling melengkapi. Bahkan, pada kenyataannya, biasanya unsur-unsur pokok tersebut akan digunakan secara sinergis ketimbang dikerjakan secara sendiri-sendiri. Sehingga, Zadeh juga mendefinisikan bahwa soft computing itu merupakan hubungan antara logika fuzzy, neuro-computing, probabilistic reasoning, dan algoritma genetik. Tabel 2.2 menunjukkan hubungan antara fuzzy/probabilistic-reasoning, jaringan syaraf tiruan dan AI konvensional. Tabel 2.2 Hubungan Antara Unsur-Unsur Pokok dalam Soft Computing Pembela jaran Fuzzy/probabilistic Tidak reasoning Jaringan Syaraf Ya Tiruan Sistem Ya Evolusioner Sistem AI Tidak Konvensional (Kusumadewi, 2003) Ekstraksi Pengetahuan Operasi real-time Representasi Pengetahuan Optimasi Ya Ya simbolik/ numerik Tidak Tidak Ya numerik Tidak Tidak Tidak numerik Ya Ya Tidak simbolik/ numerik Tidak Karakteristik Soft Computing adalah : 16 a. Soft computing memerlukan keahlian manusia, apabila direpresentasikan dalam bentuk aturan (IF-THEN). b. Mode komputasinya diilhami oleh proses biologis. c. Soft computing merupakan teknik optimasi baru. d. Soft computing menggunakan komputasi numeris. e. Soft computing memiliki toleransi kegagalan (meskipun kualitasnya berangsur-angsur memburuk). 2.2 Representasi Pengetahuan Menurut Suparman dan Marlan (2007:35), dua bagian terbesar yang membangun AI adalah basis pengetahuan dan mekanisme/mesin inferensi. Pangkalan pengetahuan berisi fakta-fakta tentang objek dalam domain yang ditentukan dan saling berhubungan satu sama lain. Seluruh program AI difokuskan pada domain tertentu. Pangkalan pengetahuan juga berisi pikiran, teori, prosedur praktis dan saling berhubungan. Pangkalan pengetahuan membentuk sumber sistem inteligensia dan digunakan oleh mekanisme inferensi untuk melakukan penalaran dan menarik kesimpulan. Mekanisme inferensi, adalah suatu rangkaian prosedur yang digunakan untuk menguji pangkalan pengetahuan dengan cara yang sistematik pada saat menjawab pertanyaan, memecahkan persoalan atau membuat keputusan dalam suatu domain, Mekanisme inferensi melakukan pelacakan melalui pangkalan pengetahuan untuk mencari jawaban dan solusinya. Langkah pertama dalam membuat program AI adalah membangun pangkalan pengetahuan. Agar komputer bisa bertingkah laku seperti seorang 17 inteligensia, maka ia harus mempunyai pengetahuan terlebih dahulu tentang sesuatu domain tertentu. Sebenarnya pengetahuan itu sudah ada. Apakah ia masih berada dalam otak seseorang atau beberapa orang pakar, atau mungkin masih dalam bentuk buku, artikel, memo dan prosedur, yang penting semuanya harus sudah terstruktur. Proses pengumpulan dan pengorganisasian pengetahuan disebut rekayasa pengetahuan. Hal inilah yang paling sulit dan memerlukan waktu yang banyak dalam proses pembuatan program AI. Sebelum melakukan rekayasa pengetahuan, maka pengetahuan tersebut harus diformat terlebih dahulu ke dalam bentuk yang paling tepat agar mudah menyimpan dan menggunakannya dalam komputer. Sebenarnya berbagai representasi skema pengetahuan itu sudah dikembangkan sejak bertahun-tahun yang lalu. Representasi skema ini mempunyai dua karakteristik umum. Pertama, bisa diprogram dengan bahasa komputer yang ada dan disimpan dalam memori. Kedua, dirancang agar faktafakta dan pengetahuan lainnya yang terkandung di dalamnya bisa digunakan untuk penalaran. Pangkalan pengetahuan berisi data struktur yang bisa dimanipulasi oleh sistem inferensi, yang merupakan bagian utama program AI. Sistem inferensi menggunakan teknik pelacakan dan pencocokan pola (pattern matching) dalam pangkalan pengetahuan agar bisa menjawab pertanyaan, menarik kesimpulan atau tugas-tugas lainnya yang bersifat inteligensia. (Sandi, 2008) 18 2.2.1 List Menurut Suparman dan Marlan (2007:48), “list adalah serangkaian jenis barang-barang tertulis yang berhubungan”. Hal ini bisa merupakan suatu daftar (list) nama orang yang dikenal, barang-barang yang akan dibeli di toko, hal-hal yang akan dikerjakan minggu ini, atau produk-produk berbagai jenis barang dalam katalog, dan banyak lagi cara untuk mendaftarkan berbagai jenis barang atau hal lainnya. List biasanya digunakan untuk merepresentasikan hirarki pengetahuan dimana objek dikelompokkan, dikategorikan atau digabungkan sesuai dengan urutannya atau hubungannya. Objek dibagi dalam kelompok atau jenis yang sama. Kemudian hubungan ditampilkan dengan menghubungkan satu sama lain. Bentuk yang paling sederhana adalah List, tapi bila ada dua list atau lebih yang berkaitan harus digabungkan, maka perlu dibuat suatu hirarki. Untuk mengidentifikasikannya, list dapat diberi nama misalnya List A dengan dua atau tiga elemen, maka dapat dilihat satu elemen dalam satu list, dan nama list lain mengandung sub-elemen. Contoh sederhana dari sebuah list dapat dilihat pada gambar 2.2 berikut ini. Gambar 2.2 Contoh List Sumber: Suparman dan Marlan, 2007 19 2.2.2 Skema Skema dapat juga disebut dengan frame. Banyak pengetahuan yang digunakan dalam proses penalaran sehari-hari yang sudah pasti dan dikenal dengan baik. Hal ini didasarkan kepada berbagai penampilan situasi dan objekobjek khusus, seperti pengalaman biasa yang konvensional, dan proses yang tak bervariasi. Pengetahuan semacam ini disebut sebagai pengetahuan stereotype dan direpresentasikan ke dalam sistem skema. Skema adalah satu metode pengorganisasian, presentasi dan penggunaan pengetahuan stereotype agar komputer bisa menalar. 2.2.3 Struktur Pohon Menurut Suparman dan Marlan (2007:49), “struktur pohon adalah struktur grafik hirarki”. Struktur ini merupakan cara yang sederhana untuk menggambarkan list hirarki pengetahuan lainnya. Contoh struktur pohon ditunjukkan oleh gambar 2.3 berikut ini. Gambar 2.3 Contoh Pohon Struktur ini terdiri dari node-node yang mencakup nama list dan ark yang menunjukkan hubungan antar node. Struktur atau grafik ini disebut pohon karena 20 mempunyai cabang-cabang. Tapi cabang dari pohon yang terbalik, berbeda dengan pohon yang sebenarnya. Pohon sangat umum dipakai untuk menggambarkan pengetahuan yang akan digunakan dalam AI. Contoh aplikasi pohon yang dapat dilihat sehari-hari adalah pengelolaan file dalam direktori penyimpanan. Pohon merupakan struktur data yang memiliki suatu struktur hirarki pada sekumpulan elemen, dan memiliki hubungan satu ke banyak (one to many relationship) seperti yang kita lihat dalam struktur organisasi sebuah perusahaan atau daftar isi sebuah buku. Dalam struktur organisasi, dapat dilihat bahwa ada level atas biasanya hanya ada satu pimpinan tertinggi. Pada level berikutnya diisi oleh beberapa orang dengan jabatan yang berbeda tetapi dalam tingkatan yang sama. Selanjutnya dapat dipecah lagi ke level berikutnya sampai struktur dapat memenuhi fungsi dan tujuan organisasi. Biasanya satu atasan memiliki beberapa bawahan yang berada dalam ruang lingkup wewenang dan tugas atasan. Begitu juga dalam daftar isi buku, dimana satu buku terdiri dari beberapa bab dan setiap terdiri dari beberapa sub bab, satu sub bab terdiri dari beberapa sub sub bab dan seterusnya. Dengan demikian hirarki dapat kita anggap sebagai “terdiri dari” atau “bawahan” atau “diawasi” dari atas ke bawah. Salah satu keuntungan pohon dibandingkan dengan struktur data linier adalah waktu cari sebuah node maksimum (dapat) lebih kecil dari n jika jumlah data = n. Sebuah pohon dapat mempunyai hanya sebuah simpul tanpa sebuah sisi pun. Dengan kata lain, jika G = (V, E) adalah pohon, maka V tidak boleh berupa himpunan kosong, namun E boleh kosong. Pohon juga seringkali didefinisikan sebagai graf tak-berarah dengan sifat bahwa hanya terdapat sebuah lintasan unik 21 antara setiap pasang simpul. Selain itu, di dalam pohon jumlah sisinya adalah jumlah simpul dikurangi satu. Secara sederhana, sebuah pohon bisa didefenisikan sebagai kumpulan dari elemen – elemen yang disebut dengan node / vertex (simpul) dimana salah satu node disebut dengan root (akar), dan sisa node lain terpecah menjadi himpunan yang saling tidak berhubungan satu sama lain dan disebut dengan subpohon (pohon bagian). Jika dilihat pada setiap subpohon maka subpohon juga mempunyai root dari subpohon-nya masing – masing. Dengan melihat istilah dasar di atas, maka sebuah pohon secara rekursif dapat didefenisikan sebagai berikut : 1. Sebuah node tunggal adalah sebuah pohon. 2. Jika terdapat sebuah node N dan beberapa subpohon N1, N2, N3, …, Nk maka dari node N dan subpohon yang ada dapat dibentuk sebuah pohon yang mempunyai root pada node N. 2.2.4 Sistem Produksi Menurut Kusumadewi (2003:86), sistem produksi (Production System) secara umum terdiri dari komponen-komponen sebagai berikut : 1. Ruang keadaan, yang berisi keadaan awal, tujuan dan kumpulan aturan yang digunakan untuk mencapai tujuan. 2. Strategi kontrol, yang berguna untuk mengarahkan bagaimana proses pencarian akan berlangsung dan mengendalikan arah eksplorasi. Gambar 2.4 menunjukkan bagan sistem produksi. 22 Gambar 2.4 Bagan Sistem Produksi Sumber: Kusumadewi, 2003 Sistem produksi ini merupakan salah satu bentuk representasi pengetahuan yang sangat populer dan banyak digunakan. Representasi pengetahuan dengan sistem produksi pada dasarnya berupa aplikasi aturan (rule) yang berupa : 1. Antecedent, yaitu bagian yang mengekspresikan situasi atau premis. 2. Konsekuen, yaitu bagian yang menyatakan suatu tindakan tertentu atau konklusi yang diterapkan jika suatu situasi atau premis bernilai benar. Konsekuensi atau konklusi baru dinyatakan benar, jika bagian antecedent pada sistem tersebut juga benar atau sesuai dengan aturan tertentu. Apabila pengetahuan direpresentasikan dengan aturan, maka ada 2 metode penalaran yang dapat digunakan, yaitu : 1. Forward Reasoning (penalaran maju). Pelacakan dimulai dari keadaan awal dan kemudian dicoba untuk mencocokkan dengan tujuan yang diharapkan. 2. Backward Reasoning (penalaran mundur). Penalaran ini dimulai dari tujuan atau hipotesa, baru dicocokkan dengan keadaan awal atau faktafakta yang ada. Ada beberapa faktor yang mempengaruhi pemilihan backward atau forward dalam memilih metoda penalaran, antara lain : 23 a. Banyaknya keadaan awal dan tujuan. Jika jumlah keadaan awal lebih kecil daripada tujuan, maka digunakan penalaran forward. Sebaliknya, jika jumlah tujuan lebih banyak daripada keadaan awal, maka dipilih penalaran backward. b. Rata-rata jumlah node yang dapat diraih secara langsung dari suatu node. Lebih baik dipilih yang jumlah node tiap cabangnya lebih sedikit. c. Apakah program perlu untuk menanyakan user untuk melakukan justifikasi terhadap proses penalaran ? Jika ya, maka lebih baik jika dipilih arah yang lebih memudahkan user. d. Bentuk kejadian yang akan memicu penyelesaian masalah. Jika kejadian berupa fakta baru, maka lebih baik dipilih penalaran forward. Namun, jika kejadian berupa query, maka lebih baik digunakan penalaran backward. 2.3 State Space and Search Problema State adalah representasi suatu keadaan pada suatu saat ataupun dekripsi konfigurasi sistem. State space adalah semua state (keadaan) yang mungkin, dan biasanya digambarkan sebagai jaringan dengan verteks merupakan state dan edge merupakan perubahan yang mungkin. Dekripsi formal suatu masalah adalah: 1. Definisikan state space. 2. Tentukan initial state dalam goal state. 3. Tentukan operator-operator. Representasi state space memungkinkan definisi formal suatu masalah sebagai persoalan mengubah status dengan menggunakan sekumpulan operator 24 (rule) dan juga mendefinisikan masalah sebagai search yaitu mencari lintasan di dalam state space dari initial state ke goal state. Dalam hipotesis sistem simbol Newell dan Simon, yang menyatakan bahwa masalah-masalah dapat dipecahkan dengan melakukan pencarian (search) dari antara pilihan-pilihan yang ada, terdukung oleh pandangan cara penyelesaian manusia yang bisa dilakukan. Manusia umumnya mempertimbangkan sejumlah alternatif strategi dalam menyelesaikan suatu masalah, dalam permainan catur misalnya, seorang pemain mempertimbangkan sejumlah kemungkinan tentang langkah-langkah berikutnya, memilih yang terbaik menurut kriteria tertentu seperti kemungkinan respon lawannya, atau memilih sejumlah langkah menurut suatu strategi global yang dirancangnya. Seorang pemain catur juga memperhitungkan pencapaian jangka pendek (seperti siasat untuk memperoleh keuntungan materi atau kualitas). Aspek tingkah laku cerdas yang mendasari teknik penyelesaian problema seperti dalam catur ini disebut proses pencarian ruang keadaan (space state search). (http://duniainformatikaindonesia.blogspot.com/2013/03/problema-state-spaceand-search-masalah.html) 2.4 Metode Pencarian Menurut Kusumadewi (2003:23), “hal terpenting dalam menentukan keberhasilan sistem yang berdasarkan AI adalah kesuksesan dalam pencarian dan pencocokan”. Pada dasarnya, terdapat 2 (dua) teknik pencarian dan pelacakan yang digunakan, yaitu: 1. Pencarian buta (blind search), dapat dibagi menjadi: 25 a. Breadth-First Search b. Depth-First Search 2. Pencarian Terbimbing (Heuristic Search) 2.4.1 Breadth-First Search Menurut Sri Kusumadewi (2003:23), “pada metode ini, semua node pada level n akan dikunjungi terlebih dahulu sebelum mengunjungi node-node pada level n+1 (level berikutnya)”. Pencarian dimulai dari node akar terus ke level ke-1 dari kiri ke kanan, kemudian berpindah ke level-2 dan seterusnya. Pohon dikembangkan hingga ditemukannya solusi. Gambar 2.5 menunjukkan prosedur breadth-first search. Keadaan Awal B D E C F G H I Gambar 2.5 Metode Breadth-First Search Sumber: Kusumadewi, 2003 Keuntungan dari metode ini adalah tidak akan menemui jalan buntu. Jika terdapat lebih dari satu solusi, maka breadth-first search akan menemukannya. Dan jika ada lebih dari satu solusi, maka solusi minimum akan ditemukan. 26 Sedangkan kelemahan dari metode ini adalah membutuhkan memori yang cukup banyak, karena menyimpan semua node dalam satu pohon dan membutuhkan waktu yang cukup lama, karena akan menguji semua node pada level-n untuk mendapatkan solusi pada level ke- (n + 1). 2.4.2 Depth-First Search Menurut Kusumadewi (2003:26), “Depth-first search merupakan teknik penelusuran data pada node-node secara vertikal dan sudah terdefinisikan secara mendalam”. Proses pemeriksaan akan bergerak turun jika node yang diperiksa saat ini tidak sesuai dengan tujuan. Node tidak akan dikembangkan ke samping walaupun node masih mempunyai beberapa node anak yang dapat dikembangkan. Node anak baru dikembangkan lagi setelah selesainya pencarian mendalam terhadap node anak yang sebelumnya telah dikembangkan. Proses ini diulangi terus hingga didapatkan solusi. Keuntungan dari metode ini adalah membutuhkan memori yang relatif kecil, karena hanya node-node pada lintasan yang aktif saja yang disimpan. Secara kebetulan, metode depth-first search akan menemukan solusi tanpa harus menguji lebih banyak lagi dalam ruang keadaan. Sedangkan kelemahan dari metode ini adalah memungkinkan tidak ditemukannya tujuan yang diharapkan dan hanya akan mendapatkan 1 solusi pada setiap pencarian. Gambar 2.6 menunjukkan prosedur depth-first search. 27 Keadaan Awal B C E D Gambar 2.6 Metode Depth-First Search Sumber: Kusumadewi, 2003 Pada gambar 2.6, pencarian dimulai dari keadaan awal kemudian dilanjutkan dengan mengembangkan node B, node C dan node D. Ketika diketahui node D bukan merupakan solusi dan tidak dapat mengembangkan node anak lagi, pencarian dikembalikan ke node parent, dan mengecek apakah ada node anak yang dapat dikembangkan lagi. Apabila ada, maka pencarian dilakukan ke level bawah lagi. Pencarian dilakukan terus hingga ditemukan solusi. 2.4.3 Pencarian Heuristik (Heuristic Search) Menurut Suparman dan Marlan (2007:84), “Heuristic search adalah suatu istilah yang berasal dari bahasa Yunani yang berarti menemukan/menyingkap”. Heuristic merupakan suatu perbuatan yang membantu kita menemukan jalan 28 dalam pohon pelacakan yang menuntut kita kepada suatu solusi masalah. Heuristic dapat diartikan juga sebagai suatu kaidah yang merupakan metode/prosedur yang didasarkan kepada pengalaman dan praktek, syarat, trik atau bantuan lainnya yang membantu mempersempit dan memfokuskan proses pelacakan kepada suatu tujuan tertentu. Heuristic dapat digunakan pada beberapa kondisi berikut ini. 1. Mengatasi combinatorial explosion. Ada masalah yang kemungkinan arah penyelesaiannya berkembang pesat (bersifat faktorial) sehingga menimbulkan combinatorial explosion. Heuristic merupakan cara untuk menentukan kemungkinan arah penyelesaian masalah secara efisien. 2. Solusi paling optimal mungkin tidak diperlukan. Dalam suatu keadaan, mungkin lebih baik mendapatkan solusi yang mendekati optimal dalam waktu yang singkat daripada solusi yang paling optimal dalam waktu yang lama. 3. Pada umumnya hasilnya cukup baik. Sekalipun tidak optimal biasanya mendekati optimal. 4. Membantu pemahaman bagi orang yang menyelesaikan persoalan. Banyak alternatif heuristic yang dapat diterapkan dalam suatu percobaan. Orang yang menyelesaikan persoalan tersebut akan lebih mengerti persoalannya jika mencoba heuristic yang diterapkannya. 29 2.5 Pencarian Lintasan Pada Bidang Kartesian Salah satu permasalahan yang dapat diangkat menjadi topik pembahasan AI adalah pencarian lintasan pada bidang kartesian. Permasalahan ini menerapkan metode pohon pelacakan untuk mencari solusi yang mungkin. Permasalahan ini dapat didekripsikan sebagai berikut, diketahui seekor semut akan bergerak dari titik pusat (0,0) ke titik A(m,n) pada bidang kartesian. Semut tersebut hanya boleh membelok pada titik-titik grid dan selalu melangkah sejajar dengan sumbu-x atau sumbu-y (horizontal atau vertikal). Semut tersebut tidak boleh melintasi lintasan yang telah pernah dilaluinya dan tidak boleh melintasi titik yang telah pernah dilaluinya. Setelah itu, disediakan sederetan ketentuan yang membatasi pergerakan semut tersebut. Pertanyaannya adalah bagaimana bentuk lintasan-lintasan (yang mungkin) yang dapat dilalui oleh semut tersebut dengan menggunakan ketentuan-ketentuan yang telah ditetapkan di atas. Implementasi pohon pelacakan adalah sebagai berikut. Pertama-tama, disetting keadaan awal sebagai root node (node akar). Selanjutnya, dilakukan pengembangan node-node anak yang mungkin menuju keadaan tujuan dengan mematuhi dan tidak melanggar aturan yang ada. (http://duniainformatikaindonesia.blogspot.com/2013/03/pencarian-lintasan-padabidang-kartesian.html) Sebagai contoh, titik yang dituju semut adalah titik(m, n) = (3, 2). Aturan, semut hanya boleh bergerak pada kuadran I (sumbu x positif dan sumbu y positif), pergerakan semut tidak boleh melewati batas maksimal, x = 3 dan y = 2, maka dengan pohon pelacakan, diperoleh pergerakan yang mungkin menuju keadaan tujuan ditunjukkan oleh gambar 2.7 sampai gambar 2.16 berikut. 30 3 2 1 -4 -3 -2 -1 1 2 3 4 -1 -2 -3 Gambar 2.7 Solusi Lintasan-1 3 2 1 -4 -3 -2 -1 1 2 3 4 -1 -2 -3 Gambar 2.8 Solusi Lintasan-2 3 2 1 -4 -3 -2 -1 1 2 3 -1 -2 -3 Gambar 2.9 Solusi Lintasan-3 4 31 3 2 1 -4 -3 -2 -1 1 2 3 4 -1 -2 -3 Gambar 2.10 Solusi Lintasan-4 3 2 1 -4 -3 -2 -1 1 2 3 4 -1 -2 -3 Gambar 2.11 Solusi Lintasan-5 3 2 1 -4 -3 -2 -1 1 2 3 -1 -2 -3 Gambar 2.12 Solusi Lintasan-6 4 32 3 2 1 -4 -3 -2 -1 1 2 3 4 -1 -2 -3 Gambar 2.13 Solusi Lintasan-7 3 2 1 -4 -3 -2 -1 1 2 3 4 -1 -2 -3 Gambar 2.14 Solusi Lintasan-8 3 2 1 -4 -3 -2 -1 1 2 3 -1 -2 -3 Gambar 2.15 Solusi Lintasan-9 4 33 3 2 1 -4 -3 -2 -1 1 2 3 4 -1 -2 -3 Gambar 2.16 Solusi Lintasan-10 2.6 Model Waterfall Waterfall model membutuhkan suatu pendekatan yang sistematis dan berurutan. Tahapan dari Classic Life Cycle adalah sebagai berikut: 1. Rekayasa Sistem Hubungan antara perangkat lunak dengan perangkat keras, manusia dan databasenya. 2. Analisis Memahami kebutuhan perangkat lunak, fungsi-fungsi, unjuk kerja dan antarmuka yang diperlukan. 3. Perancangan Tahapan yang berfokus pada empat atribut dari program, yaitu : struktur data, arsitektur perangkat lunak, detil suatu prosedur, dan karakteristik antarmuka. 4. Pembuatan Program Aktivitas yang mengubah hasil rancangan menjadi bentuk yang dapat dimengerti komputer, biasanya dalam bentuk program. 34 5. Pengujian Setelah pengkodean selesai, maka akan dilakukan pengujian program. Pengujian dilakukan untuk menemukan kesalahan serta memastikan keluaran yang dihasilkan sesuai dengan yang diinginkan. 6. Pemeliharaan Suatu perangkat lunak akan mengalami perubahan sejalan dengan perubahan waktu. Pembaharuan, penambahan fungsi, dan peningkatkan kinerja perangkat lunak akan terus dilakukan untuk meningkatkan efisiensi dan efektivitas bagi pengguna. Hubungan (keterkaitan) antara tahapan-tahapan di atas dapat digambarkan seperti gambar 2.17. Gambar 2.17 The Classic Life Cycle BAB III METODE PENELITIAN 3.1 Tempat dan Jadwal Penelitian Penelitian ini dimulai dari Nopember 2014 dan berakhir pada April 2015. Penelitian dilakukan di dunia maya. Penelitian ditujukan untuk mengumpulkan data yang diperlukan dalam proses perancangan dan pembuatan sistem. Berikut ini dijabarkan jadwal penelitian yang dapat dilihat pada Tabel 3.1. Tabel 3.1. Daftar Waktu dan Kegiatan Penelitian Waktu Kegiatan Nopember 2014 Desember 2014 1 1 2 3 4 2 3 4 Januari 2015 1 2 3 Februari 2015 4 1 2 3 4 Maret 2015 1 2 3 April 2015 4 1 2 Identifikasi Masalah Pengumpulan Data Analisa Sistem Perancangan Sistem Pembangunan Sistem Uji Coba Sistem Penulisan Laporan Skripsi 3.2 Kerangka Kerja Adapun tahapan dan langkah-langkah pengembangan perangkat lunak ini dapat digambarkan dalam bentuk diagram seperti diperlihatkan pada Gambar 3.1 berikut. 35 3 4 36 Identifikasi Masalah Pengumpulan Data Analisa Sistem Perancangan Sistem Pembangunan Sistem Uji Coba Sistem Gambar 3.1. Kerangka Kerja Penelitian 3.2.1 Pengumpulan Data Di tahap pertama, penulis mengumpulkan bahan-bahan yang diperlukan dalam penyusunan skripsi. Bahan tersebut dikumpulkan dari buku dan sumbersumber lainnya di internet. Gambar yang diperlukan dalam pembuatan perangkat lunak diambil dari gambar themes dari Microsoft Power Point yang diubah warna latarnya dan juga beberapa gambar yang bersumber dari internet dan di-edit dengan menggunakan aplikasi Adobe Photoshop C.S. Selain itu, juga digunakan beberapa gambar clipart yang diunduh dari internet. 37 3.2.2 Analisa Sistem Tahap berikutnya ialah menganalisa kebutuhan-kebutuhan sistem. Perangkat dan teknik-teknik tertentu akan membantu penganalisa menentukan kebutuhan. Perangkat yang dimaksud ialah penggunaan Diagram Aliran Data (DAD) untuk menyusun daftar input, proses, dan output sistem dalam bentuk grafik terstruktur. 3.2.3 Perancangan Sistem Penganalisa sistem akan menggunakan informasi yang terkumpul sebelumnya untuk mencapai desain sistem logis. Penganalisa merancang prosedur data-entry sedemikian rupa sehingga data yang dimasukkan ke dalam sistem informasi benar-benar akurat. Selain itu, penganalisa menggunakan teknik-teknik bentuk dan perancangan layar tertentu untuk menjamin keefektifan input sistem. Setelah itu, akan dirancang input dan output sistem serta rancangan user interface dan database. Perangkat keras dan perangkat lunak yang digunakan untuk menjalankan aplikasi ini memiliki spesifikasi sebagai berikut : 1. Prosesor Intel(R) Core(TM) i3. 2. Memory 2048 MB. 3. Monitor dengan resolusi 1366 × 768 pixel. 4. Keyboard dan Mouse. 5. Harddisk 256GB 6. Speaker 38 Perangkat lunak ini direkomendasikan untuk dijalankan di sistem operasi Microsoft Windows 7. Software pendukung yang digunakan yaitu Microsoft.NET Framework 3.5. 3.2.4 Pembangunan Sistem Permainan ini dibuat dengan menggunakan bahasa pemrograman Microsoft Visual Basic.NET dengan koneksi database menggunakan Microsoft Access 2007. Perangkat lunak ini dirancang dengan menggunakan beberapa objek dasar seperti: 1. Label, yang digunakan untuk menampilkan keterangan. 2. TextBox, yang digunakan sebagai tempat penginputan data. 3. Button, yang digunakan sebagai tombol eksekusi. 4. Timer, yang digunakan untuk melakukan pengaturan tampilan waktu. 5. ComboBox, yang digunakan untuk menyediakan pilihan. 6. RadioButton, yang digunakan untuk menyediakan pilihan. 3.2.5 Uji Coba Sistem Sebelum sistem dapat digunakan, maka harus dilakukan pengujian terlebih dulu. Hal ini akan menghemat biaya bila dapat mengetahui adanya masalah sebelum sistem tersebut ditetapkan. Sebagian pengujian dilakukan oleh pemrogram sendiri. Jika terdapat kesalahan (bug), maka program diperbaiki sampai berjalan sebagaimana mestinya. BAB IV ANALISA DAN PERANCANGAN 4.1. Analisa Pencarian lintasan yang dapat dilalui oleh seekor semut pada bidang kartesian dapat dilakukan dengan bantuan pohon pelacakan. Deskripsi dari permasalahan ini adalah sebagai berikut: Diketahui seekor semut akan bergerak dari suatu titik (x,y) ke titik A(m,n). Semut hanya boleh membelok atau melintas pada titik-titik grid dan selalu melangkah sejajar dengan sumbu-x atau sumbu-y. Semut tidak boleh melintasi lintasan yang telah pernah dilaluinya atau melintasi titik yang telah pernah dilaluinya. Setelah itu, disediakan sederetan ketentuan yang membatasi pergerakan semut tersebut. Ketentuan yang membatasi adalah batas pergerakan maksimum semut yang diperbolehkan, posisi-posisi titik rintangan dimana semut tidak boleh melintas dan hanya melintasi kuadran yang diperbolehkan untuk melintas. Solusi dari permasalahan ini bisa lebih dari satu dan perangkat lunak dituntut untuk mampu menampilkan semua lintasan yang dapat dilalui semut dari posisi awal ke posisi tujuan dengan mematuhi ketentuan-ketentuan yang berlaku. Karena solusi yang didapatkan bisa lebih dari satu, maka metode pencarian yang digunakan untuk mencari solusi permasalahan ini adalah metode breadth-first search (BFS). Dimulai dari posisi awal sebagai node akar, selanjutnya metode BFS mencari solusi dengan mengembangkan node akar ke level-level berikutnya, semua pergerakan yang mungkin, tidak melanggar ketentuan dan menghasilkan 35 36 kondisi baru dikembangkan semaksimal mungkin. Pencarian berakhir apabila tidak ada lagi node atau kondisi baru yang dapat dikembangkan. Semua node yang merupakan posisi tujuan merupakan solusi. Adapun pergerakan semut yang diperbolehkan adalah: 1. Bergerak ke kanan (x + 1). 2. Bergerak ke kiri (x – 1). 3. Bergerak ke atas (y + 1). 4. Bergerak ke bawah (y – 1). 5. Semua pergerakan semut di atas legal apabila mematuhi ketentuan-ketentuan sebagai berikut: a. Tidak melintasi posisi titik rintangan. b. Tidak melintasi posisi titik yang sudah pernah dilalui sebelumnya. c. Tidak melebihi batas pergerakan maksimum semut (x atau y). d. Tidak melintasi kuadran yang tidak diperbolehkan untuk melintas. Kuadran yang dimaksud adalah kuadran I (dimana x bernilai positif dan y bernilai positif), kuadran II (dimana x bernilai negatif dan y bernilai positif), kuadran III (dimana x bernilai negatif dan y bernilai negatif) dan kuadran IV (dimana x bernilai positif dan y bernilai positif). Berikut adalah algoritma pencarian solusi pergerakan semut: 1. Set posisi awal semut. a. Ant(0).X = PosisiAwal.X. b. Ant(0).Y = PosisiAwal.Y. c. Ant(0).StepX = 0. 37 d. Ant(0).StepY = 0. e. Ant(0).Gerakan = “”. f. Ant(0).Sebelum = -1. g. Ant(0).Tujuan = False. 2. nIndex = -1. 3. Lakukan perulangan algoritma berikut sampai (nIndex = ukuran array variabel ‘Ant’) atau (proses dibatalkan oleh user). a. nIndex = nIndex + 1. b. Jika Ant(nIndex).Tujuan = False (bukan posisi tujuan), maka lanjutkan ke algoritma berikutnya. Jika tidak, kembali ke poin a. c. Untuk nTemp = 1 sampai 4, lakukan looping dari poin d sampai poin g. d. Jika nTemp = 1 (gerakan semut vertikal ke atas), maka: i. PosTemp.X = Ant(nIndex).X. ii. PosTemp.Y = Ant(nIndex).Y + 1. iii. PosTemp.StepX = Ant(nIndex).StepX. iv. PosTemp.StepY = Ant(nIndex).StepY + 1. v. Jika CekPosisi(PosTemp) = True, maka lanjutkan ke algoritma berikutnya. Jika tidak, maka keluar dan lanjutkan algoritma ke poin e. vi. bTemp1 = False. vii. nTemp2 = nIndex. viii. Cek apakah posisi sudah pernah dilalui sebelumnya. Selama nTemp2 > -1 dan bTemp1 = False, maka: 38 1) bTemp1 = (Ant(nTemp2).X = PosTemp.X And Ant(nTemp2).Y = PosTemp.Y). 2) nTemp2 = Ant(nTemp2).Sebelum. ix. Jika bTemp1 = False (posisi belum pernah dilewati), maka lanjutkan ke algorimta berikutnya. Jika tidak, maka maka keluar dan lanjutkan algoritma ke poin e. x. Bentuk sebuah posisi baru dengan menambah jumlah array variabel ‘Ant’ dengan 1 dan set propertinya sebagai berikut: 1) .X = PosTemp.X. 2) .Y = PosTemp.Y. 3) .StepX = PosTemp.StepX. 4) .StepY = PosTemp.StepY. 5) .Gerakan = “Y,+”. 6) .Sebelum = nIndex 7) .Tujuan = (PosTemp.X = PosisiTujuan.X And PosTemp.Y = PosisiTujuan.Y). 8) e. Jika .Tujuan = True maka nPeny = nPeny + 1. Jika nTemp = 2 (gerakan semut vertikal ke bawah), maka: i. PosTemp.X = Ant(nIndex).X. ii. PosTemp.Y = Ant(nIndex).Y - 1. iii. PosTemp.StepX = Ant(nIndex).StepX. iv. PosTemp.StepY = Ant(nIndex).StepY + 1. 39 v. Jika CekPosisi(PosTemp) = True, maka lanjutkan ke algoritma berikutnya. Jika tidak, maka keluar dan lanjutkan algoritma ke poin f. vi. bTemp1 = False. vii. nTemp2 = nIndex. viii. Cek apakah posisi sudah pernah dilalui sebelumnya. Selama nTemp2 > -1 dan bTemp1 = False, maka: 1) bTemp1 = (Ant(nTemp2).X = PosTemp.X And Ant(nTemp2).Y = PosTemp.Y). 2) nTemp2 = Ant(nTemp2).Sebelum. ix. Jika bTemp1 = False (posisi belum pernah dilewati), maka lanjutkan ke algorimta berikutnya. Jika tidak, maka maka keluar dan lanjutkan algoritma ke poin f. x. Bentuk sebuah posisi baru dengan menambah jumlah array variabel ‘Ant’ dengan 1 dan set propertinya sebagai berikut: 1) .X = PosTemp.X. 2) .Y = PosTemp.Y. 3) .StepX = PosTemp.StepX. 4) .StepY = PosTemp.StepY. 5) .Gerakan = “Y,-”. 6) .Sebelum = nIndex 7) .Tujuan = (PosTemp.X = PosisiTujuan.X And PosTemp.Y = PosisiTujuan.Y). 8) Jika .Tujuan = True maka nPeny = nPeny + 1. 40 f. Jika nTemp = 3 (gerakan semut horizontal ke kanan), maka: i. PosTemp.X = Ant(nIndex).X + 1. ii. PosTemp.Y = Ant(nIndex).Y. iii. PosTemp.StepX = Ant(nIndex).StepX + 1. iv. PosTemp.StepY = Ant(nIndex).StepY. v. Jika CekPosisi(PosTemp) = True, maka lanjutkan ke algoritma berikutnya. Jika tidak, maka keluar dan lanjutkan algoritma ke poin g. vi. bTemp1 = False. vii. nTemp2 = nIndex. viii. Cek apakah posisi sudah pernah dilalui sebelumnya. Selama nTemp2 > -1 dan bTemp1 = False, maka: 1) bTemp1 = (Ant(nTemp2).X = PosTemp.X And Ant(nTemp2).Y = PosTemp.Y). 2) nTemp2 = Ant(nTemp2).Sebelum. ix. Jika bTemp1 = False (posisi belum pernah dilewati), maka lanjutkan ke algorimta berikutnya. Jika tidak, maka maka keluar dan lanjutkan algoritma ke poin g. x. Bentuk sebuah posisi baru dengan menambah jumlah array variabel ‘Ant’ dengan 1 dan set propertinya sebagai berikut: 1) .X = PosTemp.X. 2) .Y = PosTemp.Y. 3) .StepX = PosTemp.StepX. 4) .StepY = PosTemp.StepY. 41 5) .Gerakan = “X,+”. 6) .Sebelum = nIndex 7) .Tujuan = (PosTemp.X = PosisiTujuan.X And PosTemp.Y = PosisiTujuan.Y). 8) g. Jika .Tujuan = True maka nPeny = nPeny + 1. Jika nTemp = 4 (gerakan semut horizontal ke kiri), maka: i. PosTemp.X = Ant(nIndex).X - 1. ii. PosTemp.Y = Ant(nIndex).Y. iii. PosTemp.StepX = Ant(nIndex).StepX + 1. iv. PosTemp.StepY = Ant(nIndex).StepY. v. Jika CekPosisi(PosTemp) = True, maka lanjutkan ke algoritma berikutnya. Jika tidak, maka keluar dan lanjutkan algoritma ke poin 4. vi. bTemp1 = False. vii. nTemp2 = nIndex. viii. Cek apakah posisi sudah pernah dilalui sebelumnya. Selama nTemp2 > -1 dan bTemp1 = False, maka: 1) bTemp1 = (Ant(nTemp2).X = PosTemp.X And Ant(nTemp2).Y = PosTemp.Y). 2) nTemp2 = Ant(nTemp2).Sebelum. ix. Jika bTemp1 = False (posisi belum pernah dilewati), maka lanjutkan ke algorimta berikutnya. Jika tidak, maka maka keluar dan lanjutkan algoritma ke poin 4. 42 x. Bentuk sebuah posisi baru dengan menambah jumlah array variabel ‘Ant’ dengan 1 dan set propertinya sebagai berikut: 1) .X = PosTemp.X. 2) .Y = PosTemp.Y. 3) .StepX = PosTemp.StepX. 4) .StepY = PosTemp.StepY. 5) .Gerakan = “X,-”. 6) .Sebelum = nIndex 7) .Tujuan = (PosTemp.X = PosisiTujuan.X And PosTemp.Y = PosisiTujuan.Y). 8) Jika .Tujuan = True maka nPeny = nPeny + 1. 4. Ambil semua posisi yang merupakan posisi tujuan. a. Untuk nTemp1 = 0 sampai jumlah array pada variabel ‘Ant’, lakukan perulangan pada algoritma poin b. b. Jika Ant(nTemp1).Tujuan = True, maka tambahkan jumlah array variabel 'X' dengan 1 dan lakukan algoritma berikut. i. nIndex = -1. ii. nTemp2 = nTemp1. iii. Selama nTemp2 >= 0, maka set nIndex = nIndex + 1, tambah variabel array 'Step' pada properti variabel 'Ant' dengan 1, set .Step(nIndex) = Ant(nTemp2).Sebelum. Ant(nTemp2) dan nTemp2 = 43 5. Ambil semua langkah-langkah penyelesaian: a. Untuk nTemp1 = 0 sampai jumlah array pada variabel ‘X’, lakukan perulangan pada algoritma poin b. b. Jika Ant(nTemp1).Tujuan = True, maka sesuaikan jumlah array variabel SolusiPeny(nTemp1).Step dengan jumlah array Step pada variabel ‘X’. c. Untuk nTemp2 SolusiPeny(nTemp1). = 0 sampai Step(nTemp2) SolusiPeny(nTemp1), = set X(nTemp1) .Step(UBound(SolusiPeny(nTemp1).Step) - nTemp2). Contoh struktur pohon pelacakan yang dikembangkan berdasarkan metode pencarian BFS dapat dilihat pada gambar 4.1. Gambar 4.1 Contoh struktur pohon pelacakan dengan metode BFS Dari solusi-solusi yang ditemukan, terdapat solusi yang optimum. Dalam implementasinya, solusi optimum merupakan langkah penyelesaian terpendek (shortest path) yang ditemukan dengan menggunakan pohon pelacakan. Dalam kasus pergerakan semut, solusi paling optimum (pergerakan terpendek tanpa halangan) dapat ditentukan kriterianya. Misalkan, apabila posisi awal semut adalah (x1, y1) dan posisi tujuan semut adalah (x2, y2) maka solusi paling optimum (langkah terpendek) menuju posisi tujuan dapat dihitung dengan rumus: (abs(x2 – 44 x1), abs(y2 – y1)). Ini artinya, pergerakan sepanjang sumbu x (horizontal) adalah sebesar abs(x2 – x1) langkah dan pergerakan sepanjang sumbu y (vertikal) adalah sebesar abs(y2 – y1). Misalkan posisi awal semut adalah (-1, -2) dan posisi tujuan semut adalah (4, 5), maka solusi yang paling optimum adalah solusi yang memiliki kriteria sebagai berikut. 1. Pergerakan sepanjang sumbu x (horizontal) adalah abs(4 - (- 1)) = 5 langkah. 2. Pergerakan sepanjang sumbu y (vertikal) adalah abs(5 - (- 2)) = 7 langkah. Kriteria solusi paling optimum dapat dilihat pada gambar 4.2 berikut. Gambar 4.2 Kriteria solusi paling optimum 45 Gambar 4.3 Langkah-langkah solusi paling optimum terhalang oleh rintangan Namun apabila, terdapat halangan pada pergerakan semut yang menyebabkan semua solusi paling optimum tidak dapat dilewati, seperti ditunjukkan oleh gambar 4.3, maka kriteria untuk solusi optimum tersebut tidak berlaku. Oleh karena itu, solusi optimum adalah solusi terpendek yang ditemukan oleh pohon pelacakan dan tidak ada kriteria yang dapat merumuskan bahwa suatu solusi merupakan solusi yang paling optimum. Di dalam perangkat lunak, untuk mencari atau mendapatkan solusi yang paling optimum, maka pergerakan maksimum semut dibatasi dengan rumus di atas dan tidak terdapat halangan yang membatasi semua pergerakan semut yang ada. Agar lebih jelas, perhatikan contoh dari permasalahan berikut. a. Posisi awal semut: (2,1). b. Posisi tujuan semut: (5,5). 46 c. Pergerakan maksimum semut, x = 6 dan y = 6. d. Posisi rintangan, yaitu: i. Rintangan-1: (2,3). ii. Rintangan-2: (4,3). iii. Rintangan-3: (3,5). e. Semua kuadran boleh dilalui oleh semut. f. Solusi paling optimum adalah solusi yang memiliki kriteria berikut: i. Pergerakan sepanjang sumbu x = abs(5 – 2) = 3. ii. Pergerakan sepanjang sumbu y = abs(5 – 1) = 4. Maka sesuai dengan metode pencarian yang digunakan dan ketentuan yang berlaku, terdapat 306 buah solusi. Contoh dua solusi paling optimum dapat dilihat pada gambar 4.4 dan gambar 4.5 berikut. Gambar 4.4 Solusi paling optimum-1 47 Gambar 4.5 Solusi paling optimum-2 Solusi pada gambar 4.4 dan gambar 4.5 merupakan solusi paling optimum karena merupakan solusi dengan pergerakan terpendek (shortest path) dan memenuhi kriteria rumus solusi paling optimum, yaitu mempunyai pergerakan sumbu x sebanyak 3 langkah dan sumbu y sebanyak 4 langkah. Contoh dua solusi tidak optimum dapat dilihat pada gambar 4.6 dan gambar 4.7 berikut. Gambar 4.6 Solusi tidak optimum-1 48 Gambar 4.7 Solusi tidak optimum-2 Solusi pada gambar 4.6 dan gambar 4.7 bukan merupakan solusi optimum karena bukan merupakan langkah terpendek (shortest path). Solusi pada gambar 4.6 memiliki 9 pergerakan sedangkan solusi pada gambar 4.7 memiliki 11 pergerakan. 4.2. Perancangan Perangkat lunak ini dirancang dengan menggunakan bahasa pemrograman Microsoft Visual Basic.NET 2010 dengan beberapa komponen standar seperti: 1. Picture Box, sebagai komponen untuk menampilkan gambar. 2. Button, sebagai tombol. 3. Text Box, sebagai tempat input. 4. Label, sebagai komponen untuk menampilkan informasi. 5. List Box, sebagai komponen untuk menampilkan list data. 6. Check box, sebagai komponen untuk memilih. Perangkat lunak ini memiliki 6 (enam) buah form, yaitu: 1. Form Login. 2. Form Main. 49 3. Form Bermain. 4. Form User. 5. Form High Score. 6. Form Mengenai. 4.2.1 Form Login Form ini berfungsi sebagai tempat pengisian data nama user dan password agar dapat menggunakan permainan. Rancangan tampilan form Login dapat dilihat pada gambar 4.8. Gambar 4.8 Rancangan Form Login Keterangan: 1 : textbox ’Nama User’, yang digunakan sebagai tempat pengisian nama user. 2 : textbox ’Kata Sandi’, yang digunakan sebagai tempat pengisian kata sandi user. 3 : tombol ’OK’, untuk mengecek data nama user dan kata sandi yang 50 dimasukkan. Apabila data user valid, maka sistem akan menampilkan form Awal. 4 : tombol ’Batal’, untuk menutup form. 4.2.2 Form Main Form Main merupakan form utama atau form inti dari perangkat lunak. Pada form terdapat beberapa link yang dapat digunakan untuk mengakses semua form yang terdapat pada perangkat lunak. Rancangan tampilan dari form main ini dapat dilihat pada gambar 4.9. 1 2 Nama Pemain X Aplikasi Permainan Semut Mecari Permen Dengan Metode Search Tree Pilih Pemain 3 Permainan 4 Skor Tertinggi Mengenai Pembuat 5 6 Gambar 4.9 Rancangan Form Main Keterangan : 1 : label ‘Nama Pemain’ yang berfungsi untuk menampilkan nama pemain yang dipilih. 2 : picturebox ‘X’ yang berfungsi untuk menutup perangkat lunak. 3 : link label ‘Nama Pemain’ yang berfungsi untuk menampilkan form ‘Pilih 51 Pemain’. 4 : link label ‘Permainan’ yang berfungsi untuk menampilkan form ‘Permainan’. 5 : link label ‘Daftar Skor Tertinggi’ yang berfungsi untuk menampilkan form ‘Skor Tertinggi’. 6 : link label ‘Mengenai Pembuat’ yang berfungsi untuk menampilkan form ‘Mengenai Pembuat’. 4.2.3 Form Bermain Form bermain berfungsi sebagai tempat bermain ‘Permainan Semut Mencari Permen’. Rancangan tampilan dari form bermain ini dapat dilihat pada gambar 4.10. Gambar 4.10 Rancangan Form Bermain Keterangan : 1 : label yang merupakan daerah tampilan nilai yang diperoleh pemain. 2 : label yang merupakan daerah tampilan sisa waktu untuk bermain. 52 3 : label yang merupakan daerah tampilan jumlah langkah yang telah dilalui. 4 : daerah permainan. 5 : label yang merupakan daerah tampilan level permainan. 6 : tombol ‘Keluar’, untuk menutup form ‘Bermain’ dan kembali ke form ‘Main’. 4.2.4 Form User Form ini berfungsi sebagai tempat pemilihan nama pemain yang akan bermain kuis. Nama pemain ini akan diperlukan pada saat penyimpanan daftar nilai tertinggi yang diperoleh pemain ke dalam database. Selain itu, pada form ini juga disediakan fasilitas untuk menambah nama pemain baru. Rancangan tampilan dari form Pilihan Pemain ini dapat dilihat pada gambar 4.11. Gambar 4.11 Rancangan Form Pilihan Pemain Keterangan : 1 : listbox ‘Nama Pemain’ berfungsi untuk menampilkan daftar nama pemain yang tersimpan dalam database. 2 : tombol ‘Tambah’ yang berfungsi untuk menambah nama pemain baru. 3 : tombol ‘Pilih’ yang berfungsi untuk menyimpan nama pemain yang dipilih ke dalam memori sementara, sehingga dapat digunakan pada form ‘Bermain’. 53 4 : tombol ‘Hapus’ yang berfungsi untuk menghapus nama pemain yang dipilih. 5 : tombol ‘Batal’ yang berfungsi untuk menutup form dan kembali ke form Main. 4.2.5 Form Skor Tertinggi Form ini berfungsi untuk menampilkan sepuluh nilai tertinggi yang diperoleh pemain. Rancangan tampilan dari form ‘Skor Tertinggi’ ini dapat dilihat pada gambar 4.12. Gambar 4.12 Rancangan Form Skor Tertinggi Keterangan: 1. Tabel sepuluh nilai tertinggi. 2. Tombol ‘Hapus’, diklik apabila ingin mengosongkan atau menghapus daftar sepuluh nilai tertinggi yang tersimpan pada database. 3. Tombol ‘Keluar’, diklik apabila ingin menutup form dan kembali ke form ‘Utama’. 54 4.2.6 Form Mengenai Pembuat Form ini berfungsi untuk menampilkan data pribadi dari pembuat perangkat lunak (programmer). Rancangan tampilan dari form ‘Mengenai Pembuat’ ini dapat dilihat pada gambar 4.13. 2 1 3 Tutup Form 4 Gambar 4.13 Rancangan Form Mengenai Pembuat Keterangan : 1 : picturebox yang merupakan gambar icon software. 2 : label yang berisi judul skripsi. 3 : label yang berisi nama dan nim programmer. 4 : tombol ‘Tutup Form’, untuk menutup form ‘Mengenai Pembuat’ dan kembali ke form ‘Main’. BAB V HASIL DAN PEMBAHASAN 5.1. Hasil Untuk menjalankan aplikasi ‘Permainan Semut Mencari Permen’ dengan menggunakan metode search tree, maka dapat mengklik file ‘Ant Seeking Candy.exe’ sehingga sistem akan menampilkan tampilan awal pada gambar 5.1 berikut. Gambar 5.1 Tampilan Login Pada tampilan login, user diminta untuk mengisikan nama pemain dan kata sandi yang valid agar dapat menggunakan permainan sehingga sistem akan menampilkan tampilan awal pada gambar 5.2 berikut. 59 60 Gambar 5.2 Tampilan Awal Untuk bermain ‘Permainan Semut Mencari Permen’, maka pertama kali harus memilih nama ‘Pemain’ terlebih dahulu dengan mengklik link ‘Pilih Pemain’, sehingga sistem akan menampilkan form Nama Pemain pada gambar 5.3 berikut. Gambar 5.3 Tampilan Nama Pemain 61 Pemain dapat mengisi nama pemain baru dan mengklik tombol ‘OK’ untuk menyimpan data nama pemain ke dalam database. Untuk memilih nama pemain, maka pemain dapat memilih pada daftar nama dan mengklik tombol ‘Pilih’ sehingga sistem akan menyimpan nama pemain yang dipilih ke dalam memori sementara dan menutup form Pilih pemain serta kembali ke tampilan awal. Untuk menambah pemain baru, maka pemain dapat mengklik tombol ‘Tambah’ sehingga sistem akan menampilkan input box tambah pemain seperti terlihat pada gambar 5.4 berikut. Gambar 5.4 Tampilan Tambah Pemain Setelah itu, pemain dapat bermain ‘Permainan Semut Mencari Permen’ dengan mengklik link ‘Permainan’, sehingga sistem akan menampilkan form permainan pada gambar 5.5 berikut. 62 Gambar 5.5 Tampilan Permainan Pemain dapat menggeser semut ke kiri, ke kanan, ke atas dan ke bawah dengan menekan tombol ‘A’ untuk bergeser ke kiri, ‘D’ untuk bergeser ke kanan, ‘W’ untuk bergeser ke atas dan ‘S’ untuk bergeser ke bawah. Pemain harus menyelesaikan permainan dalam waktu 20 detik, yaitu menggerakkan semut menuju ke permen berbentuk hati berwarna biru. Apabila pemain berhasil menggerakkan semut mencapai posisi permen maka pemain akan memenangkan level yang bersangkutan dan permen akan 63 dilanjutkan ke level berikutnya. Tampilan form ketika pemain berhasil memenangkan permainan dapat dilihat pada gambar 5.6. Gambar 5.6 Tampilan Permainan Ketika Berhasil Memenangkan Permainan Apabila pemain tidak berhasil menggerakkan semut menuju ke permen dalam batasan waktu yang ditentukan maka permainan berakhir. Sistem akan menampilkan pesan pemberitahuan seperti terlihat pada gambar 5.7 berikut. 64 Gambar 5.7 Tampilan Pesan Pemberitahuan Bahwa Permainan Berakhir Apabila permainan berakhir ataupun pemain mengakhiri permainan, maka sistem akan menampilkan form ‘Skor Tertinggi’ seperti terlihat pada gambar 5.8 berikut. Gambar 5.8 Tampilan Skor Tertinggi Terakhir, pemain dapat menampilkan informasi mengenai pembuat perangkat lunak dengan mengklik link ‘Mengenai Pembuat’ sehingga sistem akan menampilkan form mengenai seperti terlihat pada gambar 5.9 berikut. 65 Gambar 5.9 Tampilan Mengenai Pembuat 5.2. Pembahasan Beberapa informasi yang dapat diperoleh dari perangkat lunak, yaitu: 1. Metode search tree dapat digunakan untuk mengecek solusi persoalan lintasan yang mungkin dari titik awal ke titik tujuan. 2. Aplikasi menyediakan sebuah interface untuk bermain ‘Permainan Semut Mencari Permen’ pada sebuah komputer. Sedangkan, kelemahan dari ‘Permainan Semut Mencari Permen’ dengan menggunakan metode search tree ini yaitu: 1. Perangkat lunak tidak dapat dimainkan pada jaringan komputer ataupun internet. 2. Perangkat lunak tidak menyediakan fasilitas save dan perancangan tempat bermain (board), sehingga user tidak dapat merancang board yang diinginkan dan tidak dapat menyimpan data game terakhir. 66 3. Perangkat lunak tidak menyediakan multimedia seperti menambahkan efek animasi. 4. Kualitas animasi pergerakan semut masih kurang bagus / menarik. BAB VI KESIMPULAN DAN SARAN 6.1.Kesimpulan Berdasarkan hasil penelitian, penulis dapat mengambil beberapa kesimpulan berikut: 3. Aplikasi menyediakan sebuah interface untuk bermain ‘Permainan Semut Mencari Permen’ pada sebuah komputer. 4. Metode search tree dapat digunakan untuk mengecek solusi persoalan lintasan yang mungkin dari titik awal ke titik tujuan. 6.2.Saran Penulis ingin memberikan beberapa saran sehubungan dengan pengembangan perangkat lunak, seperti: 5. Perangkat lunak dapat dikembangkan dengan merancang permainan agar dapat dimainkan pada jaringan komputer ataupun internet. 6. Perangkat lunak dapat dikembangkan menjadi perangkat lunak berbasis multimedia dengan menambahkan efek animasi. 7. Dipertimbangkan untuk menambahkan metode pencarian lain yang terdapat dalam ilmu AI. 8. Kualitas animasi pergerakan semut dapat ditingkatkan dengan menggunakan aplikasi adobe flash. 9. Perangkat lunak dapat dikembangkan dengan fasilitas perancangan board dan save. 67 DAFTAR PUSTAKA Desiani, A., & Arhami, M., 2006, Konsep Kecerdasan Buatan, Penerbit Andi, Yogyakarta. Kristanto, A., 2004, Kecerdasan Buatan, Edisi Pertama, Penerbit Graha Ilmu, Yogyakarta. Kusumadewi, S., 2003, Artificial Intelligence (Teknik dan Aplikasinya), Edisi Pertama, Penerbit Graha Ilmu, Yogyakarta. Sandi, S., 2008, Aritificial Intelegencia, Penerbit Andi, Yogyakarta. Siswanto, 2010, Kecerdasan Tiruan, Edisi Kedua, Penerbit Graha Ilmu, Yogyakarta. Suparman & Marlan, 2007, Komputer Masa Depan, Penerbit Andi, Yogyakarta. Sutojo, T., Mulyanto, E., & Suhartono, V., 2011, Kecerdasan Buatan, Penerbit Andi, Yogyakarta. Suyanto, 2011, Artificial Intelligence, Penerbit Informatika Bandung, Bandung. http://duniainformatikaindonesia.blogspot.com/2013/03/pencarian-lintasan-padabidang-kartesian.html http://duniainformatikaindonesia.blogspot.com/2013/03/problema-state-spaceand-search-masalah.html