BAB 2
LANDASAN TORI
2.1 Kecerdasan Buatan
Kecerdasan adalah kemampuan untuk belajar, memahami, menyelesaikan masalah dan menentukan keputusan. Kecerdasan buatan atau Artificial Intelligence merupakan ilmu pengetahuan yang bertujuan untuk membuat mesin dapat melakukan sesuatu pekerjaan yang membutuhkan kecerdasan.
Definisi kecerdasan buatan terbagi ke dalam dua dimensi dan empat kategori. Pada Gambar 2.1, bagian atas menunjukkan kecerdasan buatan merupakan sistem dengan proses berpikir dan reasoning menyerupai manusia, sedangkan bagian bawah menunjukkan bahwa kecerdasan buatan merupakan sistem dengan perilaku menyerupai manusia. Pada bagian kiri menunjukkan bahwa kecerdasan buatan merupakan ukuran kinerja manusia, sedangkan di bagian kanan mengukur performa ideal yang disebut rasionalitas (Russel dan Norvig, 2010).
8 PROSES BERFIKIR DAN REASONING Sistem yang berfikir secara rasional
“Upaya baru yang menarik untuk menjadikan komputer berfikir ... mesin dengan fikiran, dalam arti sebenarnya dan literal.” (Haugeland, 1985)
“Studi tentang kemampuan mental melalui penggunaan model-model komputasional “ (Chamiak dan McDermott, 1985)
“[Pengotomasian dari] aktifitas-aktifitas yang dikaitkan dengan fikiran manusia, aktifitas-aktifitas seperti pengambilan keputusan, pembelajaran, ... “ (Bellman, 1978)
“Studi tentang komputasi yang memungkinkan pengenalan, alasan, dan tindakan” (Winston, 1992)
Sistem yang bertindak seperti manusia
Sistem yang bertindak secara rasional
“Seni membuat mesin yang melakukan fungsi-fungsi yang memerlukan kecerdasan apabila dilaksanakan oleh manusia” (Kurzweil, 1990) “Studi tentang bagaimana membuat komputer melakukan hal-hal yang pada saat itu manusia melakukan dengan lebih baik” (Rich dan Knight, 1991)
“Kecerdasan Komputasional adalah studi tentang perancangan agen-agen cerdas” (Poole et al., 1998) “AI...berkaitan dengan perilaku cerdas dalam artifak(karya seni)” (Nilsson, 1998)
PERILAKU Gambar 2.1 Beberapa definisi kecerdasan buatan, diorganisasikan atas empat kategori (Sumber : Artificial Intelligence : A Modern Approach, 2010)
Kecerdasan buatan dapat memungkinkan komputer untuk ‘berpikir’. Dengan cara menyederhanakan program, kecerdasan buatan dapat menirukan proses belajar manusia sehingga informasi baru dapat diserap dan digunakan sebagai acuan di masamasa yang akan datang. Manusia dapat menyerap informasi baru tanpa perlu mengubah atau mempengaruhi informasi lain yang telah tersimpan. Menggunakan program kecerdasan buatan membutuhkan cara yang jauh lebih sederhana dibandingkan dengan memakai program standar tanpa kecerdasan buatan di dalamnya.
RASIONALITAS
KINERJA MANUSIA
Sistem yang berfikir seperti manusia
9 Teknik yang digunakan dalam kecerdasan buatan memungkinkan dibuatnya sebuah program yang setiap bagiannya mengandung langkah-langkah independen dan dapat diidentifikasi dengan baik untuk dapat memecahkan sebuah atau sejumlah persoalan. Setiap potong bagian program adalah seperti sepotong informasi dalam pikiran manusia. Jika informasi tadi diabaikan, pikiran kita secara otomatis dapat mengatur cara kerjanya untuk menyesuaikan diri dengan fakta atau informasi yang baru. Kita tidak perlu selalu mengingat setiap potong informasi yang telah kita pelajari. Hanya yang relevan dengan persoalan yang kita hadapi yang kita gunakan. Demikian pula dalam kecerdasan buatan, setiap bagian program dapat dimodifikasi tanpa mempengaruhi struktur seluruh programnya. Hal ini memudahkan pemrogram untuk menghasilkan program yang semakin efisien dan mudah dipahami.
2.1.2 Bidang Terapan Kecerdasan Buatan
Pada awal perkembangannya, kecerdasan buatan menangani persoalan-persoalan pembuktian teorema dan permainan (games). Arthur Samuel (1901-1990), seorang periset kecerdasan buatan menuliskan program permainan catur yang tidak hanya sekedar dapat bermain catur, namun program tersebut juga dibuat agar dapat menggunakan pengalamannya untuk meningkatkan kemampuannya. Sementara itu, Allen Newell (1927-1992), seorang ahli teori logika berusaha membuktikan teoremateorema matematika.
Seperti kebanyakan bidang sains lainnya, kecerdasan buatan dapat dipilah menjadi sejumlah sub-disiplin. Berikut sejumlah bidang terapan utama terhadap Kecerdasan Buatan :
1. Sistem Pakar (Expert System) Dalam suatu sistem pakar seorang pakar yang kompeten di dalam suatu bidang tertentu dapat menyediakan pengetahuan yang dibutuhkan tentang suatu persoalan yang dikuasainya. Sedangkan seorang ahli kecerdasan buatan bertanggungjawab untuk menerapkan pengetahuannya dalam pembuatan program yang efektif dan cerdas. Begitu program seperti ini selesai ditulis, kepakarannya
perlu
ditingkatkan
melalui
proses
pemberian
soal,
10 merundingkannya dengan pakar, dan membuat perubahan-perubahan yang perlu hingga dicapai tingkat kinerja (performence) yang diinginkan.
2. Perencanaan (Planning) dan Robotik Perencanaan merupakan sebuah aspek penting dalam usaha merancang robot yang mampu melaksanakan tugasnya sampai suatu derajat keluwesan dan keresponsifan tertentu. Salah satu cara yang digunakan dalam perencanaan adalah dengan komposisi hirarki. Pendekatan tersebut akan membatasi lingkup permasalahan yang dirunut secara efektif dan juga dapat digunakan untuk pemakaian di masa yang akan datang.
3. Permainan (Game) Kebanyakan permainan dilakukan dengan mengggunakan sekumpulan aturan. Dalam permainan digunakan apa yang disebut dengan pencarian ruang keadaan (state space search). Permainan dapat menghasilkan sejumlah besar pencarian ruang. Teknik yang menggeluti hal ini disebut heuristic. Permainan merupakan bidang yang menarik dalam studi heuristic.
4. Pemodelan Kinerja (Performance) Manusia Pemodelan kinerja manusia telah terbukti merupakan alat yang sangat bermanfaat dalam merumuskan dan menguji teori-teori penerapan inderawi manusia.
5. Bahasa Alamiah (Natural Language), Pemodelan Semantik, dan Mesin yang Dapat Belajar (Learning Machine) Salah satu tujuan jangka panjang Kecerdasan Buatan adalah pembuatan program yang memiliki kemampuan untuk memahami bahasa manusia. Tidak hanya kemampuan komputer dalam memahami bahsa alamiah saja yang tampaknya merupakan salah satu aspek dasar dari kecerdasan manusia, namun otomasi yang berhsail darinya juga memiliki pengaruh yang sangat besar pada kemampuan penggunaanya dan keefektifannya.
11 2.2 Permainan (Games)
Games merupakan salah satu bidang terapan dalam kecerdasan buatan. Ide games pertama kali dimunculkan oleh Claude Shannon yang menulis paper tentang mekanisme pembuatan program permainan catur pada tahun 1950. 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.
Penyelesaian games dilakukan dengan cara menelusuri pohon permainan (game tree). Pohon permainan adalah sebuah graf yang memperlihatkan semua kemungkinan keadaan dalam permainan yang dilakukan oleh pemain. Pohon permainan melukiskan node dan jalan yang mengarah dari keadaan awal menuju tujuan atau keadaan saat game dimenangkan.
Ada beberapa alasan mengapa games merupakan domain yang baik untuk dieksplor dalam bidang kecerdasan buatan (Kusumadewi, 2003), yaitu : 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.
Alasan pertama memang masih bisa diterima sampai sekarang. Namun alasan kedua ternyata tidak cocok untuk games yang besar (komplex). Sebagai contoh pada permainan catur : Rata-rata setiap node bercabang sebanyak 35; Tiap-tiap pemain rata-rata bergerak 50 kali; Sehingga total dalam satu pohon, akan terdapat posisi sebanyak 35100.
12 2.3 Word Search Puzzle
Word search puzzle adalah permainan pencarian kata dalam kumpulan huruf pada sebuah grid yang biasanya berbentuk persegi. Tujuan permainan ini adalah menemukan semua kata yang tersembunyi di dalam persegi tersebut. Kata-kata yang tersembunyi dapat ditemukan secara horizontal, vertikal dan diagonal. Gambar 2.2 merupakan contoh suatu word search puzzle.
Gambar 2.2 Word search puzzle (Sumber : www.free-for-kids.com)
Dalam melakukan pencarian satu kata, pemain harus mencari melalui delapan jalur yang mungkin, yaitu : 1. Horizontal ke kanan 2. Horizontal ke kiri 3. Vertikal ke atas 4. Vertikal ke bawah 5. Diagonal ke kiri atas
13 6. Diagonal ke kiri bawah 7. Diagonal ke kanan atas 8. Diagonal ke kanan bawah
Untuk versi permainan Word search puzzle yang lebih sulit, aturan permainan memungkinkan pencarian kata lebih dari delapan jalur di atas.
Banyak strategi yang dapat digunakan untuk menyelesaikan permainan ini, misalnya dengan mencari huruf pertama dari kata yang dicari dalam kumpulan huruf kemudian mencari huruf kedua yang cocok dan seterusnya. Strategi lain adalah menemukan huruf-huruf yang muncul paling sedikit (misalnya X dan Q) untuk mencari kata-kata yang mengandung huruf-huruf tersebut.
Word search puzzle dikenal juga dengan nama WordSeek, WordFind, WordSleuth dsb. Permainan ini pertama kali didesain dan diterbitkan oleh Norman E. Gibat pada tanggal 1 Maret 1968 di Norman, Oklahoma. Sejak saat itu permainan ini menjadi populer di Norman.
Word search puzzle sering ditemukan di surat kabar, majalah, dan buku tekateki. Beberapa buku pelajaran untuk anak juga menggunakan puzzle ini dalam pembelajaran. Selain sebagai permainan yang menarik, word search puzzle juga banyak digunakan untuk menyimpan pesan rahasia. Pesan rahasia dapat dibaca jika telah menemukan semua kata yang tersembunyi kemudian menyusunnya menjadi sebuah kalimat. Dalam versi lain, permainan ini memberikan sebuah pertanyaan trivia yang akan terjawab jika semua kata telah ditemukan dalam puzzle. Kata-kata yang berhasil ditemukan akan membentuk sebuah kalimat yang akan menjawab trivia tersebut.
14 2.4 Teknik Pencarian (Searching)
Masalah pencarian sering dijumpai oleh peneliti di bidang kecerdasan buatan. Permasalahan ini sangat penting dalam menentukan tingkat keberhasilan sistem cerdas tersebut. Teknik pencarian terbagi atas dua teknik, yaitu pencarian buta (blind search) dan pencarian heuristic (heuristic search).
Pencarian buta merupakan pencarian yang penelusurannya dimulai dengan tidak ada informasi awal yang digunakan dalam proses pencarian. Contohnya BreathFirst Search (BFS) dan Depth-First Search (DFS). Sedangkan pencarian heuristik merupakan pencarian yang penelusurannya dimulai dengan adanya informasi awal yang digunakan dalam proses pencarian. Contohnya hill climbing, tabu search, algoritma genetika, algoritma semut dan simulated annealing.
2.5 Algoritma Depth-First Search (DFS)
Algoritma Depth-First Search (DFS) adalah algoritma pencarian dengan proses bermula dari node akar dan bergerak ke bawah (menurun) ke level dalam secara berurutan dengan mendahulukan cabang kiri pohon. Algoritma : 1. Jika keadaan awal merupakan tujuan, keluar (sukses). 2. Jika tidak demikian, lakukan langkah-langkah berikut : a. Bangkitkan succesor E dari keadaan awal. Jika tidak ada succesor, maka akan terjadi kegagalan. b. Panggil depth-first search dengan E sebagai keadaan awal. c. Jika sukses berikan tanda sukses. Namun jika tidak, ulangi langkah ke2.
15 Untuk lebih jelasnya bagaimana teknik pencarian DFS dapat dilihat pada pencarian kata ‘BUKU’ dalam contoh word search puzzle pada Gambar 2.3.
mulai
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
(4)
(7) B
B
(9) (5) (3) (10) (8) K G X U U (12) (2) (14) J R Z (16) (1) (19) R A W (24) Q
(a)
(2) (12) (8) (6) (3) (1) (13) (1) Z J U T X A W A (19) (17) (9) W T K (25) (22) (10) U E U
(b)
Gambar 2.3 Contoh word search puzzle (a) Teknik pencarian Depth-First Search (DFS) (b)
Penggunaan teknik pencarian DFS memiliki beberapa keuntungan dan kelemahan.
Keuntungan DFS : 1. Membutuhkan memori yang relatif kecil, karena hanya node-node pada lintasan yang aktif saja yang disimpan. 2. Menemukan solusi tanpa harus menguji lebih banyak lagi dalam ruang keadaan.
Kelemahan DFS : 1. Jika pohon yang dibangkitkan mempunyai level yang dalam (tak terhingga), maka tidak ada jaminan untuk menemukan solusi (Tidak Complete). 2. Jika terdapat lebih dari satu solusi yang sama tetapi berada pada level yang berbeda, maka pada DFS tidak ada jaminan untuk menemukan solusi yang paling baik (Tidak Optimal).
16 2.6 Algoritma Backtracking
Algoritma Backtracking adalah algoritma umum yang digunakan untuk pencarian solusi pada beberapa permasalahan komputasi, yang secara bertahap membangun kandidat solusi dan mengabaikan setiap kandidat c (‘backtrack’) segera setelah mengetahui bahwa c tidak dapat diselesaikan untuk memperoleh solusi yang valid. Backtracking merupakan algoritma yang berbasis Depth-First Search (DFS).
Teknik backtracking merupakan salah satu teknik dalam penyelesaian masalah secara umum (General Problem Solving). Adapun dasar dari teknik ini adalah suatu teknik pencarian (searching). Teknik pencarian ini digunakan dalam rangka mendapatkan himpunan penyelesaian yang mungkin. Dari himpunan penyelesaian yang mungkin ini akan diperoleh solusi optimal atau memuaskan.
Saat ini backtracking banyak diterapkan untuk program games (seperti permainan tic-tac-toe, menemukan jalan keluar dalam sebuah labirin, catur, dll) dan masalah-masalah pada bidang kecerdasan buatan (artificial intelligence).
Nama backtrack didapatkan dari sifat algoritma ini yang memanfaat karakteristik himpunan solusinya yang sudah disusun menjadi suatu pohon solusi. Gambar 2.4 adalah contoh sebuah pohon solusi.
Gambar 2.4 Pohon solusi
Gambar 2.4 merepresentasikan solusi dari suatu permasalahan. Untuk mencapai solusi (5), maka jalan yang ditempuh adalah (1,2,5), demikian juga dengan
17 solusi-solusi yang lain. Algoritma backtrack akan memeriksa mulai dari solusi yang pertama yaitu solusi (5). Jika ternyata solusi (5) bukan solusi yang layak maka algoritma akan melanjutkan ke solusi (6). Jalan yang ditempuh ke solusi (5) adalah (1,2,5) dan jalan untuk ke solusi (6) adalah (1,2,6). Kedua solusi ini memiliki jalan awal yang sama yaitu (1,2). Jadi daripada memeriksa ulang dari (1) kemudian (2) maka hasil (1,2) disimpan dan langsung memeriksa solusi (6).
Prinsip pencarian solusi dengan metode backtracking adalah sebagai berikut : 1.
Solusi dicari dengan membentuk lintasan dari akar ke daun. Aturan pembentukan yang dipakai adalah mengikuti aturan pencarian mendalam (DFS). Simpul-simpul yang sudah dilahirkan dinamakan simpul hidup (live node). Simpul hidup yang sedang diperluas dinamakan simpul-E (Expand-node).
2.
Tiap kali simpul-E diperluas, lintasan yang dibangun olehnya bertambah panjang. Jika lintasan yang sedang dibentuk tidak mengarah ke solusi, maka simpul-E tersebut “dibunuh” sehingga menjadi simpul mati (dead node). Fungsi yang digunakan untuk membunuh simpul-E adalah dengan menerapkan fungsi pembatas (bounding function). Simpul yang sudah mati tidak akan pernah diperluas lagi.
3.
Jika pembentukan lintasan berakhir dengan simpul mati, maka proses pencarian diteruskan dengan membangkitkan simpul anak yang lainnya. Bila tidak ada lagi simpul anak yang dapat dibangkitkan, maka pencarian solusi dilanjutkan dengan melakukan backtracking ke simpul hidup terdekat (simpul orangtua). Selanjutnya simpul ini menjadi simpul-E yang baru.
4.
Pencarian dihentikan bila kita telah menemukan solusi atau tidak ada lagi simpul hidup untuk backtracking.
Untuk lebih jelasnya, prinsip pencarian solusi dengan metode backtracking di atas dapat dilihat pada Gambar 2.5.
18
Gambar 2.5 Prinsip pencarian solusi dengan metode backtracking
2.7 Android
Android adalah suatu sistem operasi yang didesain sebagai platform open source untuk perangkat mobile. Android merupakan comprehensive platform, artinya Android adalah perangkat lunak dengan stack lengkap untuk perangkat mobile. Android mencakup sistem operasi, middleware dan aplikasi. Android menyediakan semua tools dan framework untuk mengembangkan aplikasi dengan mudah dan cepat. Dengan adanya Android SDK (Software Developement Kit) pengembang aplikasi dapat memulai pembuatan aplikasi pada platform Android menggunakan bahasa pemrograman Java.
Pada tahun 2005, Google membeli Android, Inc., yang merupakan pendatang baru yang mengembangkan software untuk smartphone. Pada saat itu dunia mengira bahwa Google akan memproduksi smartphone. Anggapan itu ternyata salah karena Google menyatakan bahwa ambisi Android bukan hanya untuk mengembangkan sebuah ponsel melainkan suatu platform yang dapat digunakan di banyak ponsel dan perangkat lainnya.
Kemudian untuk mengembangkan Android dibentuklah Open Handset Alliance, sebuah grup nonprofit yang terdiri dari beberapa perusahaan hardware,
19 software, telekomunikasi dan perusahaan lainnya termasuk Google, HTC, Intel Motorola, Qualcomm, T-Mobile, dan Nvidia. Pada saat perilisan perdana Android tanggal 5 November 2007, Android bersama Open Handset Alliance menyatakan mendukung pengembangan open source pada perangkat mobile. Di lain pihak, Google merilis kode-kode Android di bawah lisensi Apache, sebuah lisensi software dan open platform perangkat seluler.
Sekitar September 2007 Google mengenalkan Nexus One, smartphone yang menggunakan sistem operasi Android versi 1.0. Ponsel ini diproduksi oleh HTC Corporation dan mulai dipasarkan pada 5 Januari 2008. Pada tahun 2009 perkembangan perangkat berbasis Android semakin pesat. Lebih dari 20 jenis perangkat mobile menggunakan sistem operasi Android. Versi Android yang dirilis pada tahun 2009 antara lain Cupcake(1.5), Donut(1.6), dan Eclair (2.0 dan 2.1).
Froyo(Android 2.2) dirilis pada tahun 2010. Pada tahun 2010 lebih dari 60 perangkat menggunakan Android sebagai sistem operasinya. Pada saat itu Android menjadi platform ponsel dengan penjualan terbaik kedua setelah Blackberry. Samsung Galaxy Tab GT-P1000 adalah salah satu smartphone/tabletp pc dengan sistem operasi Android versi 2.2.
Pada saat penulisan skripsi ini, versi android terakhir yang sudah dirilis dan dipasarkan adalah Android 4.1 atau dikenal dengan nickname Jelly Bean.
Daftar versi-versi Android yang telah dirilis hingga Juli 2012 dapat dilihat pada Tabel 2.1.
20 Tabel 2.1 Versi – versi Android Versi Android
API Level
Nickname
Android 1.0
1
Android 1.1
2
Android 1.5
3
Cupcake
Android 1.6
4
Donut
Android 2.0
5
Eclair
Android 2.01
6
Eclair
Android 2.1
7
Eclair
Android 2.2
8
Froyo (Frozen Yogurt)
Android 2.3
9
Gingerbread
Android 2.3.3
10
Gingerbread
Android 3.0
11
Honeycomb
Android 3.1
12
Honeycomb
Android 3.2
13
Honeycomb
Android 4.0
14
Ice Cream Sandwich
Android 4.0.3
15
Ice Cream Sandwich
Android 4.1
16
Jelly Bean
Dari Tabel 2.1 dapat dilihat pada setiap perubahan versi android terdapat perubahan API Level. API Level adalah nilai yang menunjukkan revisi framework pada platform Android. Nomor versi android yang terus berubah dikarenakan perubahan API Level. Setiap versi android mendukung tepat satu API Level, namun tetap mendukung API Level sebelumnya. API Level akan menentukan apakah suatu aplikasi bisa dijalankan pada suatu platform Android atau tidak.
2.7.1 Arsitektur Android
Secara garis besar arsitektur Android dapat dijelaskan dan digambarkan pada Gambar 2.6.
21
Gambar 2.6 Arsitektur Android (Sumber : Learning Android, 2011)
1.
Linux Kernel
Linux Kernel adalah layer inti dari sistem operasi Android. Layer ini berisi file-file sistem yang mengatur sistem processing, memory, resource, drivers, dan sistemsistem operasi android lainnya. Linux kernel yang digunakan android adalah linux kernel release 2.6.
2.
Libraries
Libraries adalah layer tempat fitur-fitur Android berada. Biasanya para pembuat aplikasi mengakses libraries untuk menjalankan aplikasinya. Berjalan di atas kernel, layer ini meliputi berbagai library C/C++ inti seperti Libc dan SSL, serta :
a. Libraries media untuk pemutaran media audio dan video b. Libraries untuk manajemen tampilan
22 c. Libraries Graphics mencakup SGL dan OpenSGL untuk grafis 2D dan 3D d. Libraries SQLite untuk dukungan database e. Libraries SSL dan WebKit terintegrasi dengan web browser dan security f. Libraries LiveWebcore mencakup modern web browser dengan engine embeded web view g. Libraries 3D yang mencakup implementasi OpenGL ES 1.0 API’s
3.
Android Runtime
Android Runtime adalah layer yang membuat aplikasi Android dapat dijalankan, dimana dalam prosesnya menggunakan implementasi Linux. android runtime terbagi menjadi dua bagian yaitu :
a. Core Libraries Aplikasi Android dibangun dalam bahasa Java, sementara Dalvik sebagai virtual machine bukan virtual machine java, sehingga diperlukan sebuah library yang berfungsi untuk menerjemahkan bahasa Java/C yaitu Core Libraries.
b. Dalvic Virtual Machine Virtual machine berbasis register yang dioptimalkan untuk menjalankan fungsi-fungsi secara efisien, dimana merupakan pengembangan yang mampu membuat kernel linux untuk melakukan threading dan manajemen tingkat rendah.
4.
Application Frameworks
Application Frameworks adalah layer dimana para pembuat aplikasi melakukan pengembangan/pembuatan aplikasi yang akan dijalankan pada sistem operasi Android, karena pada layer inilah aplikasi dapat dirancang dan dibuat.
Komponen-komponen yang termasuk di dalam Application Frameworks antara lain :
23 a. Views b. Content Provider c. Resource Manager d. Notification Manager e. Activity Manager
5.
Applications dan Widgets
Applications dan widgets merupakan layer dimana user berhubungan dengan aplikasi, termasuk proses download, instalasi hingga saat aplikasi dijalankan. Di layer ini terdapat aplikasi inti termasuk klien email, aplikasi SMS, kalender, peta, browser, kontak dan lain-lain.
2.8 Penelitian Sebelumnya
Algoritma backtracking telah banyak diterapkan dalam penelitian untuk programprogram game (permainan). Beberapa penelitian yang pernah dilakukan untuk menyelesaikan board games dengan menggunakan algoritma backtracking antara lain untuk permainan anagram (Assat, 2007), masalah Knight Tour (Mumtaz, 2008), dan Congklak (Bakri, 2010).
Assat menggunakan algoritma bactracking untuk penyelesaian anagram. Anagram adalah salah satu permainan kata, dimana dari sebuah kata dapat dihasilkan kata baru yang memiliki arti. Pada penelitian ini algoritma backtracking dapat digunakan dalam pencarian anagram dan subanagram dari sebuah kata. Pemanfaatan Algoritma Backtracking dalam pencarian anagram dapat mempercepat proses pencarian dibandingkan menggunakan Algoritma Brute Force.
Mumtaz menggunakan algoritma bactracking
pada penelitiannya tentang
penyelesaian masalah Knight’s Tour. Knight’s Tour adalah salah satu masalah dari aplikasi teori graf pada permainan catur papan. Pada penelitian tersebut sistem dengan implementasi algoritma bactracking yang dibangun dapat menemukan solusi hingga papan berukuran 6x6.
24 Bakri menerapkan algoritma backtracking pada agen cerdas dalam sistem yang dibangun untuk permainan congklak. Congklak adalah permainan tradisional Indonesia yang dimainkan oleh dua pemain dengan menggunakan sebuah papan congklak dan biji congklak yang berjumlah 14 x 7 buah. Pada penelitian ini algoritma backtracking dapat menyelesaikan permainan tersebut dengan persentase kehandalan agen 75% jika pemain bermain terlebih dahulu dan 100% jika agen bermain terlebih dahulu.
Dari beberapa penelitian tersebut dapat disimpulkan bahwa algoritma bactracking dapat melakukan pencarian solusi suatu permainan dengan baik.