Implementasi Algoritma A* dalam Sistem Pendeteksi Kerusakan Hardware Komputer Drs. Eka Fitrajaya Rahman, M.T Program Ilmu Komputer Universitas Pendidikan Indonesia Jl. Dr. Setiabudi 229 Bandung efitrajaya@yahoo.com Eddy Prasetyo Nugroho, M.T Program Ilmu Komputer Universitas Pendidikan Indonesia Jl. Dr. Setiabudi 229 Bandung eddypn@upi.edu Abstrak Permasalahan sehari-hari yang sering dialami oleh kebanyakan orang mengenai komputer adalah seringnya hardware komputer mengalami kerusakan. Tidak banyak ahli yang bisa langsung ditemui untuk memperbaiki kerusakan tersebut. Untuk itu munculah sistem pakar. Suatu sistem yang mampu menggantikan peran pakar sementara untuk menangani suatu masalah. Pembangunan sistem pakar ini terdiri atas dua komponen utama, yaitu knowledge base dan inference engine. Pada knowledge base disimpan pengetahuan-pengetahuan dalam penyelesaian masalah. Terdapat dua bentuk pendekatan knowledge base, yaitu rulebased dan case-based. Untuk pembangunan sistem pakar ini digunakan rule-based, yang berarti pengetahuan disimpan dalam bentuk aturan. Pada inference engine terdapat beberapa algoritma pencarian yang dapat digunakan untuk menghasilkan output, salah satu diantaranya adalah algoritma A*. Diawali dengan mendefinisikan initial state (gejala kerusakan) dan goal state, selanjutnya sistem akan mendiagnosa gejala kerusakan untuk kemudian memberikan penyebab beserta solusinya, jika solusi tersebut terdapat dalam sistem. Adapun hasil dari algoritma A* dalam sistem pendeteksi kerusakan hardware komputer ini memiliki tingkat keberhasilan sebesar 82% dan tingkat ketidaksesuaian dalam menemukan penyebab dengan nilai evaluai terkecil adalah sebesar 18%. Dengan algoritma A* dalam sistem pendeteksi kerusakan hardware komputer ini sistem di harapkan mampu menghasilkan solusi yang optimal. Kania Zakiah Program Ilmu Komputer Universitas Pendidikan Indonesia Jl. Dr. Setiabudi 229 Bandung kaniaslash@yahoo.com Masalah ini menjadi alasan tersendiri bagi penulis untuk dapat membuat sebuah perangkat lunak yang mampu mendeteksi kerusakan pada hardware komputer dan juga mampu untuk menggantikan para ahli, Perangkat lunak tersebut seringkali disebut sebagai sistem pakar. Sistem pakar ini termasuk salah satu bagian dari kecerdasan buatan. Dalam Kecerdasan Buatan (Artificial Intelligence), terdapat konsep yang diterapkan pada komputer, yaitu Basis Pengetahuan (Knowledge Base) dan Mesin Inferensi (Inference Engine). Dalam Knowledge Base, disimpan faktafakta, teori, pemikiran dan hubungan antara satu dengan lainnya[8]. Inference engine atau mesin inferensi adalah program komputer yang memberikan metodologi untuk penalaran tentang informasi yang ada dalam basis pengetahuan dan dalam workplace untuk memformulasikan kesimpulan[2]. 2. Basis Pengetahuan (Knowledge Base) Basis pengetahuan berisi pengetahuan-pengetahuan dalam penyelesaianaian masalah dalam domain tertentu[8]. Basis pengetahuan ini menyimpan pengetahuan dari masalah tertentu untuk diselesaikan. Bagian ini memuat fakta yang menjelaskan area masalah dan juga teknik menerangkan masalah yang menjelaskan bagaimana berbagai fakta tersebut cocok satu dengan yang lainnya. Basis pengetahuan dapat ditambah atau diganti sesuai dengan bidang yang diinginkan pemakai[2]. Kategori dan Deskripsi Subjek Ketentuan Umum Kata Kunci 2.1 Representasi Pengetahuan Dalam basis pengetahuan ini disimpan aturan-aturan suatu domain pengetahuan tertentu. Pada domain masalah kerusakan hardware komputer ini, penulis telah menentukan aturanaturan (rule) yang digunakan dalam sistem pendeteksi kerusakan hardware komputer. Dari daftar gejala dan penyebab tersebut, didapat aturan-aturan sebagai berikut: Sistem pakar, algoritma A*, pencarian heuristic. 1. Pendahuluan Berkembangnya penggunaan komputer hari ini dirasa sangat pesat dan sangat bermanfaat untuk kelangsungan kehidupan manusia. Banyak pekerjaan manusia yang dapat diselesaikan oleh komputer, sehingga komputer menjadi bagian yang tidak dapat dipisahkan dari kehidupan sehari-hari. Tabel 1. Aturan Domain Masalah Kerusakan Hardware Komputer Rule Perkembangan yang terjadi pada komputer bukan tanpa sebab. Dengan semakin banyaknya pengguna komputer, maka perkembangan hardware komputer dituntut untuk terus berevolusi. Namun seiring pesatnya penggunaan komputer dan berkembangnya hardware komputer tentu tidak terlepas dari masalah yang tidak terduga yang harus dihadapi oleh penggunanya. Kerusakan hardware komputer merupakan masalah yang muncul akibat dari penggunaan komputer tersebut. Sementara itu, terbatasnya ahli yang mampu menangani masalah ini sangat terbatas. Diperlukan suatu perkembangan teknologi yang mampu mengatasi masalah seperti ini. 1 If Then 1. A1 B3 2. A1 OR A21 OR A45 B1 3. A7 B2 4. A2 OR A17 B4 5. A2 B5 6. A3 B53 7. A3 B7 8. A19 AND A20 OR A21 OR A45 OR A46 B9 9. A5 AND A8 OR A46 OR A45 B10 10. A6 OR A7 OR A14 B11 60. A46 B65 11. A12 AND A13 B18 61. A46 B66 12. A8 OR A9 OR A11 B16 62. A47 OR A49 B67 13. A10 B44 63. A47 B68 14. A11 B13 64. A48 B69 15. A11 B14 65. A48 B70 16. A11 B15 66. A48 B71 17. A11 B17 67. A49 B72 18. A15 B19 68. A49 B73 19. A16 B20 69. A50 B74 20. A16 B45 70. A51 B58 21. A17 B21 22. A17 B22 23. A18 B23 24. A18 B24 25. A21 B26 26. A22 OR A47 B27 27. A23 OR A24 B28 28. A24 B29 29. A25 OR A26 B30 30. A26 B31 31. A26 OR A42 B32 32. A26 OR A42 B33 33. A27 AND A29 OR A44 B37 34. A28 B35 35. A30 B36 36. A31 OR 32 B43 37. A36 B46 38. A32 B40 39. A33 OR A31 B38 40. A33 B41 41. A34 B47 42. A34 B48 43. A34 B39 44. A35 OR A46 B8 45. A35 OR A46 B12 46. A37 B49 47. A37 B50 48. A37 B51 49. A37 B52 50. A38 B53 51. A38 B54 52. A39 B55 53. A41 B57 54. A43 B59 55. A46 B60 56. A46 B61 57. A46 B62 58. A46 B63 59. A46 B64 3. Inference Engine Inference engine adalah kemampuan untuk menarik kesimpulan berdasarkan pengalaman[2]. Terdapat dua teknik inferensi yang umum digunakan, yaitu forward chaining dan backward chaining. Forward chaining adalah penalaran yang dimulai dari fakta-fakta yang ada untuk kemudian mendapatkan kesimpulan. Sedangkan penalaran backward chaining adalah penalaran yang dengan sekumpulan hipotesa menuju berbagai fakta yang mendukung hipotesa tersebut. Pada inference engine ini juga digunakan teknik pencarian, yaitu dengan mengimplementasikan algoritma A*. Penggunaan algoritma ini adalah untuk mencari penyebab dari kerusakan hardware komputer dengan nilai evalusi paling kecil diantara kemungkinan-kemungkinan penyebab lainnya. 4. Algoritma A*(A-Star) Algoritma A* merupakan algoritma perbaikan dari metode best-first search dengan memodifikasi fungsi heuristiknya. A* akan meminimumkan total biaya lintasan. Cara kerja algoritma A* adalah dengan memperhitungkan cost dari current state ke tujuan dan juga mempertimbangkan cost yang telah ditempuh selama ini dari initial state ke current state. Jadi bila jalan yang sudah ditempuh sudah terlalu panjang dan ada jalan lain yang lebih kecil cost-nya namun memberikan posisi yang sama dilihat dari goal, jalan baru yang lebih pendek itulah yang akan dipilih. Algoritma A* ini menggunakan dua senarai: OPEN dan CLOSED. Terdapat tiga kondisi bagi setiap suksesor yang dibangkitkan, yaitu: sudah berada di OPEN, sudah berada di CLOSED dan tidak berada di OPEN maupun CLOSED. Pada ketiga kondisi tersebut diberikan penanganan yang berbedabeda. Jika suksesor sudah pernah berada di OPEN, maka dilakukan pengecekan apakah perlu pengubahan parent atau tidak tergantung pada nilai g-nya memalui parent lama atau parent baru. Jika melalui parent baru memberikan g yang lebih kecil, maka dilakukan pengubahan parent. Jika pengubahan parent dilakukan, maka lakukan pula perbaruan (update) nilai g dan f pada suksesor tersebut. Dengan perbaruan ini, suksesor tersebut memiliki kesempatan yang lebih besar untuk terpilih sebagai simpul terbaik (best node). Jika suksesor sudah pernah berada di CLOSED, maka dilakukan pengecekan apakah perlu pengubahan parent atau tidak. Jika ya, maka dilakukan perbaruan nilai g dan f pada suksesor tersebut serta pada semua “anak cucunya” yang sudah pernah berada di OPEN. Dengan perbaruan ini, maka semua anak cucunya tersebut memiliki kesempatan lebih besar untuk terpilih sebagai simpul terbaik. 2 Data gejala yang dirandom Jika suksesor tidak berada di OPEN maupun di CLOSED, maka suksesor tersebut dimasukkan ke dalam OPEN. Tambahkan suksesor tersebut sebagai suksesornya best node. Hitung biaya suksesor tersebut dengan rumus f = g(n) + h(n). A6 A7 A8 A35 A37 A38 A39 A45 A46 Tanyakan gejalagejala tersebut, jika jawabannya “ya” maka g=1, else g=2 Evaluasi nilai f tiap gejala Ambil gejala dengan nilai f terkecil Set shortrute Penyebab, solusi, penejelasan, grafik kerusakan Gambar 1. Skema Pencarian Penyebab beserta Solusinya Gambar diatas menjelaskan mengenai input-output sistem. Adapun secara umum skema pencarian penyebab beserta solusi terbagi menjadi 3 bagian, yaitu input, proses dan output: Input: berupa gejala yang telah diacak menggunakan LCG. Input dalam proses pencarian penyebab ini disebut dengan initial state. Proses: menggunakan algoritma A* untuk menemukan penyebab dengan nilai evaluasi terkecil. Output: berupa penyebab beserta solusi (goal state). Setiap penyebab memiliki satu solusi, jadi apabila satu gejala memiliki beberapa penyebab, maka satu gejala tersebut memiliki beberapa solusi. Namun penyebab dengan nilai evaluasi terkecil, yang artinya penyebab tersebut merupakan penyebab “terbaik”, muncul diurutan pertama pada hasil konsultasi. Tabel 2 Bobot tiap Gejala pada Motherboard Nama Gejala Sering terjadi hang Pembacaan data menjadi lambat CMOS failure Tidak bisa booting Suara bip panjang berkali-kali Suara bip bagus tapi tidak ada tampilan Tampilan di layar ada huruf yang berkedip-kedip atau muncul garis Layar blank PC merestart sendiri USB tidak berfungsi Penunjuk waktu yang tidak sesuai Komputer tidak hidup ketika tombol power ditekan Suara bip terus-menerus Motherboard blank Ambil gejala dr database dengan ketentuan hardware yg sama dengan gejala awal Proses gejala dengan Astar 4.1 Pembobotan Gejala Pengaturan bobot-bobot pada setiap gejala merupakan salah satu hal terpenting dalam sistem ini, karena bobot ini memberikan pengaruh pada ketepatan pencarian penyebab beserta solusinya. Pada pengaturan bobot gejala ini, digunakan suatu pen-skala-an yang sesuai dengan jumlah tiap gejala pada masing-masing hardware yang diteliti. Pen-skala-an ini diurutkan berdasarkan tingkat keparahan yang mungkin diakibatkan oleh gejala-gejala tersebut. Untuk seterusnya bobot tiap gejala ini dinotasikan dengan h. Sebagai contoh, motherboard memiliki 14 gejala yang masuk dalam penelitian ini, keempat belas gejala ini akan diurutkan berdasarkan tingkat keparahan yang dimiliki oleh masing-masing gejala. Dengan asumsi semakin kecil bobot suatu gejala, maka tingkat keparahannya semakin besar. Bobot-bobot untuk setiap gejala kerusakan pada motherboard diperlihatkan pada tabel berikut: Id_gejala A1 A2 A3 A4 A5 Gejala awal Bobot 10 8 12 2 5 Terdapat sebuah pohon keadaan seperti yang diperlihatkan pada gambar berikut: 4 7 6 11 13 14 1 3 9 4.2 Langkah – langkah Algoritma A* dalam Pencarian Solusi Kerusakan Hardware Komputer Pada pembangunan sistem ini, notasi fungsi evalusi yang digunakan sama. Namun penggunaannya dalam pencarian penyebab dari gejala kerusakan hardware komputer, masingmasing notasi fungsi ini menjadi: Merah = gejala Hijau = penyebab Biru = Tidak ada Solusi Gambar 2. Pohon Pencarian Penyebab untuk Monitor f = nilai evaluasi dari initial state ke goal state g(n) = nilai satu simpul ke simpul lainnya (berupa jawaban ya atau tidak) h(n) = bobot tiap simpul Dari gambar pohon pencarian diatas, terdapat suatu masalah dengan initial state-nya A13 dan goal state-nya B18. Karena initial state sudah diketahui dan pada tabel aturan diatas terdapat suatu aturan yang diawali dengan A13, maka aturan yang selanjutnya akan dipakai adalah aturan nomor 11, yaitu: IF A13 AND A12 THEN B18 Pohon pencarian diatas memiliki nilai h dan nilai g. Nilai h merupakan tingkat keparahan tiap gejala, sedangkan 3 nilai g merupakan nilai yang didapat dari jawaban pada sistem. Kedua nilai ini akan digunakan untuk menghitung nilai f, dengan mengasumsikan semua nilai h untuk penyebab (B) adalah 0. Nilai h untuk setiap node yang ada pada pohon pencarian tersebut adalah sebagai berikut: Tabel 5. Penelusuran Pencarian Penyebab Kerusakan pada Monitor Simpul yang diekspansi Antrian OPEN {A13(0)} A13 {A14(3), A12(2)} A12 {A15(6), B18(2)} B18 {A15(6), A14(3)} Tabel 3. Nilai h(n) Setiap Gejala pada Kerusakan Monitor A12 A13 A14 A15 B18 n 1 3 2 4 0 h(n) 5. Pembangunan Sistem Pendeteksi Kerusakan Hardware Komputer 5.1 Desain Penelitian Berikut merupakan desain penelitian dari sistem pendeteksi kerusakan hardware komputer : Nilai h(n) pada tabel diatas merupakan nilai tingkat keparahan kerusakan tiap gejala. Sedangkan untuk nilai g(n), penulis memberikan nilai 1 untuk setiap jawaban “Ya” dan 2 untuk setiap jawaban “Tidak”. Tabel status tiap simpul dalam pencarian penyebab kerusakan pada monitor: Data Random Data Penelitian Metode Pengembangan Perangkat Lunak Tabel 4. Status Tiap Simpul dalam Pencarian Penyebab Kerusakan pada Monitor Olah data dengan algortima A* Pembangunan Sistem Analisis Simpul (n) A13 A12 A14 A15 B18 g(n) 0 1 1 2 2 h(n) 3 1 2 4 0 f(n) 3 2 3 6 2 Pembangunan Solusi dari masalah pada data penelitian Langkah-langkah yang ditempuh dalam proses pencarian penyebab adalah: Langkah 1 Perhitungan nilai f-nya: A12 : f = g(A13)+g(A13 ke A12)+h(A12) = 0+1+1 = 2 A14 : f = g(A13)+g(A13 ke A14)+h(A14) = 0+1+2 = 3 Inisialisasi langkah pertama ini adalah A13 sebagai node awal dalam melakukan proses pencarian penyebab . Pada langkah pertama ini, karena di OPEN hanya terdapat satu simpul (yaitu A13), maka A13 terpilih sebagai BestNode dan dipindahkan ke CLOSED. Kemudian dibangkitkan semua suksesor A3, yaitu A12 dan A14. Karena kedua suksesor tidak ada di OPEN maupun CLOSED, maka keduanya dimasukkan ke OPEN. Langkah pertama ini menghasilkan OPEN = [A12, A14] dan CLOSED = [A13]. Dari perhitungan nilai f diatas dapat dilihat bahwa node yang memiliki nilai f paling kecil adalah A12, maka suksesor A12 kemudian dibangkitkan. - Perancangan Rule-rule pencarian solusi Pengoperasian/ Testing Gambar 3. Desain Penelitian 5.2 Model Proses Pembangunan aplikasi sistem pendeteksi kerusakan pada hardware ini menggunakan model proses waterfall. Metode waterfall sering juga disebut dengan model sekuensial linier. Model ini mengusulkan pendekatan kepada masalah perangkat lunak yang sistematik dan sekuensial yang mulai pada tingkat dan kemajuan sistem pada seluruh analisis, desain, kode, pengujian dan pemeliharaan. Pemodelan Sistem informasi Langkah 2 Perhitungan nilai f-nya: A14 : f = g(A13)+g(A13 ke A12)+g(A12 ke A14)+h(A14) = 0+1+1+2=4 A15 : f = g(A13)+g(A13 ke A12)+g(A12 ke A15)+h(A15) = 0+1+1+4=6 B18 : f = g(A13)+g(A13 ke A12)+g(A12 ke B16)+h(B18) = 0+1+1+0 = 2 Langkah kedua, A12 dengan nilai terkecil (yaitu 2) terpilih sebagai BestNode dan dipindahkan ke CLOSED. Selanjutnya, semua suksesor A12 dibangkitkan, yaitu : A14, A15 dan B18. Karena A15 dan B18 belum pernah ada di OPEN maupun CLOSED, maka suksesor A15 dan B18 dimasukkan ke OPEN. Langkah kedua ini menghasilkan OPEN = [A15, B18] dan CLOSED = [A12, A13, A14]. Karena B18 merupakan BestNode dan merupakan node tujuan, maka berakhirlah proses pencarian penyebab untuk gejala A13. Jadi, untuk mendapatkan penyebab dengan biaya lintasan terkecil, rutenya adalah A13-A12-B18. Berikut merupakan alur penelusuran yang dituangkan ke dalam sebuah tabel: analisis desain - mendefinisikan data gejala - mendefinisikan data penyebab - mendefinisikan data solusi - perancangan database - perancangan interface sistem coding - pengimplementasian rancangan database - pengaplikasian rancangan interface - pengimplementasian algoritma A* testing - pengujian fungsi-fungsi sistem - perbaikan kesalahankesalahan pada sistem Gambar 4. Model Proses Waterfall(Pressman, 1997) Gambar di atas merupakan gambar yang merepresentasikan tahapan yang ada pada metode waterfall. Pada model proses ini melingkupi aktivitas-aktivitas sebagai berikut (Pressman, 1997): 1. Rekayasa dan pemodelan sistem informasi: tahap ini merupakan tahap awal dimana sistem akan dibangun. pada rekayasa dan pemodelan sistem, dirumuskan halhal yang akan diimplemetasikan ke dalam sistem, seperti misalnya database, hardware dimana sistem akan djalankan, dan lainnya. Untuk perumusan database, dapat dilihat pada dokumen teknis perangkat lunak (halaman 38). Untuk kebutuhan hardware dijelaskan pada subbab 3.1.1. 2. Analisis: pada tahap ini dilakukan penganalisisan mengenai kebutuhan sistem yang akan dibuat. Baik itu kebutuhan perangkat lunak maupun kebutuhan user. Mengumpulkan sumber-sumber data yang mendukung tercapainya hasil akhir penelitian, menyusun waktu yang 4 3. 4. 5. 6. akan digunakan untuk penelitian dan menguraikan tools yang digunakan dalam pengembangan sistem. Desain: merancang representasi dari aplikasi tersebut. Pada perancangan data, digunakan lima tabel utama dan dua tabel temporary untuk menyimpan data sementara, sedangkan DFD digunakan sebagai tool untuk perekayasaan sistem. Coding: tahap ini adalah tahap pembangunan sistem, yaitu desain yang telah dibuat sebelumnya, baik itu desain data dan desain interface, harus diterjemahkan ke dalam bahasa mesin yang bisa dibaca. Pada pembangunan sistem ini digunakan bahasa pemrograman PHP. Testing: tahap ini adalah tahap terakhir dari model waterfall. Testing diperlukan untuk menguji fungsifungsi dari program agar dapat berjalan sesuai dengan yang diharapkan. Tahap ini menguji tiap modul yang terdapat dalam sistem untuk kemdian diperbaiki jika terdapat suatu kesalahan. Pemeliharaan: tahap pemeliharaan ini adalah tahap yang dilakukan setelah sistem yang sudah dibangun disampaikan kepada user. Ketika sistem digunakan oleh user, tentu terdapat beberapa perubahan yang sesuai dengan kebutuhan user, pada tahap inilah sistem diupgrade untuk mendapatkan sistem yang sesuai dengan kebutuhan user, baik itu berupa penambahan fitur maupun penambahan data. Gambar 6. Proses Pencarian Solusi 3. Dari gambar diatas dapat dilihat terdapat tanda checklist pada pertanyaan, yang artinya “ya”, sehingga nilai g-nya adalah 1. Untuk pertanyaan lain yang tidak muncul dalam sistem tapi masuk ke dalam gejala dari hardware yang bermasalah, maka nilai g-nya adalah 2. Pada database tabel tmp_if_clause akan terdapat beberapa gejala yang terkait dengan gejala awal tadi. Gambar 7. Tabel tmp_if_clause Dari tabel tersebut akan terlihat nilai f terkecil, yaitu A12, yang dipilih sebagai lintasan terpendek pada proses pencarian solusi (B18). Tabel tmp_then_clause akan menunjukkan shortrute dari intial state (A13) ke goal state (B18). Gambar 8. Tabel tmp_then_clause Gambar diatas menunjukkan tabel tmp_then clause yang menyimpan semua lintasan terpendek yang diambil oleh sistem untuk mendapatkan solusi dari permasalahan gejala kerusakan yang telah terdefinisi sebelumnya. 6. Langkah-langkah Pencarian Solusi Pada Program Pada langkah-langkah pencarian solusi dengan menggunakan pohon diatas terlihat bahwa nilai yang diambil adalah nilai yang terkecil. Begitu juga dengan langkah-langkah pencarian solusi pada program. Untuk lebih jelas mengenai langkahlangkah tersebut, dapat dijelaskan pada uraian contoh kasus berikut : 1. Contoh kasus dibawah ini sistem memberikan inputan gejala awal, yaitu indicator on layar gelap (A13). Inputan gejala awal tersebut didapatkan dari fungsi random yang penulis integrasikan dalam sistem. Setelah user meng-klik tombol jawab maka solusi, penjelasan beserta grafik kerusakan hardware komputer yang bermasalah akan muncul. Seperti terlihat pada gambar dibawah ini : Gambar 5. Penentuan Gejala Awal Pada Sistem 2. Setelah gejala awal diberikan oleh sistem, user meng-klik “ok” dan kemudian sistem akan memberikan pertanyaan untuk dijawab. Gambar 9. Hasil Diagnosa Kerusakan Dari gambar diatas terlihat beberapa solusi yang muncul untuk mengatasi permasalahan kerusakan komponen hardware komputer. Solusi-solusi tersebut merupakan solusi alternatif selain solusi utama yang muncul di urutan pertama. 5 [9]Law, Averill M.(2007).Simulation Modeling and Analysis.McGraw International. [10]Nazaruddin, Ramdani.(2005).Komputer dan Troubleshooting.Bandung: Informatika. [11]Nugroho, Bunafit.(2008).Membuat Aplikasi Sistem Pakar dengan PHP dan Editor Dreamweaver.Yogakarta: Gava Media. [12]Path_Finding_Tutorial.htm. ___________tanggal akses, 23 mei 2010. Tersedia http://wiki.gamegardens.com/Path_Finding_Tutorial#Decision _making [13]Pressman, RS.(2002). Rekayasa Perangkat Lunak Pendekatan Praktisi.Yogyakarta: ANDI. [14]Rasim.(2008). Modul kuliah Manajemen Proyek Perangkat Lunak.Program Studi Ilmu Komputer.Universitas Pendidikan Indonesia: Bandung. [15]ST, Suyanto.(2007).Artificial Intelligence (Searching, Reasoning, Planning and Learning).Bandung: Informatika. [16]Wedjo, SS.(2007). Panduan Praktis Mengatasi Masalah Hardware Komputer.Jakarta: Mediakita. [17]Yani, Ahmad.(2005).Panduan Menjadi Teknisi Komputer.Jakarta: Kawan Pustaka. 7. Daftar Pustaka [1]Aplikasi Pencari Rute Optimum Pada Peta Guna Meningkatkan Efisiensi Waktu Tempuh Pengguna Jalan dengan Metode A* Dan Best First Search. [online]. __________________ tanggal akses, 13 Mei 2009. [2]Arhami, Muhammad.(2005).Konsep Dasar Sistem Pakar.Yogyakarta: ANDI. [3]Betha Sidik, Ir.(2006).Pemrograman Web dengan PHP.Bandung: Informatika. [4]HM, Jogiyanto.(1989).Analisis dan Desain.Yogyakarta: ANDI. [5]Iwan (2005).Pembangunan Sistem Pakar untuk Memecahkan Masalah Hardware Komputer.Skripsi pada Jurusan Teknik Informatika Universitas Widyatama Bandung: Tidak diterbitkan. [6]Kristanto, Andri.(2010).Kupas Tuntas PHP &MySQL.Klaten: Cable Book. [7]Kusrini .(2008).Aplikasi Sistem Pakar.Yogyakarta : ANDI. [8]Kusumadewi, Sri.(2003).Artificial Intelligence (Teknik dan Aplikasinya).Yogyakarta: Graha Ilmu 6