BAB 2
TINJAUAN PUSTAKA
2.1 Algoritma Pencarian
Pencarian adalah suatu proses mencari solusi dari suatu permasalahan melalui sekumpulan kemungkinan ruang keadaan (state space). Ruang keadaan merupakan suatu ruang yang berisi semua keadaan yang mungkin. Dalam ilmu komputer, sebuah algoritma pencarian dijelaskan secara luas merupakan algoritma yang menerima masukan berupa sebuah masalah dan menghasilkan sebuah solusi untuk masalah tersebut, yang biasanya didapat dari evaluasi beberapa kemungkinan solusi. Himpunan semua kemungkinan solusi dari sebuah masalah disebut ruang pencarian. Algortima pencarian brute-force atau pencarian uninformed menggunakan metode yang sederhana dan sangat intuitif pada ruang pencarian, sedangkan algoritma pencarian informed menggunakan heuristik untuk menerapkan pengetahuan tentang struktur dari ruang pencarian untuk berusaha mengurangi banyaknya waktu yang dipakai dalam pencarian (Nilson. J, 1998).
Untuk mengukur performansi metode pencarian, terdapat empat kriteria yang dapat digunakan (Coppin. B, 2004) : 1. Completeness : apakah metode tersebut menjamin penemuan solusi jika solusinya memang ada, 2. Time complexity : berapa lama waktu yang diperlukan, 3. Space complexity : berapa banyak memori yang diperlukan, 4. Optimality : apakah metode tersebut menjamin menemukan solusi yang terbaik jika terdapat beberapa solusi berbeda.
Universitas Sumatera Utara
7
2.1.1 Algoritma Pencarian Mendalam Pertama (Depth First Search)
Salah satu algoritma yang dapat dipakai untuk mempermudah pencarian area bebas ranjau pada pembuatan simulasi game minesweeper adalah algoritma depth first search. Selain algoritma depth first search, dalam tulisan ini diperlukan juga algoritma greedy best first search untuk melakukan pencarian pada kotak seleksi ukuran 4 x 4 yang dapat membantu user dalam menyelesaikan permainan ini.
Pencarian dengan algoritma depth first search (DFS) dilakukan dari node awal secara mendalam hingga yang paling akhir (dead-end) atau sampai goal ditemukan. Dengan kata lain, simpul cabang atau anak yang terlebih dahulu dikunjungi. Sebagai ilustrasinya dapat dilihat pada Gambar 2.1. Start
A
C
H
B
D
E
F
G
Gambar 2.1 Pohon Pencarian Mendalam Pertama (Depth First Search)
Berdasarkan Gambar 2.1, proses pencarian dilakukan dengan mengunjungi cabang terlebih dahulu hingga tiba di simpul terakhir. Jika tujuan yang diinginkan belum tercapai maka pencarian dilanjutkan ke cabang sebelumnya, turun ke bawah jika memang masih ada cabangnya. Begitu seterusnya hingga diperoleh tujuan (goal). Operasi semacam ini dikenal dengan sebutan backtracking.
Algoritma DFS
memiliki kelebihan diantaranya adalah cepat mencapai
kedalaman ruang pencarian. Jika diketahui bahwa lintasan solusi permasalahan akan panjang maka DFS tidak akan memboroskan waktu untuk melakukan sejumlah besar keadaan ‘dangkal’ dalam permasalahan graf/pohon. DFS jauh lebih efisien untuk
Universitas Sumatera Utara
8
ruang pencarian dengan banyak cabang karena tidak perlu mengevaluasi semua simpul pada suatu level tertentu pada daftar open. Selain itu, DFS memerlukan memori yang relative kecil karena hanya node-node pada lintasan yang aktif saja yang disimpan.
Selain kelebihan, DFS juga memiliki kelemahan, di antaranya adalah memungkinkan tidak ditemukannya tujuan yang diharapkan dan hanya akan mendapatkan satu solusi pada setiap pencarian.
Pseudo-code algoritma depth first search (Desiani. A dan Arhami. M, 2005) : Procedure depth first search Begin Open:=[start]; Closed:=[ ]; While Open ≠ [ ] do Begin Remove leftmost state from Open, call it X If X is a goal then return SUCCESS Else begin Generate children of X; Put X on closed; Discard children of X is already on Open or Closed; Put remaining children on left end of Open; end; end Return FAIL end.
Untuk memeriksa algoritma di atas, dapat dilihat bahwa keadaan-keadaan turunan (descendant) ditambahkan atau dihapuskan dari ujung kiri open. Aplikasi algoritma tersebut untuk Gambar 2.1 di atas misalnya F diasumsikan sebagai tujuannya, maka langkah-langkah penelususrannya adalah : 1. Open = [Start]; closed=[] 2. Open = [A,B]; closed=[Start] 3. Open = [C,D,B]; closed=[A, Start] 4. Open = [H,G,D,B]; closed=[C,A,Start]
Universitas Sumatera Utara
9
5. Open = [G,D.B]; closed=[H,C,A,Start] 6. Open = [D.B]; closed=[G,H,C,A,Start] 7. Open = [B]; closed=[D,G,H,C,A,Start] 8. Open = [E,F]; closed=[B,D,G,H,C,A,Start] 9. Open = [F]; closed=[E,B,D,G,H,C,A,Start] 10. Open = []; closed=[F,E,B,D,G,H,C,A,Start]
2.1.2 Pencarian Heuristik Heuristic search adalah suatu istilah yang berasal dari bahasa Yunani yang berarti menemukan/menyingkap. Heuristik adalah suatu perbuatan yang membantu kita menemukan jalan dalam pohon pelacakan yang menuntut kita kepada suatu solusi masalah. Heuristik dapat diartikan juga sebagai suatu kaidah yang merupakan metoda/prosedur yang didasarkan kepada pengalaman dan praktek, syarat, trik atau bantuan lainnya yang membantu mempersempit dan memfokuskan proses pelacakan kepada suatu tujuan tertentu.
George Poyla (dalam Kristanto. A, 2003) mendefinisikan heuristik sebagai ”studi tentang sebuah metode dan aturan discovery serta invention” dalam pencarian state space, heuristik didefinisikan sebagai aturan untuk memilih cabang-cabang dalam ruang keadaan yang paling tepat untuk mencapai solusi permasalahan yang dapat diterima.
Pemecahan masalah AI menggunakan heuristik dalam dua situasi dasar (Setiawan. S, 1993), yaitu : 1. Permasalahan yang mungkin tidak mempunyai solusi yang pasti disebabkan oleh ambiguitas (keraguan/ketidakpastian) mendasar dalam pernyataan permasalahan atau data yang tersedia, contohnya diagnosa kedokteran. 2. Permasalahan yang boleh jadi memiliki solusi pasti, tetapi biaya komputasinya untuk mendapatkan solusi tersebut mungkin sangat tinggi. Dalam banyak problema (misalnya saja catur), pertumbuhan state space adalah secara
Universitas Sumatera Utara
10
kombinatorial eksplosif dengan bayak state yang mungkin meningkat secara eksponensial atau faktorial dengan kedalaman pencarian. Dalam hal ini, exhaustive, yakni teknik pencarian brute force seperti pencarian mendalam pertama dan pencarian meluas pertama mungkin gagal menemukan solusi sehingga heuristik akan menangani kerumitan permasalahan ini dengan panduan pencarian pada sepanjang lintasan yang memeberi harapan melewati state. Dengan mengeliminasi state yang tidak memberi harapan dan turunannya dari ruang tersebut maka algoritma heuristik dapat mengalahkan ledakan kombinatorial dan menemukan penyelesaian yang dapat diterima.
Pencarian terbimbing (heuristic search) dibutuhkan karena pencarian buta (blind search) tidak selalu dapat diterapkan dengan baik, hal ini disebabkan waktu aksesnya yang cukup lama serta besarnya memori yang diperlukan. Dalam pencarian ruang keadaan, heuristik dinyatakan sebagai aturan untuk melakukan pemilihan cabang-cabang dalam ruang keadaan yang paling tepat untuk mencapai solusi permasalahan yang dapat diterima.
Heuristik dapat digunakan pada beberapa kondisi berikut ini (Siswanto, 2010): 1. Mengatasi combinatorial explosion. Ada masalah yang kemungkinan arah penyelesaiannya berkembang pesat (bersifat faktorial) sehingga menimbulkan combinatorial explosion. Heuristik 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, tetapi biasanya mendekati optimal. 4. Membantu pemahaman bagi orang yang menyelesaikan persoalan. Banyak alternatif heuristik yang dapat diterapkan dalam suatu percobaan. Orang yang menyelesaikan persoalan tersebut akan lebih mengerti persoalannya jika mencoba heuristik yang diterapkannya.
Universitas Sumatera Utara
11
Salah satu contoh dari heuristik yang baik untuk tujuan umum yang berguna untuk beragam kombinasi permasalahan adalah the nearest neighbour heuristic, yang bekerja dengan cara menyeleksi alternatif yang paling tinggi secara lokal pada setiap langkahnya. Untuk permasalahan perjalanan salesman, prosedur-prosedur yang harus dilakukan adalah sebagai berikut : 1. Memilih sebuah kota awal (starting cities) 2. Melihat kota berikutnya, kemudian melihat semua kota yang belum dikunjungi dan memilih salah satu kota yang paling dekat dengan kota yang dipilih pada saat itu. 3. Ulangi langkah 2 sampai semua kota dikunjungi.
Sebuah fungsi heuristik mengevaluasi keadaan permasalahan tersendiri dan menentukan bagaimana diperlukan fungsi ini dalam memecahkan suatu permasalahan. Sebuah fungsi heuristik adalah sebuah fungsi yang memetakan keadaan permasalahan, yang mendeskripsikan daya tarik dan digambarkan dalam sebuah angka (Pearl, 1984).
Fungsi heuristik yang dirancang dengan baik dapat berperan dalam sebuah bagian yang penting untuk memandu secara efisien proses pencarian menuju ke sebuah solusi. Tabel 2.1 menunjukkan beberapa fungsi heuristik sederhana untuk beberapa permasalahan.
Tabel 2.1 Beberapa Fungsi Heuristik Sederhana Jenis permasalahan
Fungsi heuristik
Catur
Keuntungan material dari sisi yang satu dibandingkan sisi yang lain
Perjalanan salesman
Jumlah jarak selama perjalanan
Tic Tac Toe
1 untuk setiap kolom dimana kita dapat menang dan dimana kita telah mempunyai 1 potong plus 2 untuk setiap kolom dimana kita memiliki 2 potong
Kadang kala sebuah nilai tinggi dari fungsi heuristik mengindikasikan sebuah posisi yang baik secara relatif (terlihat pada catur dan tic tac toe), di lain waktu sebuah nilai rendah mengindikasikan sebuah situasi yang menguntungkan (terlihat pada
Universitas Sumatera Utara
12
perjalanan salesman). Program yang menggunakan nilai (value) dari fungsi dapat mengusahakan minimal atau maksimal secara tepat.
Tujuan dari sebuah fungsi heuristik adalah untuk memandu proses pencarian tujuan yang menguntungkan dengan menganjurkan jalur yang mana yang diikuti pertama kali ketika tersedia lebih dari satu tujuan. Setelah proses berlangsung, akan bisa dihitung sebuah fungsi heuristik yang sempurna dengan cara melakukan sebuah pencarian yang lengkap dari simpul dalam pertanyaan dan menentukan apakah fungsi ini menuju ke sebuah solusi yang baik.
Sayangnya, seperti semua kaidah penemuan lainnya, heuristik juga dapat salah. Heuristik hanyalah panduan informasi untuk menebak langkah berikutnya yang harus diambil dalam menyelesaikan suatu permasalahan, dan sering dilakukan berdasarkan eksperimen/percobaan atau secara intuisi. Oleh karena menggunakan informasi yang terbatas, heuristik jarang dapat memprediksi tingkah laku yang eksak dari ruang keadaan saat dilakukan pencarian. Heuristik dapat membimbing algoritma pencarian untuk mendapatkan solusi suboptimal atau gagal menemukan solusi apapun, karena tidak ada solusi yang dapat menuju keadaan akhir.
Heuristik dan perancangan algoritma untuk mengimplementasikan pencarian heuristik telah menjadi inti permasalahan penelitian AI. Game playing dan pemecahan teorema (theorem solving) adalah dua aplikasi paling tua dari AI, kedua-duanya memerlukan heuristik untuk memangkas ruang dari solusi yang mungkin.
2.1.3 Algoritma Pencarian Terbaik Pertama (Best First Search) Algoritma best first search ini merupakan kombinasi dari algoritma depth first search dengan algoritma breadth first search dengan mengambil kelebihan dari kedua algoritma tersebut. Apabila pada pencarian dengan algoritma hill climbing tidak diperbolehkan untuk kembali ke node pada level yang lebih rendah meskipun node di level yang lebih rendah tersebut memiliki nilai heuristik yang lebih baik, lain halnya pada algoritma best first search, pencarian diperbolehkan mengunjungi node yang ada
Universitas Sumatera Utara
13
di level yang lebih rendah, jika ternyata node di level yang lebih tinggi memiliki nilai heuristik yang lebih buruk (Kusumadewi, 2003).
Algoritma best first search merupakan salah satu bagian dari tipe informed search. Algoritma ini menggunakan nilai-nilai heuristik tiap simpul yang dibuka. Simpul dengan nilai heuristik terbaik akan dibuka lebih dahulu. Bila goal state belum ditemukan, akan dilakukan pemeriksaan pada simpul berikutnya dengan nilai heuristik terbaik pada kedalaman yang sama. Simpul tersebut kemudian dibuka dan diperiksa apakah terdapat goal state pada cabang-cabangnya. Bila goal state belum ditemukan, akan dilakukan proses yang sama pada simpul berikutnya.
Berikut ini adalah pseudo-code algoritma best first Search : Procedure Best First Search Begin Open := [start]; Closed :=[]; While open ≠ [] do Begin Remove the leftmost state from open, Call it X If X = a goal then return the path from start to X Else begin Generate children of X; For each child of X do Case The child is not on open or closed; Begin Assign the child s heuristic value; Add the child to open End; The child is already on open If the child was reached by a shorter path Then give the state on open the shorter path The child is already on closed; If the child was reached by a shorter path Begin Remove the state from closed; Add the child to open End Put X on closed; Reorder state on open by heuristic merit (best left most); Put remaining children on left end of open End; End Return FAIL End.
Universitas Sumatera Utara
14
Pada masing-masing langkah dari proses best first search, algoritma menyeleksi node yang lebih layak untuk dibangkitkan sebagai kandidat solusi lebih jauh, hal ini dilakukan dengan menerapkan fungsi heuristik yang tepat untuk masingmasing permasalahan. Algoritma kemudian memperluas pemilihan node dengan menggunakan rule untuk membangkitkan penggantinya. Bila satu darinya adalah solusi yang diharapkan, maka algoritma keluar, bila tidak maka semua node yang baru ditambahkan pada himpunan node yang dibangkitkan lebih jauh, kemudian dilakukan pemilihan node yang lebih layak untuk dijadikan sebagai kandidat solusi dan dilakukan proses selanjutnya. Biasanya apa yang terjadi adalah sebuah bit dari pencarian yang terdalam dijadikan sebagai cabang yang memungkinkan di eksploitasi, tapi pada akhirnya bila solusi yang diharapkan tidak ditemui, cabang yang akan memulai untuk mencari dimana memiliki kelayakan yang lebih kecil dari satu cabang diatasnya akan dihindari. Pada kondisi seperti ini titik yang lebih layak yang sebelumnya dihindari akan dieksploitasikan tetapi cabang yang sebelumnya akan disimpan dalam himpunan node yang dibangkitkan akan tetapi merupakan node yang tidak dieksploitasi. Pencarian dapat kembali pada node kapan saja ketika semua node yang diperoleh tidak lebih layak dari sebelumnya. Langkah 1
A
Langkah 3
Langkah 2
A
A B (3) C (5) D (1)
B (3) C (5) D E (4) F (6)
Langkah 4
Langkah 5
A B
C (5) D
G (6) H (5) E (4) F (6)
A B
C (5) D
G (6) H (5) E
F
G (2) H (1) Gambar 2.2 Ilustrasi Algoritma Best First Search
Universitas Sumatera Utara
15
Gambar 2.2 menunjukkan prosedur yang sederhana dari best first search yang diawali dengan hanya satu node yang kemudian dieksploitasi. Langkah yang dijalankan awalnya dengan membangkitkan tiga node baru. Fungsi heuristik yang akan mengestimasi nilai dari solusi yang diambil dari node yang ada, fungsi ini diterapkan pada masing-masing node yang baru. Karena node D adalah node yang lebih layak maka node ini yang akan dieksploitasi selanjutnya dan menghasilkan node penggantinya yaitu E dan F. Tapi kemudian fungsi heuristik diterapkan pada nodenode tersebut. Pada langkah selanjutnya ternyata node B lebih layak untuk deksploitasi dan membangkitkan node G dan H, kemudaian ketika node-node baru tersebut dievaluasi ternyata mereka memiliki kelayakan yang rendah dibandingkan dengan bagian yang lain, dengan memperhatikan kondisi tersebut maka algoritma kembali ke bagian D yang menghasilkan pengganti E yang akan dieksploitasi dan menghasilkan node I dan J. Pada langkah selanjutnya J akan dieksplotitasi karena memiliki kelayakan yang lebih tinggi. Proses ini terus dilanjutkan sampai ditemukan solusi yang diharapkan.
Dalam algoritma ini diperlukan fungsi heuristik yang akan mengestimasi seberapa baik dibangkitkannya setiap node. Fungsi heuristik yang digunakan dalam algoritma ini hanya memperhitungkan biaya(cost) untuk mencapai tujuan dan mengabaikan cost jalan yang sudah ditempuhnya untuk sampai ke current state, sehingga sering disebut sebagai greedy best first search yang dinyatakan dengan :
f(n) = h(n)
(1.1)
dimana : f(n) = fungsi heuristik h(n) = biaya perkiraan(estimated cost) dari jalur terpendek dari current state ke goal state (Arwin, 2006).
Algoritma greedy best first search ini tidak menjamin menemukan rute yang paling pendek, namun algoritma ini bekerja dengan sangat cepat menemukan tujuan (goal) dengan mengembangkan kemungkinan jalan yang mengarah ke tujuan. Masalah utama pada algoritma ini adalah cara kerjanya yang terus mencoba bergerak ke arah goal, meskipun jalan yang dilalauinya bukan jalan yang benar. Karena
Universitas Sumatera Utara
16
algoritma ini hanya memperhitungkan cost untuk mencapai goal dan mengabaikan cost jalan yang sudah ditempuhnya untuk sampai ke current state, maka algoritma tersebut terus maju meskipun jalan yang telah dilaluinya sudah terlalu panjang.
2.2 Analisis Algoritma Algoritma adalah suatu kumpulan terhingga (finite set) dari instruksi yang terdefinisi dengan baik (well-defined instructions) untuk menyelesaikan beberapa pekerjaan dimana diberikan state awal (initial state) dan akan dihentikan pada saat ditemukan state akhir (end-state) yang dikenal. Algoritma dapat diimplementasikan dalam pembuatan program komputer. Kesalahan dalam merancang algoritma untuk menyelesaikan
suatu
problema
dapat
menyebabkan
program
gagal
dalam
implementasinya.
Konsep dari suatu algoritma sering diilustrasikan dengan mengambil contoh sebuah resep, walaupun banyak algoritma yang jauh lebih kompleks. Algoritma sering memiliki beberapa langkah perulangan (iterasi) atau memerlukan pengambilan keputusan seperti logika (logic) atau perbandingan (comparison) sampai pekerjaan diselesaikan. Menerapkan suatu algoritma secara benar belum tentu dapat menyelesaikan problema. Hal ini dikarenakan adanya kemungkinan algoritma tersebut rusak atau cacat, atau penerapannya tidak cocok (tidak tepat) untuk menyelesaikan problema. Sebagai contoh, sebuah algoritma hipotesis untuk membuat sebuah salad kentang akan gagal jika tidak terdapat kentang (Purwanto, 2008).
Algoritma adalah hal yang mendasar untuk komputer dalam memproses informasi, karena sebuah program komputer adalah sebuah algoritma yang memberitahukan kepada komputer langkah-langkah spesifik yang akan dijalankan (dalam urutan spesifik) untuk melakukan pekerjaan tertentu, misalnya menghitung gaji karyawan atau mencetak rapor murid.
Suatu algoritma memiliki kemungkinan terbaik (best case) dan kemungkinan terburuk (worst case). Best Case maksudnya adalah waktu eksekusi tercepat dari
Universitas Sumatera Utara
17
algoritma, sedangkan Worst Case maksudnya adalah waktu eksekusi terlama dari algoritma. Waktu eksekusi dari algoritma ini biasanya disebut dengan kompleksitas algoritma. Kompleksitas algoritma biasanya dinyatakan dengan notasi O (Big-O) (Purbasari, 2007). Suatu algoritma dikatakan memiliki kompleksitas O(n2) berarti bahwa waktu eksekusi terlama dari algoritma tersebut adalah sebesar kuadrat dari banyaknya elemen data yang akan diproses. Semakin kecil kompleksitas suatu algoritma maka algoritma tersebut dikatakan lebih efisien dan efektif. Algoritma semacam inilah yang lebih disukai orang untuk digunakan dalam penyelesaian masalah.
Kompleksitas suatu algoritma dihitung untuk setiap langkah atau instruksi yang dikerjakan. Beberapa ketetapan waktu yang diterapkan : 1.
Operasi pengisian nilai (assignment), perbandingan, operasi aritmatika, read and write, membutuhkan waktu O(1).
2.
Pengaksesan elemen array membutuhkan waktu O(1).
3.
Operasi if-then-else waktu yang diambil adalah waktu yang paling besar diantara 2 kondisi.
4.
Operasi perulangan (for, repeat-until, dan while-do) membutuhkan waktu sebanyak jumlah perulangan dikalikan dengan banyak instruksi dalam perulangan tersebut.
2.3 Kecerdasan Buatan / Artificial Intelligence (AI)
Menurut Desiani dan Arhami (2005) definisi Artificial Intelligence (AI) atau kecerdasan buatan merupakan cabang dari ilmu komputer yang konsern dengan pengautomatisasi tingkah laku. Kecerdasan buatan didefinisikan sebagai disiplin ilmu dimana metode kendali dikembangkan untuk mengemulasikan karakteristikkarakteristik penting dari kecerdasan mnausia. Karakteristik-karakteristik tersebut anatara lain adaptasi dan belajar (adaptation and learning), perencanaan di bawah situasi dengan ketidakpastian tinggi (planning under large uncertainty) dan
Universitas Sumatera Utara
18
kemampuan menangani jumlah data yang amat besar (coping with large amounts of data).
Lebih detilnya, pengertian kecerdasan buatan dapat dipandang dari berbagai sudut pandang (Kusumadewi. Sri, 2003), antara lain : 1. Sudut pandang kecerdasan. Kecerdasan buatan akan membuat mesin menjadi ‘cerdas’ (mampu berbuat seperti apa yang dilakukan oleh manusia). 2. Sudut pandang penelitian. Kecerdasan buatan adalah suatu studi bagaimana membuat agar komputer dapat melakukan sesuatu sebaik yang dikerjakan oleh manusia 3. Sudut pandang bisnis. Kecerdasan buatan adalah kumpulan peralatan yang sangat powerful dan metodologis dalam menyelesaikan masalah-masalah bisnis. 4. Sudut pandang pemrograman. Kecerdasan buatan meliputi studi tentang pemrograman simbolik, penyelesaian masalah (problem solving) dan pencarian (searching).
Untuk menciptakan aplikasi kecerdasan buatan ada dua bagian utama yang sangat dibutuhkan seperti diperlihatkan pada Gambar 2.3 (Kuswadi, 2007), yaitu : 1. Basis Pengetahuan (Knowledge Base) Basis pengetahuan berisi fakta-fakta, teori, pemikiran dan hubungan antara satu dengan yang lainnya. 2. Motor Inferensi (Inference Engine) Motor Inferensi merupakan kemampuan menarik kesimpulan berdasarkan pengalaman. Atau dapat juga disebut dengan penalaran. Komputer
Input :
Masalah, Pertanyaan, dll
Basis Pengetahuan
Output :
Motor Inferensi
jawaban, solusi,
Gambar 2.3 Penerapan Konsep Kecerdasan Buatan di Komputer
Universitas Sumatera Utara
19
2.3.1 Sejarah Artificial Intelligence (AI)
Sebagai bidang ilmu pengetahuan komputer, kecerdasan buatan sebenarnya sudah mulai diselidiki pada tahun 1930-an dan 1940-an. Waktu tersebut merupakan saat terpenting dan banyak cendekiawan mengembangkan ide-ide baru mengenai komputasi. Logika matematika selanjutnya menjadi bidang aktif dari penyelidikan kecerdasan buatan, karena sistem logika deduktif telah berhasil diimplementasikan dalam program-program komputer.
Secara ringkas sejarah kecerdasan buatan dapat dijelaskan sebagai berikut (Kristanto. A, 2003) : 1. 1950-an, Alan Turing mengusulkan tes untuk melihat bisa/tidaknya mesin memberikan respon terhadap serangkaian pertanyaan (agar mesin dapat dikatakan cerdas) 2. Istilah “Artificial Intelligence” dimunculkan oleh John McCarthy (MIT), tahun 1956 pada Dartmouth Conference. Dalam konferensi itu juga didefinisikan tujuan AI, yaitu mengetahui dan memodelkan proses-proses berpikir manusia dan mendesain mesin agar dapat menirukan kelakukan manusia tersebut. 3. Beberapa program AI periode 1956-1966 : 1) Logic Theorist, untuk pembuktian teorema matematik. 2) Sad Sam (oleh Robert K.Lindsay, 1960), program yang dapat mengetahui kalimat sederhana dalam bahasa Inggris dan memberikan jawaban dari fakta yang didengar dalam sebuah percakapan. 3) ELIZA (Joseph Weizenbaum, 1967), program untuk terapi pasien dengan memberikan jawaban.
2.3.2 Pemrograman Algoritma Konvensional dan Pemrograman Algoritma AI
Perbedaan
yang
terlihat
antara
pemrograman algoritma
konvensional
dan
pemrograman algoritma AI direfleksikan pada sistem berbasis pengetahuan dalam cara penulisan program. Dalam pemrograman konvensional yang disebut dengan pemrograman prosedural, perintah pada komputer adalah apa yang harus dilakukan
Universitas Sumatera Utara
20
oleh komputer dengan data yang dimasukkan secara berurutan. Dengan demikian, pada pemrograman konvensional, prosedur sebagai wakil pakar adalah aturan bagaimana sesuatu akan dikerjakan. Sebaliknya Pemrograman berbasis AI menyajikan pengetahuan deklaratif (declarative knowledge)
tentang suatu domain. Jadi,
pengetahuan deklaratif merepresentasikan apa yang diketahui tanpa memutuskan lebih dahulu secara tepat bagaimana pengetahuan akan digunakan (Pandjaitan, 2007). Tabel 2.2 menunjukkan perbedaan antara pemrograman konvensional(prosedural) dengan pemrograman AI.
Tabel 2.2 Pemrograman AI Vs. Pemrograman Konvensional Dimensi Pemrosesan
Pemrograman AI Mengandung konsep -
Pemrograman Konvensional Algoritmik
konsep simbolik Sifat input
Bisa tidak lengkap
Harus lengkap
Pencarian
Kebanyakan bersifat
Biasanya didasarkan pada
heuristik
algoritma
Keterangan
Disediakan
Biasanya tidak disediakan
Fokus
Pengetahuan
Data dan informasi
Struktur
Kontrol dipisahkan dari
Kontrol terintegrasi dengan
pengetahuan
informasi (data)
Sifat output
Kuantitatif
Kualitatif
Pemeliharaan dan update
Relatif murah
Sulit
Kemampuan menalar
Ya
Tidak
2.3.3 Lingkup Artificial Intelligence (AI) pada Aplikasi Komersial
Dewasa ini, AI juga memberikan konstribusi yang cukup besar di bidang manajemen. Adanya sistem pendukung keputusan dan Sistem Informasi Manajemen juga tidak terlepas dari andil AI. 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 (informatika), namun juga sudah merambah
Universitas Sumatera Utara
21
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.
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 (meskipun sebenarnya AI itu sendiri bukan merupakan medan komersial).
Lingkup utama dalam kecerdasan buatan adalah (Kusumadewi. S, 2003): 1. Sistem Pakar (Expert System). Dalam sistem 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. 4. Robotika & Sistem Sensor (Robotics & Sensory Systems). 5. Computer Vision, mencoba untuk dapat menginterpretasikan gambar atau objekobjek tampak melalui komputer. 6. Intelligent Computer-aided Instruction. Komputer dapat digunakan sebagai tutor yang dapat melatih dan mengajar. 7. Game Playing.
Universitas Sumatera Utara
22
2.4
Game Playing
Dalam kamus bahasa Indonesia “Game” adalah permainan. Game bertujuan untuk menghibur. Biasanya game banyak disukai oleh anak-anak hingga orang dewasa. Games penting untuk perkembangan otak, untuk meningkatkan konsentrasi dan melatih untuk memecahkan masalah dengan tepat dan cepat karena dalam game terdapat berbagai konflik atau
masalah yang menuntut pemainnya untuk
menyelesaikannya dengan cepat dan tepat.
Games adalah fasilitas yang sangat menarik dalam komputer. Ide games pertama kali dimunculkan oleh Claude Shanon (1950) yang menulis paper tentang mekanisme pembuatan program permainan catur. Beberapa tahun kemudian, Alan Turing mendeskripsikan program permainan catur namun ia sendiri belum pernah membuat rancangan program. Baru pada awal tahun 1960-an Arthur Samuel mencoba untuk membuat program catur tersebut.
Ada beberapa alasan mengapa games merupakan domain yang baik untuk di eksplore, yaitu (Kusumadewi. S, 2003) : 1. Sangat mudah untuk menentukan ukuran kesuksesan dan kegagalannya (menang atau kalah). 2. Tidak membutuhkan terlalu banyak pengetahuan. Permainan dapat diselesaikan dengan melakukan pencarian dari arah start sampai posisi menang. 3. Ruang keadaannya mudah direpresentasikan. 4. Operator-operator yang digunakan tidak terlalu banyak. 5. Sebagian besar game dapat dimodelkan dengan mudah. 6. Sangat mungkin untuk dibandingkan dengan kemampuan manusia.
Kebanyakan permainan dilakukan dengan menggunakan sekumpulan aturan. Konfigurasi papan (catur misalnya) yang digunakan dalam permainan ini dapat digambarkan pada komputer dengan mudah, sehingga pengujian program permainan (game) tidak membutuhkan biaya yang besar. Dalam permainan digunakan pencarian ruang keadaan (state space search). Permainan dapat menghasilkan sejumlah besar pencarian ruang. Teknik untuk menentukan alternatif dalam menyimak problema
Universitas Sumatera Utara
23
ruang merupakan sesuatu yang rumit. Teknik yang menggeluti hal ini disebut dengan heuristik. Kebanyakan dari apa yang disebut sebagai kecerdasan berada pada heuristik yang digunakan oleh manusia dalam menyelesaikan permasalahannya. (Setiawan, 1993).
1.5. NP-Complete
Kebutuhan waktu algoritma yang mangkus bervariasi, mulai dari O(1), O(log log n), O(log n), O(n), O(n2), dan O(n3). Semua algoritma tersebut dikenal sebagai solusi polinomial dikarenakan kebutuhan waktunya secara asimptotik dibatasi oleh fungsi polinomial. Misalnya log(n) < n untuk semua n ≥ 1. Sebaliknya, ada persoalan yang tidak terdapat solusi waktu polinomial untuk menyelesaikannya, misalnya TSP yang memiliki kompleksitas O(n!) (Wilf. H, 1994).
Polynomial-time algorithm adalah algoritma yang kompleksitas waktu kasusterburuknya dibatasi oleh fungsi polinom dari ukuran masukannya. Di luar algoritma tersebut, algoritmanya dikenal dengan nonpolynomial-time algorithm.
P Problems adalah himpunan semua persoalan keputusan yang dapat dipecahkan oleh algoritma dengan kebutuhan waktu polinom. NP Problems adalah himpunan persoalan keputusan yang dapat diselesaikan oleh algoritma nondeterministik dalam waktu polinom. Algoritma non-deterministik adalah algoritma yang berhadapan dengan beberapa opsi pilihan, dan algoritma memiliki kemampuan untuk menerka opsi pilihan yang tepat.
Semua persoalan P juga adalah NP, sebab tahap menerka tidak terdapat di dalam persoalan P. Karena itu, P adalah himpunan bagian dari NP. Namun, belum ada yang bisa membuktikan apakah masalah P = NP atau P ≠ NP. Pertanyaan ini penting sebab kebanyakan persoalan keputusan adalah NP. Karena itu, jika P = NP, maka akan ada banyak persoalan keputusan yang dapat dipecahkan secara mangkus dengan algoritma yang kebutuhan waktunya polinom. Namun kenyataannya, banyak ahli yang
Universitas Sumatera Utara
24
telah gagal menemukan algoritma waktu-polinom untuk persoalan NP. Karena itu, cukup aman kalau kita menduga-duga bahwa P ≠ NP. NP-Complete (NPC) adalah persoalan NP yang paling sulit. Sebuah persoalan X dikatakan NPC (Sansani. S, 2009) jika : 1. X termasuk ke dalam kelas NP 2. Setiap persoalan di dalam NP dapat direduksi dalam waktu polinom menjadi X. Untuk persoalan X di dalam NPC, pertama harus dipahami bahwa X adalah NP. Kemudian, kita seharusnya dapat mereduksi sembarang persoalan lain di dalam NP dengan transformasi sederhana menjadi instance persoalan X. Efeknya, jika transformasi ini dapat dilakukan, maka jika algoritma dalam waktu polinom ditemukan untuk X, maka semua persoalan di dalam NP dapat diselesaikan dengan mangkus. Dengan kata lain, jika X adalah NPC dan termasuk ke dalam P – yaitu algoritma yang mangkus (polinom, deterministik) untuk X ditemukan – maka P = NP. Hal ini karena transformasi tersebut sederhana (membutuhkan waktu polinom).
Universitas Sumatera Utara