Analisis algoritma minimax optimasi alpha-beta pruning terhadap waktu komputasi pada game congklak

(1)

(2)

(3)

(4)

Nama : Sarah Nurhasanah

Jenis kelamin : Perempuan

Tempat, tanggal lahir : Tasikmalaya, 1 Februari 1990

Agama : Islam

Kewarganegaraan : Indonesia

Status : Belum kawin

Anak ke : 1 dari dua bersaudara

Alamat : Jl. Flamboyan 3 No.63 RT. 40/04

Kelurahan Nagri Kaler Kabupaten Purwakarta 41110

Telepon : +6285659945335

e-mail : sarah.nurhasanah@gmail.com

2. RIWAYAT HIDUP

1. Sekolah Dasar : SDN Singawinata IV

Tahun ajaran 1995-2001 2. Sekolah Menengah Pertama : SMP Negeri 1 Purwakarta


(5)

4. Perguruan Tinggi : FTIK Unikom Bandung Tahun ajaran 2007-2013

Demikian riwayat hidup ini saya buat dengan sebenar-benarnya dalam keadaan sadar dan tanpa paksaan.

Bandung, 16 Februari 2013


(6)

ANALISIS ALGORITMA MINIMAX OPTIMASI

ALPHA-BETA PRUNING TERHADAP WAKTU KOMPUTASI PADA

GAME CONGKLAK

SKRIPSI

Diajukan untuk Menempuh Ujian Akhir Sarjana Program Strata Satu Jurusan Teknik Informatika

Fakultas Teknik dan Ilmu Komputer

Oleh:

SARAH NURHASANAH

10107493

PROGRAM STUDI S1

JURUSAN TEKNIK INFORMATIKA

FAKULTAS TEKNIK DAN ILMU KOMPUTER

UNIVERSITAS KOMPUTER INDONESIA

2013


(7)

iii

Puji dan syukur senantiasa kami sampaikan kehadirat Allah S.W.T. atas segala limpahan rahmat dan karunia-Nya. Shalawat dan salam semoga tetap tercurah kepada Nabi Besar Muhammad S.A.W.,kepada keluarganya, para sahabatnya dan sampai kepada kita sebagai umatnya. Alhamdulillah saya dapat menyelesaikan Tugas Akhir

dengan judul “ANALISIS ALGORITMA MINIMAX OPTIMASI ALPHA-BETA

PRUNING TERHADAP WAKTU KOMPUTASI PADA GAME CONGKLAK”.

Tugas Akhir ini merupakan salah satu syarat untuk menempuh Akhir Sarjana Program Strata Satu Jurusan Teknik Informatika Fakultas Teknik dan Ilmu Komputer di Universitas Komputer Indonesia (UNIKOM).

Sehubungan dengan telah selesainya Tugas Akhir ini, kami yakin bahwa tugas ini tidak akan berhasil tanpa doa, bimbingan, petunjuk dan dukungan dari berbagai pihak yang terlibat dalam pembuatan tugas ini. Oleh karena itu kami mengucapkan terima kasih kepada :

1. Allah S.W.T yang telah memberikan kami nikmat dan kesehatan sehingga dapat menyelesaikan TA (Tugas Akhir).

2. Kedua Orang Tua, papa dan ibu, terutama ibunda Iceu Kurniasih (almarhum) penulis yang tidak henti-hentinya mendoakan dan memberikan dukungan.

3. Ibu Mira Kania Sabariah, S.T.,M.T., selaku pembimbing yang telah meluangkan waktu untuk memberikan bimbingan dengan penuh kearifan, kekeluargaan serta memberikan masukan – masukan dalam penyelesaian tugas akhir ini.

4. Utami Dewi W, S.Kom. selaku reviewer yang telah meluangkan waktu untuk memberikan bimbingan dengan penuh kearifan, kekeluargaan serta memberikan masukan dalam penyelesaian tugas akhir ini


(8)

iv

6. Teman-teman yang telah ikut mendukung dan membantu terutama Rahmi Indah Permata Sari, Muhammad Rifki, Budi Maryanto, Deden Kusmana, Eka Firman Maulana, Resa Haryuyudanto, Fiska Mekar S, Maulana Agung Pambudi, Yayu Puspitasari Furu, Mahardika Abdi Prawira sahabat yang selalu membantu penulis dalam hal teknis dan non teknis, serta selalu mendoakan, memberi semangat, motivasi, dan berbagi pengetahuan kepada penulis.

7. Kepada seluruh sahabat saya khususnya kelas IF-11 angkatan 2007 atas do’a dan dukungannya.

8. Rekan-rekan satu bimbingan dan semua pihak yang telah memberikan bantuan dan dukungan dalam menyelesaikan tugas kami.

9. Pihak- pihak lain yang tidak dapat saya sebutkan satu persatu

Kami menyadari bahwa Laporan penelitian tugas akhir yang penyusun buat ini masih jauh dari sempurna, seperti kata pepatah : “ Tak ada gading yang tak

retak”. Oleh karena itu kami sangat mengharapkan saran dan kritik dari para

pembaca, agar dalam penulisan Laporan ini selanjutnya dapat kami selesaikan dengan baik.

Besar harapan kami agar Laporan penelitian tugas akhir ini akan bermanfaat bagi para pembaca dan dunia pendidikan pada umumnya dan bagi penyusun sendiri khususnya.

Bandung, 16 Februari 2013


(9)

vii

KATA PENGANTAR ... iii

DAFTAR ISI ... v

DAFTAR GAMBAR ... viii

DAFTAR TABEL ... xi

DAFTAR SIMBOL ... xiii

DAFTAR LAMPIRAN ... xvii

BAB 1 PENDAHULUAN ... 1

1.1 Latar Belakang Masalah ... 1

1.2 Rumusan Masalah ... 2

1.3 Maksud dan Tujuan ... 2

1.4 Batasan Masalah ... 2

1.5 Metode Penelitian ... 3

1.6 Sistematika Penulisan ... 4

BAB 2 TINJAUAN PUSTAKA ... 5

2.1 AI Games ... 5

2.2 Game Congklak ... 7

2.2.1 Sejarah Perkembangan Permainan Congklak ... 7

2.2.2 Congklak Di Indonesia ... 9

2.2.3 Aturan Permainan Congklak ... 10

2.3 Konsep Dasar Algoritma ... 14

2.4 Analisis Algoritma ... 14

2.4.1 Analisis Kebenaran Algoritma ... 16

2.4.2 Analisis Efisiensi Algoritma... 17

2.5 Algoritma Pencarian ... 17

2.5.1 Macam-Macam Algoritma Pencarian... 18

2.5.1.1 DFS(Depth First Search) ... 19


(10)

viii

2.6 Flowchart ... 27

BAB 3 ANALISIS ALGORITMA ... 29

3.1 Analisis Masalah ... 29

3.2 Alur Permainan pada Congklak ... 30

3.2.1 Aturan Permainanan Congklak ... 32

3.3 Tahapan Analisis Algoritma ... 34

3.3.1 Pencarian Kemungkinan-kemungkinan langkah ... 35

3.3.1.1 Analisis Pohon Pencarian 3 lubang 6 Biji ... 36

3.3.1.2 Perhitungan Nilai Heuristik ... 38

3.3.1.3 Membandingkan Nilai Heuristik ... 49

3.3.1.4 Menghitung Kompleksitas Algoritma ... 55

3.3.1.4.1 Analisis Notasi Asimptotik Big O Minimax dan Minimax Optimasi Alpha Beta ... 57

3.3.1.4.2 Kompleksitas Waktu Asimptotik Minimax dan Minimax Optimasi Alpha Beta ... 60

3.3.1.4.3 Kesimpulan Analisis Algoritma dengan Big O ... 61

3.3.2 Kesimpulan Analisis Algoritma pada Permainan Congklak ... 61

BAB 4 PENGUJIAN... 63

4.1 Pengujian Parameter Biji dan Lubang Uji Manual ... 63

4.1.1 Hasil Uji pada 3 Lubang pada Level Mudah ... 64

4.1.1.1 Hasil Keseluruhan Langkah pada 3 Lubang pada Level Mudah ... 72

4.1.2 Hasil Uji pada 4 Lubang pada Level Mudah ... 73

4.1.2.1 Hasil Keseluruhan Langkah pada 4 Lubang pada Level Mudah ... 81

4.1.3 Hasil Uji pada 5 Lubang pada Level Mudah ... 81

4.1.3.1 Hasil Keseluruhan Langkah pada 5 Lubang pada Level Mudah ... 86

4.1.4 Hasil Uji pada 3 Lubang pada Level Sedang ... 86

4.1.4.1 Hasil Keseluruhan Langkah pada 3 Lubang pada Level Sedang... 90


(11)

ix

4.2.1.3 Pengujian 7 Lubang ... 98

4.2.2 Pengujian Level Sedang... 100

4.2.3 Hasil Pengujian Simulasi ... 101

BAB 5 KESIMPULAN DAN SARAN... 103

5.1 Kesimpulan ... 103

5.2 Saran ... 103


(12)

104

PERMAINAN TRADISIONAL CONGKLAK MENGGUNAKAN OPTIMASI ALGORITMA MINIMAX. UPI:Bandung.

[2] Surya, Muchamad Prasetyo. 2007. Pencarian Solusi Optimal dalam Permainan Congklak dengan Program Dinamis. ITB:Bandung. [3] Leberknight, David. 2002-2003, Minimax Search Algorithm.

[4] Suyanto, 2007. Artificial Intelegent Searching, Reasoning, Planning, dan Learning. Informatika:Bandung.

[5] Norvig, Peter. Paradigms of Artificial Intelegent Programming: CASE STUDIES IN COMMON LISP. Morgan Kaufman:San Francisco, California.

[6] Jones, M Tim. 2008. Artificial Intelligence: A Systems Approach. Infinity Science Press LLC:Massachusetts.

[7] Pinto, Paulo. 2002. Introducing the Min-Max Algorithm.

[8] http://www.expat.or.id/info/congklak.html (Di akses Oktober 2012). [9] Munir, Rinaldi. 2005. ALGORITMA PEMOGRAMAN dalam Bahasa

Pascal dan C. Informatika:Bandung.

[10] Russell, Stuart J.; Norvig, Peter (2003). Artificial Intelligence: A Modern Approach (2nd ed.), Upper Saddle River, New Jersey: Prentice Hall, ISBN 0-13-790395-2

[11] Suiyono. 2010. METODE PENELITIAN KUANTITATIF KUALITATIF DAN R&D. Alfabeta:Bandung

[12] Kusumadewi, Sri (2003), Artificial Intelligence (Teknik dan Aplikasinya). Graha Ilmu:Yogyakarta.


(13)

1

1.1 Latar Belakang Masalah

Permainan/game adalah salah satu kegiatan yang sangat disukai oleh sebagian besar masyarakat. Banyak macam-macam game yang bisa membuat cerdas dan melatih berfikir anak-anak, yaitu salah satunya dengan meningkatkan kecepatan berhitung dalam hal pelajaran matematika. Salah satu permainannya adalah congklak. Congklak adalah permainan yang dimainkan oleh 2 orang, dalam permainan Congklak biasanya menggunakan papan 98 (14 x 7) buah biji yang dinamakan biji congklak atau buah congklak.[5].

Penelitian yang akan dijadikan tugas akhir ini akan dilakukan pada permainan congklak karena permainan congklak membutuhkan perhitungan matematika yang dibutuhkan kecepatan dan strategi yang cepat dan tepat dalam memilih biji yang akan dimainkan agar mendapatkan langkah yang tepat dalam waktu yang cepat, sedangkan berdasarkan penelitian sebelumnya yang dilakukan Citra Anindya,[1] terdapat kelemahan yaitu penelitiannya hanya mencari solusi optimum dalam permainan congklak, namun tidak mempertimbangkan waktu komputasi atau waktu proses yang dibutuhkan komputer untuk mengambil solusi, oleh karena itu akan dilakukan optimasi dengan algoritma Alpha-Beta Pruning, kelebihan dari Alpha-Beta Pruning yaitu Alpha-Beta Pruning akan mengurangi jumlah node yang dievaluasi oleh pohon pencarian. Algoritma ini akan berhenti mengevaluasi langkah ketika terdapat minimal satu langkah yang lebih buruk daripada langkah yang dievaluasi sebelumnya, sehingga langkah berikutnya tidak perlu dievaluasi lebih jauh.[12] Alpha-Beta Pruning akan digunakan untuk menghemat komputasi komputer, sehingga tidak ada lagi kasus human menunggu terlalu lama respon dari komputer, sedangkan untuk mencari solusi optimumnya akan menggunakan algoritma Minimax.


(14)

Pohon pencarian Minimax dapat tumbuh menjadi sangat besar, karena itu dibutuhkan algoritma optimasi untuk membatasi jumlah waktu dan sumber daya yang dibutuhkan dalam pencarian Minimax. Skema pemangkasan Alpha-Beta Pruning memungkinkan Minimax untuk melakukan semua analisis yang sama lebih efisien, tanpa kehilangan informasi apapun.

Berdasarkan penjelasan di atas, maka penelitian ini akan menganalisis Algoritma Minimax dengan Optimasi Alpha-Beta Pruning pada Game Congklak terhadap waktu komputai., adapun hasil yang diharapkan yaitu akan dapat

menghemat waktu komputasi komputer dalam pencarian solusi. Sehingga pada penelitian ini hanya akan dilakukan sampai mengetahui seberapa cepat komputer melakukan proses dalam mengambil solusi/langkah dengan melihat pada kemungkinan-kemungkinan langkah pada congklak yang akan dilakukan dengan pohon pencarian sehingga akan terlihat perbedaan langkah yang dibutuhkan komputer untuk mengambil langkah yang tepat.

1.2 Rumusan Masalah

Berdasarkan latar belakang di atas, masalah yang akan dibahas pada penelitan ini adalah bagaimana menganalisis algoritma Minimax dengan

dioptimasi Alpha-Beta Pruning untuk menghemat waktu komputasi dalam

mengambil sebuah solusi dalam permainan congklak.

1.3 Maksud dan Tujuan

Maksud dari penelitian ini adalah untuk menganalisis Algoritma Minimax

dengan optimasi Alpha-Beta Pruning pada Game Congklak terhadap waktu.

Tujuan dari penelitian ini adalah untuk membuktikan algoritma Minimax dengan optimasi Alpha-Beta Pruning dalam menghemat waktu komputasi komputer untuk mengambil solusi dalam permainan congklak.


(15)

1.4 Batasan Masalah

Di dalam mengkaji suatu permasalahan diperlukan suatu batasan agar pengkajiannya tidak terlalu meluas. Berikut adalah batasan-batasan dalam penulisan penelitian ini :

1. Algoritma yang digunakan adalah Minimax dengan Alpha beta pruning,

algoritma ini digunakan untuk komputer.

2. Pemain bisa memilih jumlah lubang dan biji yang diinginkan.

3. Pemain bisa memilih siapa yang akan bermain pertama.

4. Permainan akan dibatasi dengan level permainanan, yaitu mudah, sedang,

sulit.

5. Aturan permainan disesuaikan dengan permainan congklak versi jawa yaitu dakon, hanya saja akan dimodifikasi beberapa peraturannya.

6. Model analisis yang digunakan adalah model kompleksitas waktu (Tn). 7. Notasi asimtotik yang digunakan adalah O (big oh).

1.5 Metode Penelitian

Metode penelitian yang digunakan dalam penulisan penelitian ini adalah sebagai berikut :

1. Tahap pengumpulan data

Metode pengumpulan data yang digunakan dalam penelitian ini adalah sebagai berikut :

a. Studi Literatur.

Pengumpulan data dengan cara mengumpulkan literatur, jurnal, paper dan e-book yang ada kaitannya dengan judul penelitian.

b. Observasi.

Teknik pengumpulan data dengan mengadakan penelitian dan peninjauan langsung terhadap permasalahan yang diambil.

2. Eksperimen[11]

Eksperimen digunakan untuk mencari pengaruh perlakuan tertentu terhadap yang lain dalam kondisi yang terkendalikan. Eksperimen yang dilakukan akan


(16)

mengambil uji coba dengan beberapa sample yang akan diambil dari peneliatian yang dilakukan.

1.6 Sistematika Penulisan

Sistematika penulisan penelitian ini disusun untuk memberikan gambaran umum tentang penelitian yang dijalankan. Sistematika penulisan tugas akhir ini adalah sebagai berikut :

BAB I PENDAHULUAN

Menguraikan tentang latar belakang permasalahan, mencoba merumuskan inti permasalahan yang dihadapi, menentukan tujuan dan kegunaan penelitian, yang kemudian diikuti dengan pembatasan masalah, asumsi, serta sistematika penulisan.

BAB II. TINJAUAN PUSTAKA

Membahas berbagai konsep dasar dan teori-teori yang berkaitan dengan topik penelitian yang dilakukan dan hal-hal yang berguna dalam proses analisis permasalahan.

BAB III. ANALISIS ALGORITMA

Merupakan tahapan untuk menganalisis permainan congklak, pohon pencarian serta kompleksitas Big O.

BAB IV. PENGUJIAN SAMPLE

Berisi pengujian yang akan dilakukan dengan beberapa kali percobaan dari pohon pencarian sehingga di dapat hasil.

BAB V. KESIMPULAN DAN SARAN

Berisi kesimpulan dan saran yang sudah diperoleh dari hasil penulisan tugas akhir.


(17)

5 2.1 AI Games

Dengan semakin cepatnya perkembangan hardware dan software manusia berusaha menciptakan suatu komputer yang memungkinkan untuk memahami, menalar dan bertindak sehingga dapat mengerjakan sesuatu yang pada saat ini orang dapat mengerjakan secara baik dalam kehidupan sehari-hari melalui Artificial Intellegence (AI). AI merupakan suatu cara yang sederhana untuk membuat computer dapat berfikir secara intelligent, yaitu suatu system yang memperlihatkan karakteristik yang ada pada tingkah laku manusia seperti mengerti suatu bahasa mempelajari, mempertimbangkan dan memecahkan suatu masalah. Adapun yang menjadi tujuan dasar dari AI adalah Untuk mengembangkan metode dan sistem untuk menyelesaikan masalah,masalah yang biasa diselesaikan melalui aktifivitas intelektual manusia, meningkatkan kinerja sistem informasi yang berbasis computer.

Kecerdasan buatan dalam sebuah permainan menjadi salah satu kajian ilmu artificial intelligence yang menarik dalam ilmu komputer. Akan tetapi tidak semua teknik AI bisa diterapkan dalam permainan yang sama. Oleh karena itu supaya tidak terjadi kesalahan dalam penerapan teknik diperlukan pemahaman yang baik dalam karakteristik permainan. AI games merupakan aplikasi untuk memodelkan karakter yang terlibat, baik sebagai lawan ataupun karakter pendukung yang merupakan bagian dari permainan yang tidak bermain.

AI games memiliki karakter tersendiri dalam pengklasifikasiannya. Adapun yang menjadi karakter dalam AI games yaitu :

1. Karakter antagonis (opponent AI)

Karakter antagonis adalah karakter yang dalam permainan memiliki tujuan yang sama dengan pemain yaitu memenangkan permainan. Untuk mewujudkan tujuan ini, karakter tersebut dapat melakukan aksi kepada


(18)

pemain dan sebaliknya pemain dapat melakukan aksi kepada pemain lawan yang sesuai dengan aturan permainan. Karakter lain adalah lawan yang harus dikalahkan oleh pemain dengan cara melakukan aksi (penyerangan). Fungsi AI disini adalah pada karakter antagonis yang dapat melakukan aksi-aksi yang dapat memperbesar karakter tersebut untuk menang.

2. Karakter pendukung

Karakter pendukung merupakan karakter yang terlibat dalam permainan tetapi tidak memiliki tujuan untuk memenangkan permainan tetapi melakukan peran yang mendukung pemain atau lawan untuk memenangkan permainan. Sebagai contohnya, pada game tertentu umumnya memberikan informasi kepada karakter mengenai hal-hal yang berkaitan dengan cerita dalam permainan untuk menentukan dialog dengan pemain.

Teori dalam sebuah pertandingan merupakan suatu kajian tentang bagaimana para pemain harus bermain dengan rasional. Setiap pemain berusaha mendapatkan point sebanyak mungkin. Yang menjadi dasar ide dari teori permainan adalah perilaku strategis dari pemain atau pengambil keputusan.

Setiap pemain dianggap mempunyai suatu perencanaan dimana dia bisa memilih kalau kita memiliki suatu set strategi untuk setiap situasi yang muncul dalam suatu permainan yang digunakan untuk memutuskan tindakan yang akan diambil selanjutnya.

Ada beberapa hal yang menentukan permainan, yaitu :

1. The number of player (jumlah pemain). Suatu permainan dibangun oleh 2 orang. Bila ada sejumlah n pemain yang bermain, maka disebut permainan sejumlah n orang.

2. The net winning of the game (keuntungan bersih dari permainan). Suatu permainan zero-sum adalah ketika keuntungan bersih sama dengan nol.


(19)

3. Fairness of the game (sikap adil dalam permainan). Sebuah permainan yang tidak condong ke salah satu pemain dalam memberikan suatu kemenangan.

2.2 Game Congklak

Congklak merupakan suatu permainan tradional yang yang dimainkan oleh 2 orang dengan menggunakan media papan. Biasanya dalam permainan ini menggunakan batu atau sejenis kulit kerang yang digunakan sebagai alat permainan [8].

Papan congklak terdiri dari sejumlah lubang kecil dan dual bang besar yang terdapat di masingmasing tiap ujung papan. Setiap pemain memiliki daerahnya sendiri. Pada awal permainan, semua lubang yang ada dipapan diisi dengan jumlah yang lubang yang sama (batu, biji atau kerang). Jumlah isi di setiap lubang biasanya sama dengan jumlah lubang di salah satu sisi. Tujuan dari permainan ini adalah untuk mengumpulkan isi lubang sendiri dan mengosongkan isi lubang lawan yang ada di papan permainan. Pemain yang memenangkan permainan adalah pemain yang mengumpulkan batu / kulit kerang terbanyak.

2.2.1 Sejarah Perkembangan Permainan Congklak

Congklak memiliki asal-usul dalam baik Afrika atau dunia Arab, tergantung pada teori sarjana Anda memilih untuk percaya. Beberapa bukti tertua ditemukan di National Geographic disponsori penggalian arkeologi dating kembali ke 7.000 menjadi 5.000 SM di zaman sekarang Yordania. Penggalian sebuah rumah menemukan sebuah lempengan batu kapur dengan dua baris paralel depresi melingkar. Tata letak adalah mudah dikenali oleh seorang arkeolog pada penggalian sebagai dewan bermain Congklak. Murray, seorang sarjana mencatat, menelusuri asal-usul untuk Usia Kekaisaran Mesir kuno (sekitar 15 sampai abad 11 SM). Banyak ahli menduga bahwa Congklak mungkin sebenarnya papan permainan tertua yang pernah ada.[8]


(20)

Tulisan-tulisan paling awal tercatat menggambarkan permainan yang ditemukan di referensi dalam teks-teks agama Mancala Arab ke Abad Pertengahan. Beberapa sarjana percaya bahwa permainan berasal dari Timur Tengah dan menyebar dari sana ke Afrika. Kemudian, permainan menyebar ke Asia dengan pedagang Arab dan datang ke Karibia sekitar 1.640 melalui perdagangan budak Afrika. Ahli lain menempatkan asal-usul di Afrika Tengah.[8]

Saat ini, game ini dikenal dengan berbagai nama di seluruh dunia. Nama-nama yang diambil dari budaya lokal dengan menggunakan kata-kata yang mencerminkan di mana permainan ini dimainkan, cara untuk menang, modus dari bermain dan papan atau counter digunakan. Hal ini disebut dalam bahasa Inggris saat Count dan Capture.[8]

Di negara-negara Arab, nama yang paling umum adalah Mancala (makna kata Arab dalam bahasa Inggris "bergerak"). Di beberapa negara Afrika Barat yang depresi di papan disebut sebagai Warri atau Awari, yang berarti rumah, sehingga memberikan yang Wari nama. Di Nigeria permainan dikenal sebagai Adi, yang juga merupakan nama dari bibit yang digunakan untuk bermain game. Karena popularitas yang luasnya, para penggemar telah mengembangkan situs web banyak mendokumentasikan berbagai versi dari permainan, untuk daftar link yang baik untuk banyak situs-situs, lihat http://www.cs.uu.nl/~hansb/d.gam/ mancala.html. Lain situs web yang baik, http://www.myriad-online.com/en/resources/awalink.html, daftar 279 nama dari permainan yang ditemukan melalui penelitian mereka. Ketika Anda surfing melalui situs-situs web, itu menarik untuk melihat bagaimana masing-masing negara atau budaya memiliki adat istiadat yang berkaitan dengan pembuatan papan, yang bisa bermain, serta bagaimana dan kapan permainan ini dimainkan.[8]

Beberapa fitur situs on-line versi dari permainan juga, jika Anda ingin bermain dengan penggemar lain di seluruh dunia. Pada topik congklak online, telah menyarankan bahwa game congklak terinspirasi mungkin mulai muncul di


(21)

kasino online, yang sudah menawarkan permainan tradisional seperti sic bo dan Baccarat.

Permainan ini sangat populer sehingga Museum British Museum Manusia menampilkan sebuah pameran Mancala, Wari dan papan Congklak lain bermain pada tahun 1997.[8]

2.2.2 Congklak Di Indonesia

Bahkan di Indonesia, Congklak dikenal dengan nama yang berbeda dari daerah ke daerah. Nama yang paling umum, Congklak, diambil dari shell cowrie, yang biasa digunakan untuk bermain game. Di Malaysia, permainan ini dikenal sebagai Congkak, nama yang digunakan dalam provinsi Sumatera juga banyak. Di Jawa, permainan ini dikenal sebagai Congklak, dakon, dhakon atau dhakonan.Di Lampung, permainan ini disebut, dentuman lamban. Di Sulawesi, permainan ini disebut sebagai Mokaotan, Maggaleceng, Aggalacang dan Nogarata.[8]

Referensi historis untuk congklak merujuk pada permainan yang dimainkan oleh gadis-gadis muda dari bangsawan Jawa.Hal ini paling mungkin bahwa pedagang asing, karena kontak dekat mereka dengan kelas atas, diperkenalkan Congklak kepada mereka. Dengan berlalunya waktu, popularitas congklak tumbuh sampai sekarang yang banyak dimainkan oleh rakyat biasa juga. Di sebagian besar wilayah, Congklak bermain terbatas pada gadis-gadis muda, remaja dan wanita di waktu luang mereka dan dilihat sebagai 'permainan wanita'. Dalam beberapa daerah adalah Congklak dimainkan oleh laki-laki dan anak laki-laki juga.Berikut gambar dari papan Congklak.


(22)

Gambar 2.1. Papan Game Congklak

Di Sulawesi, historis, permainan disediakan untuk bermain hanya selama periode berduka, setelah kematian orang yang dicintai. Ini dianggap tabu untuk bermain game pada waktu lainnya. Di Jawa Tengah, pada masa pra-sejarah kali, Congklak digunakan oleh petani untuk menghitung musim, untuk mengetahui kapan harus menanam dan panen, serta untuk memprediksi masa depan.[8]

2.2.3 Aturan Permainan Congklak

Permainan dimulai dengan menyetujui siapa yang akan mulai. Para pemain memilih salah satu lubang di sisi sendiri dengan yang berisi setiap lubang. Pemain mengambil biji dari lubang dan menempatkan mereka satu-per-satu di lubang sebelah lubang awal, dengan cara berlawanan arah. Penuhi setiap lubang dengan biji yang dipilih (dengan diasumsikan bahwa setiap pemain sepakat untuk memilih tiga sampai tujuh biji dan tiga sampai tujuh lubang untuk dimainkan). Jangan menempatkan biji-biji tersebut di mangkuk (lubang yang besar), karena mangkuk adalah lubang induk besar yang terletak diujung paling kiri dan kanan di lubang papan pemain. Jika counter (biji dalam benggaman) terakhir dimasukkan ke dalam mangkok pemain, pemain bisa memilih lubang baru dari sisi sendiri dan bergerak lagi. Ketika lubang terakhir dari langkah tersebut dimasukan ke dalam lubang kosong di sisi pemain, maka lubang papan yang berlawanan ditangkap dan dimasukkan ke dalam mangkok dan giliran pemain berakhir. Tetapi ketika counter


(23)

terakhir dimasukkan ke dalam lubang kosong di sisi lawan, maka giliran permain berakhir tanpa mendapatkan nilai karena berakhir tanpa penangkapan.[8]

Memulai permainan

1. Permainan di mulai dengan menentukan siapa yang bermain.

Gambar 2.2 Papan Congklak pada posisi awal

2. Semua pemain harus mengambil semua biji yang terdapat pada salah satu lubang papan miliknya dan menjatuhkannya satu demi satu biji ke setiap lubang papan pemain yang dilaluinya

3. Pada setiap putaran, masing-masing pemain harus menjatuhkan satu biji ke mangkuk miliknya tetapi ia tidak boleh menjatuhkan biji ke mangkuk (lubang yang besar pada papan) lawannya.

4. Apabila pemain menjatuhkan biji terakhir di mangkuk maka pemain diijinkan untuk mengambil biji kembali di lubang milik pemain.


(24)

Awal dari giliran silih berganti

1. Setiap pemain memulai gilirannya dengan mengambil seluruh biji yang ada pada salah satu dari salah satu lubang miliknya dan dan menjatuhkannya satu demi satu ke lubang papan yang dilaluinya.

2. Jika pemain menjatuhkan biji terakhir ke lubang kosong miliknya dimana pemain lawan masih memiliki biji dalam lubang papannya maka ia akan mengambil semua semua biji lawan termasuk biji yang baru dimasukannya dan meneruskan permainannya dinamakan kondisi

“Tembak”.

Gambar 2.4 Papan Congklak Ketika saat Terjadi Tembak


(25)

3. Apabila salah seorang pemain menjatuhkan biji terakhir ke lubang kosong milik lawan, maka giliran pemain tersebut berakhir.

Gambar 2.6 Papan Congklak ketika biji terakhir di lubang lawan

Akhir Permainan :

1. Jika biji di lubang lawan dan lubang miliknya sudah kosong maka permainan berhenti.

Gambar 2.7 Papan Congklak untuk Akhir Permainan

2. Pemain yang berhasil mendapatkan biji paling banyak di mangkuknya berarti pemain tersebut menang biji.


(26)

2.3 Konsep Dasar Algoritma

Sebuah algoritma merupakan deskripsi-deskripsi langkah-langkah pelaksanaan suatu proses. Sebuah proses dikerjakan oleh pemrosesan berdasarkan algoritma yang diberikan. Setiap langkah penyelesaian dinyatakan dengan sebuah pernyataan yang menggambarkan suatu aksi. Bila suatu aksi dieksekusi, maka sejumlah operasi yang sesuai akan dikerjakan oleh pemroses dimana efek dari pengerjaan suatu aksi dapat diamati dengan melihat perbandingan keadaan pada saat aksi tersebut dimulai dan selesai dikerjakan.

Algoritma berasal dari kata algorism, menurut para ahli bahwa kata

algorism berasal dari nama penulis buku arab yang terkenal, yaitu Abu Ja’far

Muhammad ibnu musa al-Khuwarizmi (al-Khuwarizmi dibaca orang barat menjadi algorism) Al-Khuwarizmi menulis buku yang berjudul kitab al-jabar wal

muqabala, yang artinya “buku pemugaran dan pengurangan” (the book of restoration and reduction). Perubahan kata algorism menjadi algorithm muncul karena kata algorism sering dikelirukan dengan dengan arithmetic, sehingga akhiran –sm berubah menjadi –thm. Karena perhitungan dengan angka arab sudah menjadi hal yang biasa, maka lambat laun kata algorithm berangsurangsur digunakan sebagai metode perhitungan (komputasi)secara umum, sehingga makna aslinya menjadi hilang.[9]

Dalam kecerdasan buatan (AI) terdapat empat teknik pemecahan masalah yaitu, searching, reasoning, planning dan learning. Keempat metode tersebut memiliki metode masing-masing dalam penyelesaian masalah. Penggunaan teknik dan metode tergantung kepada permasalahan yang akan diselesaikan. Suatu teknik dengan metode tertentu sangat bagus untuk masalah A tetapi belum tentu sesuai untuk masalah B atau C.

2.4 Analisis Algoritma

Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus (efisien), algoritma yang bagus adalah algoritma yang mangkus. Kemangkusan


(27)

algoritma diukur dari berapa jumlah waktu dan ruang (space) memori yang dibutuhkan untuk menjalankannya. Algoritma yang mangkus ialah algoritma yang meminimumkan kebutuhan waktu dan ruang. Kebutuhan waktu dan ruang suatu algoritma bergantung pada ukuran masukan (n), yang menyatakan jumlah data yang diproses. Kemangkusan algoritma dapat digunakan untuk menilai algoritma yang terbaik. Model kebutuhan perhitungan waktu dapat dilihat dari beberapa faktor

1. Dapat mengukur waktu yang diperlukan oleh sebuah algoritma dengan menghitung banyaknya operasi/instruksi yang dieksekusi.

2. Jika mengetahui besaran waktu (dalam satuan detik) untuk melaksanakan sebuah operasi tertentu, maka kita dapat menghitung berapa waktu sesungguhnya untuk melaksanakan algoritma tersebut.

3. Tergantung pada kecepatan komputer, kualitas program, dan compiler. 4. Running time dihitung berdasarkan operasi dasar.

Analisis algoritma dilakukan untuk mengetahui seberapa baik sebuah algoritma diimplementasikan untuk menyelesaikan suatu kasus. Penilaian terhadap algoritma melibatkan analisis algoritma sehingga terdapat 2 (dua) tipe analisis algoritma :

1. Aspek kualitatif

Aspek kualitatif yaitu analisis untuk memeriksa kebenaran algoritma. Analisis dengan aspek kualitatif dilakukan dengan penelusuran algoritma, dilakukan penelusuran logik menggunakan teknik matematika untuk membuktikan kebenaran atau implementasi algoritma atau mengujinya dengan data. Sebagai contoh adalah algoritma pengurutan data (sorting) tidak dapat disebut sebagai algoritma pengurutan jika algoritma tidak dapat mengurutkan sembarang masukan barisan data.


(28)

2. Aspek kuantitatif

Aspek kuantitatif yaitu analisis terhadap efisiensi algoritma. Aspek kuantitatif dilakukan dengan melakukan perhitungan kompleksitas komputasi (waktu) dan ruang. Aspek kuantitatif mencoba mengukur seberapa besar sumber daya yang diperlukan suatu algoritma 2 (dua) sumber daya yang diukur adalah kecepatan bekerja algoritma dan ruang yang diperlukan untuk bekerja. Notasi untuk menyatakan kinerja antara lain adalah big-oh (O) yaitu waktu komputasi algoritma berbanding terhadap satu fungsi tertentu. Big-O biasanya hanya dinyatakan dengan suku yang paling berarti dan menghilangkan konstanta pengalinya. Jadi O((n2-n)/2) hanya dinyatakan dengan O(n2).

Adapun tiga cara yang dapat dilakukan dalam melakukan analisis algoritma, yaitu :

1. Analisis untuk memeriksa kebenaran algoritma.

2. Analisis efisiensi algoritma (kompleksitas komputasi dan ruang). 3. Analisis optimalitas algoritma.

Berikut akan dijelaskan satu persatu cara untuk menganalisis performansi algoritma.

2.4.1 Analisis Kebenaran Algoritma

Untuk menguji kebenaran suatu algoritma maka hal yang dapat dilakukan antara lain :

1. Penelusuran algoritma

2. Penelusuran logik (assertion) 3. Implementasi algoritma 4. Pengujian dengan data


(29)

Analisis kebenaran algoritma juga sering dimasukkan sebagai proses validasi algoritma.

2.4.2 Analisis Efisiensi Algoritma

Dalam analisis efisiensi algoritma terdapat 2 (dua) fase, yaitu :

1. A priori analysis

Fase ini bertujuan untuk menemukan fungsi (beserta parameter-parameter yang relevan) yang membatasi waktu komputasi algoritma.

Adapun notasi matematika yang digunakan untuk menunjukkan hasil :

a. O-notation (Big-O) b. Ω-notation

c. Θ-notation

2. A posteriori testing

Pada fase ini dikumpulkan statistik nyata konsumsi waktu dan ruang suatu algoritma pada mesin dan bahasa pemrograman tertentu.

Tujuan dari dilakukannya fase ini dalah untuk :

Menentukan jumlah waktu dan ruang penyimpanan yang diperlukan program. Kegunaan dari fase ini adalah untuk memvalidasi a priori analysis.

2.5 Algoritma Pencarian

Dalam ilmu komputer, sebuah algoritma pencarian dijelaskan secara luas adalah sebuah algoritma yang menerima masukan berupa sebuah masalah dan menghasilkan sebuah solusi untuk masalah tersebut, yang biasanya didapat dari evaluasi beberapa kemungkinan solusi. Sebagian besar algoritma yang dipelajari


(30)

oleh ilmuwan komputer adalah algoritma pencarian. Himpunan semua kemungkinan solusi dari sebuah masalah disebut ruang pencarian. Algortima pencarian brute-force atau pencarian naif/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.

2.5.1 Macam-Macam Algoritma Pencarian

Ada 3 bagian dalam metode pencarian yaitu yang pertama adalah metode yang sederhana yang berusaha mencari kemungkinan penyelesaian. Yaitu metode deep-first search, hill climbing, breadth-first search, beam search dan best-first search. Kemudian metode yang kedua adalah metode yang lebih kompleks dalam pencarian jarak terpendek melalui metode British Museum Procedure, Branch and Bound, Dynamic Programming, dan A*. dan yang terakhir adalah metode yang diterapkan ketika berhadapan dengan musuh. Dimana metode ini sering digunakan dalam program permainan tic-tac toe, catur dll yaitu Minimax Search dan Alpha Beta Prunning.


(31)

Metode pencarian sangat penting untuk perencanaan karena dalam sebuah permainan akan menentukan apa yang harus dilakukan dimana setiap state (keadaan) yang menggambarkan suatu posisi dalam penyelesaian masalah. Mendefinisikan masalah sebagai suatu ruang keadaan yang dideskripsikan melalui tahapan-tahapan berikut, yaitu :

1. Mendefinisikan suatu ruang keadaan

2. Menerapkan satu atau lebih keadaan yang awal 3. Menetapkan satu atau lebih tujuan

4. Menetapkan aturan kumpulan

2.5.1.1 DFS(Depth First Search)

Depth-First Search (DFS) merupakan algoritma pencarian yang paling umum digunakan. DFS akan melakukan pencarian pada pohon dengan cara menelusuri suatu jalur tertentu hingga mencapai kedalaman yang paling akhir (leaf node) terlebih dahulu sebelum melanjutkan ke jalur selanjutnya. Jika DFS telah mencapai leaf node tetapi belum menemukan goal state maka DFS akan melakukan proses backtrack ke node teratas yang belum pernah ditelusuri. Penelusuran pada pohon permainan akan dilakukan hingga DFS menemukan goal state atau telah selesai menelusuri keseluruhan pohon permainan. Pada Gambar 2.9 mengilustrasikan tentang bagaimana cara kerja algoritma DFS.


(32)

Gambar 2.9 penelusuran pohon permainan dengan DFS(Ben Coppin, 2004)

Pada Gambar 2.9 dapat diketahui bahwa proses penelusuran DFS dimulai dari A-B-D-G-D-H-D-B-A-C-E-I-J. A merupakan root yang menandakan keadaan belum diambil, lalu ditelusuri hingga kedalaman yang paling dalam sebelah kiri yaitu G, lalu melakukan proses backtrack ke D lalu lanjut lagi ke H. Proses tersebut berhenti karena telah mencapai goal state yaitu leaf node G.

2.5.1.2 Algoritma Minimax

Algoritma minimax merupakan salah satu pencarian yang dapat diterapkan untuk pencarian solusi dalam suatu game. Minimax pertama kali dikembangkan oleh John Von Neumann pada tahun 1944 dengan menguraikan sebuah algoritma search pada game yang dikenal dengan Minimax atau Minimize the maximum possible loss. Minimax merupakan algoritma yang melihat beberapa langkah ke depan, dengan cara melakukan pencarian pada pohon permainan yang menyimpan nilai pada setiap simpul.


(33)

“Untuk setiap permainan zero-sum dengan dua pemain dan strategi yang terbatas, ada sebuah nilai V dan strategi tertentu untuk setiap pemain sedemikian sehingga dengan strategi dari pemain-2, pemain-1 dapat memperoleh nilai terbaik V dan sebaliknya dengan strategi dari pemain-1, pemain-2 dapat memperoleh nilai terbaik –V.” [5]

Artinya, pemain-1 harus memperoleh nilai V untuk memenangkan permainan dan pemain-2 harus memperoleh nilai –V untuk memenangkan permainan. Nilai 0 menunjukkan bahwa permainan seri, dan nilai-nilai lain di antara –V dan V menunjukkan pemain yang lebih dominan atau menguasai permainan (peluang untuk menang lebih besar).

Pada metode pencarian sebelumnya pada blind search tidak terdapat nilai di setiap simpul pohon pencarian, komputer akan memeriksa setiap simpul yang ada, sedangkan dalam metode pencarian Heuristik, pohon pencarian telah memiliki nilai disetiap simpulnya, akan tetapi fungsi Heuristik saja tidak cukup untuk memenangkan permainan, oleh karena itu diperlukan sebuah metode tambahan agar computer lebih cerdas menentukan keputusan.

Algoritma Minimax merupakan algoritma dasar pencarian DFS untuk melakukan traversal dalam pohon. DFS akan mengekspansi simpul paling dalam terlebih dahulu. Setelah simpul akar dibangkitkan, algoritma ini akan membangkitkan simpul pada tingkat kedua, yang akan dilanjutkan pada tingkat ketiga, dst. Dalam melakukan traversal, misalkan dimulai dari suatu simpul i, maka simpul selanjutnya yang akan dikunjungi adalah simpul tetangga j, yang bertetangga dengan simpul k, selanjutnya pencarian dimulai lagi secara rekursif dari simpul j. Ketika telah mencapai simpul m, di mana semua simpul yang bertetangga dengannya telah dikunjungi, pencarian akan dirunutbalik ke simpul terakhir yang dikunjungi sebelumnya dan mempunyai simpul j yang belum dikunjungi. Selanjutnya pencarian dimulai kembali dari j. Ketika tidak ada lagi simpul yang belum dikunjungi yang dapat dicapai dari simpul yang telah dikunjungi maka pencarian selesai. Untuk proses dan cara kerja algoritma yang


(34)

lebih jelasnya lagi, dapat dilihat pada Gambar 2.11 yang merepresentasikan cara kerja algoritma Minimax.

Gambar 2.10 Ilustrasi Cara kerja Algoritma Minimax

Dari Gambar 2.10, proses pencarian dimulai dari jalur paling kiri terlebih dahulu, sehingga DFS akan menelusuri simpul paling kiri bawah yaitu 5. Nilai 5 disimpan sebagai nilai maksimum sementara karena berada di tingkat max, kemudian DFS melakukan backtrack dan menelusuri simpul yang bertetangga dengan simpul 5 yaitu simpul 2. Karena nilai 5 lebih besar dari nilai 2, maka nilai 2 tidak disimpan. Lalu DFS akan melakukan backtrack ke tingkat min sehingga nilai 5 yang diperoleh akan disimpan sebagai nilai minimum sementara. Untuk simpul 1 dan 3, nilai 3 yang akan disimpan karena merupakan nilai maksimum di tingkat max. Saat mencapai tingkat min, sudah ada nilai minimum sementara yaitu 5, namun karena nilai 3 lebih kecil daripada nilai 5, maka nilai 5 akan digantikan dengan nilai 3. Nilai 3 akan disimpan sebagai nilai maksimum sementara di tingkat paling atas karena merupakan tingkat max. Lalu penelusuran jalur kanan akan dilakukan dengan cara yang sama seperti penelusuran jalur kiri sehingga diperoleh nilai 6. Karena nilai maksimum sementara pada tingkat paling atas adalah nilai 3, maka nilai 3 akan digantikan dengan nilai 6 karena nilai 6 lebih besar daripada nilai 3. Dengan demikian, jalur yang akan dipilih menggunakan


(35)

algoritma Minimax adalah jalur sebelah kanan karena untuk kondisi terburuknya, penulis akan mendapatkan nilai 6 sedangkan jika penulis memilih jalur kiri, penulis hanya akan mendapatkan nilai 3.

Algoritma minimax mencari solusi terbaik dengan “melihat ke depan”

hingga ke akhir permainan dan memutuskan atau memilih langkah yang harus diambil saat itu untuk mencapai solusi tersebut. Nilai terbaik bisa bisa terdapat pada posisi Max ataupun pada posisi Min, dalam artian bahwa mengikuti posisi Min bukan berarti akan terjebak dalam kondisi minimum, melainkan penandaan Max dan Min bertujuan untuk member identitas langkah pemain. Misal ketika lawan yaitu human mengikuti dengan cara mencari nilai min, maka bisa dipastikan adalah bahwa human adalah pintar, karena langkah Max setelah Min atau Min setelah Max telah diramalkan oleh computer dengan mencari node simpul nilai heuristic terbesar. Minimax pada permain congklak digunakan untuk menemukan nilai akurat sebuah posisi papan dari permainan congklak. Dengan mengasumsikan bahwa kedua pemain selalu mengambil langkah terbaik pada setiap posisi.

2.5.1.2.1 Pohon pelacakan(Search Tree)

Struktur pohon digunakan untuk menggambarkan keadaan secara hirarkis, dari suatu proses pelacakan node secara berulan. Node yang terletak pada level-0 disebut juga akar, yang menunjukan keadaan awal biasanya merupakan topic atau objek yang terletak pada level-0. Node akar memiliki beberapa percabangan yang terdiri dari node successor yang disebut juga anak yang merupakan perantara. Node yang tidak memiliki anak disebut node daun yang merupakan akhir dari suatu pencarian dapat berupa sebuah tujuan yang di capai (goal), atau juga


(36)

jalanbuntu (dead end). Untuk lebih jelasnya digambarkan dibawah ini :

Gambar 2.11 contoh struktur pohon (tree)

Pada gambar di atas simpul S merupakan simpul awal dimulainya penelusuran dan simpul Z merupakan simpul yang akan menjadi tujuan.

Pohon pencarian dalam algoritma Minimax bertugas untuk melakukan pncarian seluruh kemungkinan langkah permainan (panjang cabang pohon ditenntukan oleh level permainan). Dalam langkah congklak, setiap simpul pohon pencarian dapat berupa posisi papan congklak yang mungkin untuk komputer.

2.5.1.2.2 Fungsi Evaluasi Heuristik

Heuristik adalah criteria, metode, atau prinsip-prinsip untuk menentukan pilihan dai sejumlah altenatif mencapai sasaran dengan efektif. Heuristik dipergunakan untuk mempersempit ruang pelacakan. Algoritma Minimax mampu menganalisa segala kemungkinan posisi permainan untuk menghasilkan keputusan terbaik. Algoritma Minimax bekerja secara rekursif dengan mencari langkah yang akan di hitung dengan algoritma yang sama dan seterusnya. Dalam penentuan keputusan langkah minimum dan maksimum dibutuhkan suatu nilai


(37)

yang merepresentasikan kerugian dan keuntungan yang akan diperoleh jika langkah tersebut dipilih.

Algoritma Minimax menggabungkan fungsi evaluasi heuristik dengan pengetahuan yang sedemikian higga dimiliki oleh komputer. pengetahuan yang dimaksud adalah strategi memenangkan permainan. Strategi ini akan diubah ke dalam bentuk heuristik. Strategi ini akan dipengaruhi oleh 2 faktor dalam permainan Congklak yaitu kondisi tembak dan jumlah biji yang ada di dalam mangkuk pemain dan lawan.

2.5.1.3 Alpha Beta Pruning

Untuk membantu memangkuskan algoritma minimax, dapat digunakan beberapa algoritma seperti alpha-beta pruning. Alpha beta pruning merupakan algoritma yang mengurangi jumlah simpul yang harus diproses pada algoritma

minimax. Algoritma ini “memotong” simpul yang sedang diproses jika ditemukan

bahwa Alpha-Beta Pruning akan memotong simpul yang tidak perlu diproses yang artinya simpul tersebut belum tentu akan lebih baik dari pada simpul sebelumnya.

Gambar 2.12 Tree kondisi awal pada alpha beta pruning algoritma

Node pertama pada leaf dengan nilai 5, naik ke parent level 2 masukkan nilai 5, hampiri 8, karena 8 > 5 maka ganti parent dengan 8 hampiri 3. Setelah ketiga leaf pertama terhampiri, naik lebih tinggi lagi ke level 1 masukan nilai 8. Hampiri node keempat dengan pada leaf dengan nilai 9, naik ke parent level 2 masukan nilai 9. Jika kita menghampiri leaf berikutnya, kita mencari nilai yang


(38)

lebih tinggi dari 9, sementara pada level 1 kita mencari yang lebih kecil dari 8, maka leaf 3 dan 1 kita potong. Dengan cara seperti itu maka akan didapatkan hasil akhir dari tree, yang dapat dilihat dari gambar dibawah ini :

Gambar 2.13 Tree untuk hasil metode Alpha betta pruning

Kompleksitas pencarian dari algoritma alpha-beta ini adalah O(bd/2) dibandingkan dengan kompleksitas algoritma minimax biasa yaitu O(bd). Jadi, jika pada algoritma minimax diproses 400 simpul, maka dengan adanya algoritma alpha-beta, simpul yang diproses hanya 20 buah saja.

Manfaat dari Alpha-Beta pruning terletak pada kenyataan bahwa cabang-cabang pohon pencarian dapat dihilangkan. Dengan cara ini, waktu pencarian dapat dibatasi pada 'lebih menjanjikan' subtree, dan pencarian yang lebih dalam dapat dilakukan dalam waktu yang sama. Seperti pendahulunya, dimiliki branch dan bound dari class algoritma. Optimasi mengurangi kedalaman efektif untuk sedikit lebih dari setengah dari minimax, jika node dievaluasi dalam urutan yang mendekati optimal (pilihan terbaik untuk sisi bergerak adalah pertama di setiap node).

Biasanya selama alpha-beta, subpohon untuk sementara didominasi oleh baik keunggulan pemain pertama (ketika banyak bergerak pemain pertama yang baik, dan pada setiap kedalaman pencarian langkah pertama diperiksa oleh pemain pertama memadai, tapi semua tanggapan pemain kedua yang diperlukan untuk


(39)

mencoba untuk menemukan penyangkalan), atau sebaliknya. Keuntungan ini dapat beralih sisi berkali-kali selama pencarian jika langkah memesan tidak benar, setiap kali menyebabkan inefisiensi. Sebagai jumlah posisi dicari menurun secara eksponensial setiap langkah lebih dekat posisi saat ini, ada baiknya menghabiskan banyak upaya pada menyortir bergerak lebih awal. Sebuah semacam ditingkatkan pada setiap kedalaman eksponensial akan mengurangi jumlah posisi dicari, namun menyortir semua posisi pada kedalaman dekat akar relatif murah karena ada begitu sedikit dari mereka. Dalam prakteknya, langkah memesan sering ditentukan oleh hasil sebelumnya, pencarian yang lebih kecil, seperti melalui iteratif pendalaman.

Variabel alpha (α) digunakan sebagai batas bawah node max, sedangkan

variabel beta (β) digunakan sebagai batas atas node min. Pada node min, evaluasi akan dihentikan apabila telah didapat node anak yang memiliki nilai lebih kecil

dibanding dengan nilai batas bawah (α), sebaliknya pada node max evaluasi akan dihentikan apabila telah didapat node anak yang memiliki nilai lebih besar

dibanding dengan nilai batas atas (β). Pada root pohon pencarian, nilai α ditetapkan sama dengan -∞ sedangkan nilai β diset sama dengan +∞. Node yang

melakukan maksimasi akan memperbaiki nilai α dari nilai anak-anaknya, sedangkan node yang melakukan minimasi akan memperbaiki nilai β dari nilai anak-anaknya. Jika α > β, maka evaluasi dihentikan [12]. Selain itu, algoritma ini dapat dimodifikasi sepele untuk mengembalikan seluruh modal variasi selain skor. Beberapa algoritma yang lebih agresif seperti MTD (f) tidak mudah mengizinkan seperti modifikasi.

2.6 Flowchart

Flowchart adalah penggambaran secara grafik dari langkah-langkah dan urut-urutan prosedur dari suatu program. Flowchart menolong analis dan programmer untuk memecahkan masalah kedalam segmen-segmen yang lebih kecil dan menolong dalam menganalisis alternatif-alternatif lain dalam


(40)

pengoperasian. Ada beberapa petunjuk yang harus diperhatikan bagi seseorang analis atau programmer dalam membuat flowchart yaitu :

1. Flowchart digambarkan dari halaman atas ke bawah dan dari kiri ke kanan. 2. Aktivitas yang digambarkan harus didefinisikan secara hati-hati dan definisi

ini harus dapat dimengerti oleh pembacanya.

3. Kapan aktivitas dimulai dan berakhir harus ditentukan secara jelas.

4. Setiap langkah dari aktivitas harus diuraikan dengan menggunakan deskripsi kata kerja, misalkan “Menghitung Pajak Penjualan”.

5. Setiap langkah dari aktivitas harus berada pada urutan yang benar.

6. Lingkup dan range dari aktifitas yang sedang digambarkan harus ditelusuri dengan hati-hati. Percabangan-percabangan yang memotong aktivitas yang sedang digambarkan tidak perlu digambarkan pada flowchart yang sama. Simbol konektor harus digunakan dan percabangannya diletakan pada halaman yang terpisah atau hilangkan seluruhnya bila percabangannya tidak berkaitan dengan sistem.

7. Gunakan simbol-simbol flowchart yang standar.

Flowchart terbagi dalam lima jenis yaitu :

1. Flowchart Sistem (System Flowchart)

2. Flowchart Paperwork / Flowchart Dokumen (Document Flowchart) 3. Flowchart Skematik (Schematic Flowchart)

4. Flowchart Program (Program Flowchart) 5. Flowchart Proses (Process Flowchart)

Simbol-simbol flowchart yang biasanya dipakai adalah simbol-simbol flowchart standar yang dikeluarkan oleh ANSI dan ISO.


(41)

28

3.1 Analisis Masalah

Permainan congklak merupakan permainan yang diperlukan strategi dan kemampuan matematika untuk bisa memenangkan permainan. Umumnya congklak menggunakan papan dengan 16 lubang yang diantaranya adalah 7 lubang masing-masing untuk menyimpan biji yang berjumlah 7, sedangkan kedua lubang besar digunakan untuk menampung biji yang dihasilkan milik pemain. Penelitian ini pemain diijinkan untuk memilih jumlah lubang yang diinginkan yang akan dibatasi hingga 7 lubang agar dalam percobaan ujinya bisa dinamis dan terlihat hasil dari perbedaannya, dengan banyaknya lubang maka akan semakin lama permainan berlangsung dan akan lebih diperlukan kemampuan yang lebih dalam perhitungan matematika untuk memilih biji mana yang akan diambil, dan pada penelitian sebelumnya pun menjelaskan bahwa komputer akan sangat lama merespon jika jumlah lubang yang digunakan banyak.

Penelitian sebelumnya hanya menggunakan algoritma Minimax, namun pada penelitian sebelumnya memiliki kelemahan karena algoritma Minimax memiliki kelemahan dalam waktu eksekusi yang dibutuhkan sebanding dengan jumlah leaf-nya. Sehingga jika jumlah leaf-nya lebih besar, maka permasalahan akan semakin kombionatorik, oleh karena itu untuk mengoptimalkannya akan menggunakan algoritma Alpha-Beta Pruning, serta jalan permainan congklak pada penelitian sebelumnya tidak searah dengan jarum jam yang akan ditunjukan pada gambar 3.1 di bawah ini.


(42)

Gambar 3.1 Representasi Matriks Penelitian Sebelumnya

Uraian di atas yang telah disampaikan akan menganalisis beberapa hal yang diperlukan dalam penelitian dalam BAB 3 ini yaitu analisis algoritma Minimax dan algoritma Alpha-Beta Pruning, algoritma Minimax akan digunakan pada proses pencarian solusi pada permainan Congklak yang akan menentukan langkah awal yang akan memberikan kesempatan untuk mendapatkan kemenangan lebih besar, sedangkan algoritma Alpha-Beta pruning akan digunakan untuk proses pemotongan simpul yang tidak perlu diproses pada saat pencarian solusi, serta untuk menggambarkan keadaan secara hirarkis untuk algoritma Minimax dengan Optimasi Alpha-Beta Pruning ini akan dilakukan dengan menggambarkan sebuah pohon pencarian (search tree) dengan menggunakan DFS(depth-first-search), dan untuk menghasilkan keputusan terbaik maka akan dilakukan sebuah fungsi evaluasi heuristik untuk membandingkan nilai-nilai heuristik pada Minimax.

3.2 Alur Permainan pada Congklak

Subbab ini akan menjelaskan alur dari keseluruhan permainan yang berdasarkan pada aturan-aturan permainan congklak yang akan ditunjukan dengan menggunakan flowchart pada gambar 3.2 di bawah ini.


(43)

Start

Papanawal,Jumlah_lubang,jum lah_biji, lubang, biji, tmp,tmp1

pilih_pemain, level, counter,I,j, main, tembak.

pilih_pemain==1 && Level && Jumlah_biji && Jumlah_lubang

“State Papan Awal :”

tidak ya

“Pilih indeks lubang ke : “

counter > 0 || j > size(papanawal,2) tidak

papanawal(i,j) = papanawal(i,j)+i counter=counter-1

ya

tmp == 3 || tembak == 1 || jumlah_biji == 0 ||

ya

tidak

jalan heuristik

minimax_alpha

hitung_mangkuk “pemenang : “ end papan1=ones(2,lubang); papanawal=biji*papan1 papanawal(i,j)=0 tidak ya pilihlubang=lubang_ke tmp=papanawal(i,j) counter=tmp tmp1=papanawal(i,j)

main = 2

Gambar 3.2 Flowchort Keseluruhan Permanainan pada Congklak

Gambar 3.2 di atas menjelaskan alur dari keseluruhan permainan congklak. Aturan-aturan congklak mengacu pada dakon asli jawa seperrti yang telah dijelaskan di BAB 2, namun akan sedikit diubah atau dimodifikasi aturan-aturan dari congklak yang akan dijelaskan pada subbab berikutnya. Dalam keseluruhan


(44)

permainannya jika pemain memilih komputer bermain pertama maka akan masuk ke prosedur jalan arti jalan disini adalah membuat pohon pencarian terlebih dahulu, kemudian akan menghitung heuristiknya seteelah dilakukan heuristik maka akan masuk ke algoritma Minimax dengan Alpha-Beta Pruning. Pada algoritma Minimax dan Alpha-Beta Pruning akan dianalisis dengan kompleksitas algritma dengan menggunakan Big O yang akan dijelaskan pada subbab di bawah.

3.2.1 Aturan Permainanan Congklak

Aturan-aturan permainan congklak telah dijelaskan pada BAB 2, namun tidak semua cara di terapkan dalam model permainan congklak yang dikembangkan menggunakan algoritma Minimax dengan Optimasi Alpha-Beta Pruning. Congklak adalah permainan yang dimainkan oleh 2 orang. adapun asumsi aturan-aturan bermain Congklak yaitu sebagai berikut :

1. Permainan dimainkan oleh dua pemain yaitu, pemain human dan pemain computer.

2. Awal permainan :

a. Pemain bisa memilih level yang akan dimainkan. Terdapat tiga level

yaitu “Mudah” dengan dibatasi 3 kedalaman, “Sedang” dengan dibatasi 6 kedalaman, dan “Sulit” akan dibatasi hingga kedalaman 10.

b. Pemain bisa memilih jumlah lubang yang akan dimainkan. c. Pemain bisa memilih siapa yang akan bermain pertama.

3. Ketika permainan dimulai pemain memilih biji pada lubang miliknya dan menjatuhkan satu persatu biji tersebut ke lubang miliknya searah jarum jam, dan menjatuhkan biji ke mangkuk miliknya.

4. Proses “Tembak”, yaitu pada proses ini jika pemain menjatuhkan biji terakhirnya di lubang miliknya yang kosong maka pemain dapat mengambil biji di lubang lawan yang sejajar dan dimasukan ke mangkuk miliknya dan jika menjatuhkan biji terakhirnya di lubang milik pemain walaupun di lubang milik lawan yang sejajar tidak terdapat biji maka biji terakhir yang dijatuhkan tersebut akan masuk ke dalam mangkuk pemain.


(45)

5. Akhir giliran pemain terdapat 3 kondisi yaitu :

a. Jika biji terakhir yang dijatuhkan pemain berada pada lubang kosong miliknya dan sudah mengambil 3 kali biji maka gilirannya berakhir. b. Jika biji terakhir yang dijatuhkan pemain berada pada lubang kosong

milik lawan maka gilirannya berakhir.

c. Pemain sudah mengambil biji sebanyak 3 kali.

6. Akhir permainan, permainan dikatakan selesai jika tidak adalagi biji yang terdapat di lubang milik pemain human atau pemain computer dan pemain dikatakan menang jika jumlah biji yang terdapat di mangkuknya mendapatkan jumlah terbanyak, yang akan ditunjukan pada flowchart di bawah ini.

start

Mangkuk_c, mangkuk_h,

pemenang

Mangkuk_c > mangkuk_h

Mangkuk_c == mangkuk_h

Mangkuk_c < mangkuk_h

ya

tidak

tidak

Pemenang=mangkuk_c

Pemenang=mangkuk_h Pemenang=0 ya

ya

end

“pe e a g adalah “,


(46)

Gambar 3.3 Flowchort Hitung mangkuk

3.3 Tahapan Analisis Algoritma

Sub-bab ini akan menjelaskan tahapan-tahapan apa saja untuk analisis algoritma pada permainan congklak yang akan ditunjukan dengan block diagram pada gambar di bawah 3.3 ini.

Inputan Inisialisasi masukan Biji dan Lubang

Pencarian Kemungkinan

Langkah

Perhitungan Nilai Heuristik

Perhitungan Big O

Hasil Membandingkan

Nilai Heuristik

Gambar 3.4 Tahapan Analisis Algoritma pada Permainan Congklak

Gambar 3.4 di atas menjelaskan tahapan-tahapan analisis algoritma mulai dari menentukan biji dan lubang yang akan dimasukan serta level untuk menganalisis algoritma Minimax dan Minimax optimasi Alpha-Beta Pruning yang akan di cari kemungkinan-kemungkinan langkah dari permainan congklak dengan pohon pencarian, kemudian dari level dapat dilihat batas dari kedalaman pohon pencarian dari setiap level yang ditentukan, dari level kedalamannya dapat dihitung nilai heuristiknya pada akar dari level kedalaman, setelah itu dibandingkan nilai heuristiknya dengan menggunakan algoritma Minimax dan


(47)

Alpha-Beta Pruning untuk mendapatkan solusi atau langkah. Kemudian dicari perhitungan BigO-nya untuk mengetahui kompleksitas dari suatu algoritma, setelah menganalisis keempat tahapan tersebut kemudian di dapat sebuah hasil dari analisis yang telah dilakukan. Tahapan-tahapan di atas akan dijelaskan pada sub-bab selanjutnya.

3.3.1 Pencarian Kemungkinan-kemungkinan langkah

Pohon pencarian untuk menggambarkan semua kemungkinan posisi dan langkah-langkah yang dapat dicapai dalam sebuah game. Alur pohon pencariannya akan ditunjukan dengan flowchart di bawah ini.

tmp == 3 || jumlah_biji == 0 ||

tembak == 1 tidak ya

heuristik() kedalaman == z

main == 2

tidak ya

start

end

Papanawal,Jumlah_lubang,ju mlah_biji, lubang, biji, tmp,tmp1 pilih_pemain, level,

counter,I,j, main, tembak,z, kedalaman

j=j+1

papanawal(i,j) = papanawal(i,j)+i counter=counter-1

tidak

ya

“State Papan :” main = 2

z = 1

tmp=papanawal(i,j) papanawal(i,j)=0

counter=tmp

main = 1

Gambar 3.5 Flowchort Pohon Pencarian

Gambar 3.5 di atas menjelaskan bagaimana pohon pencarian dibentuk, pohon pencarian akan dilakukan dengan penelusuran DFS(depth-first-search)


(48)

karena pada dasarnya algoritma Minimax merupakan perkembangan dari algoritma DFS, algoritma Minimax untuk melakukan pencariannya akan ditelusuri setiap simpul mulai dari simpul kiri selanjutnya ke bawah dan apabila solusinya belum ditemukan maka akan kembali ke atas kemudian membandingkan nilai yang ada pada simpul-simpul tetangganya dan seterusnya hingga batas kedalaman yang telah ditentukan hingga menemukan solusi, metode penelusuran pencarian pohon ini sama dengan DFS, pohon pencarian pada algoritma Minimax bertugas untuk melakukan pencarian seluruh kemungkinan langkah permainan (panjang cabang pohon ditentukan oleh level permainan). Dalam permainan congklak, setiap simpul pohon pencarian dapat berupa posisi papan congklak yang mungkin. Serta untuk Optimasi Alpha-Beta Pruning ini bertugas untuk memangkas simpul-simpul yang mungkin tidak perlu diproses pada saat pencarian.

Pohon pencarian hanya akan dilakukan pada pemain “Komputer” saja.

Untuk simulasi permainan congklak akan disimulasikan menggunakan state matrix yang merupakan papan dari Congklak dimana untuk baris pertama merupakan papan komputer dan baris kedua merupakan papan lawan, untuk mangkuknya akan ada 2 kotak yaitu yang terdapat di kiri dan kanan yang menyatakan jumlah biji dari mangkuk pemain, serta akan menggunakan lubang yang bejumlah 3, 4, 5, 6, dan 7, serta biji 3, 4, 5, 6, dan 7, untuk analisisnya hanya akan dilakukan pada permainan congklak dengan 3 lubang dan 6 biji pada level

“Mudah” dengan 3 kedalaman yang akan dituangkan ke dalam gambar dan tabel. 3.3.1.1 Analisis Pohon Pencarian 3 lubang 6 Biji

Pohon pencarian pada papan Congklak dengan 3 lubang dan 6 biji yang akan digambarkan di bawah ini dengan level mudah dengan 3 kedalaman.


(49)

Gambar 3.6 Pohon Pencarian dengan 3 lubang 6 biji pada 3 kedalaman

Gambar 3.6 di atas merupakan pohon pencarian untuk Minimax pada congklak untuk jalan komputer. Warna-warna yang ada di state matriks keterangan akan di jelaskan di bawah ini.


(50)

3.3.1.2 Perhitungan Nilai Heuristik

end start

mangkuk_c, mangkuk_h, tembak

hi = (level3(mangkuk_c – mankuk_h)+tembak+

(level3(mangkuk_c)-level2(mangkuk_c))

kedalaman == z jalan

heuristik = hi ya

tidak mangkuk_c=(1, lubang+2)

mangkuk_h=2(lubang+2) tembak=0

Gambar 3.7 Flowchart Perhitungan Nilai Heuristik

Gambar 3.7 menjelaskan alur untuk menghitung heuristiknya yang di mulai dengan meload pohon pencarian yang sudah di record dan pada level 3 di dalam programnya akan di cek jumlah biji pada pemain human dan pemain komputer kemudian akan di hitung sesuai rumus.

Sebuah Fungsi Evaluasi Heuristik dapat ditentukan dengan melihat ke dalam beberapa faktor, proses menghitung fungsi evaluasi heuristik dilakukan dengan melihat 3 faktor penting dalam congklak yaitu:

1. Jumlah biji yang terdapat dalam mangkuk pemain komputer dan lawan. 2. Kondisi kemungkinan tembak dalam satu state, dan jika ada kondisi


(51)

3. Dan biji komputer sebelum permainan berjalan yaitu biji komputer yang ada dalam mangkuk pada level 3 dikurangi dengan biji komputer pada level 2.

Rumus fungsi evaluasi heuristik pada Minimax untuk permainan congklak mengacu pada 3 faktor di atas yang merupakan total dari beberapa heuristik, rumusnya yaitu sebagai berikut :

H = hi

� �=1

Dimana,

1. H= Total jumlah nilai heuristik permainan congklak 2. hi= Jumlah nilai heuristik dari kondisi tertentu 3. n= Total/batas heuristik

Proses menghitung heuristik akan berjalan dengan baik setelah dilakukan formulasi heuristik, formulasi heuristik adalah mengubah heuristik ke dalam sebuah fungsi yang dapat dibaca oleh komputer, berikut adalah rumus-rumus heuristik dari beberapa kondisi.

1. Total jumlah biji di mangkuk komputer pada akar kedalaman h1 = mangkuk_c – mangkuk_h

Ket :

h1 = Jumlah biji dalam mangkuk

Mangkuk_c = jumlah biji di mangkuk komputer Mangkuk_h = jumlah biji di mangkuk human 2. Kondisi Tembak

h2 = Kondisi tembak Ket :

h2 adalah kondisi tembak jika ada kondisi tembak maka bernilai 1 dan jika tidak bernilai 0


(52)

h3 = levelhi(mangkuk_c – mangkuk_c) h3 = jumlah biji di mangkuk komputer

levelhi = level sebelum akar kedalaman

Dalam pohon pencarian pada penjelasan sebelumnya pada subbab 3.3.1.1 akan dihitung nilai heuristik yang akan dihitung pada akar kedalaman yang akan ditunjukan pada gambar di bawah ini.

Gambar 3.8 Pohon Pencarian dengan Nilai Heuristik

Gambar 3.8 di atas memperlihatkan pohon pencarian yang telah diperoleh nilai heuristiknya, untuk cara menghitungnya akan dimisalkan dengan setiap simpul dimisalkan dengan diberikan abjad.


(53)

Adapun cara perhitungan evaluasi heuritiknya yaitu sebagai berikut.

A.

Gambar di atas merupakan matriks state untuk akar C1, sebelum dihitung untuk akar C1 akan dilihat terlebih dahulu jumlah biji yang ada pada mangkuk komputer kemudian setelah mendapatkan jumlah biji dari mangkuk Komputer, mangkuk lawan di cek jumlah bijinya, setelah mengecek jumlah biji yang terdapat di mangkuk Komputer dan lawan maka di cek apakah akar

C1 terdapat kondisi Tembak atau tidak jika ada maka bernilai “1” jika tidak maka bernilai “0”, kemudian di cek jumlah mangkuk komputer pada akar

kedalaman di kurangi dengan parent-nya atau level seelumnya. Setelah di cek maka tahap selanjutnya adalah menghitung heuristiknya, caranya adalah seperti berikut :

Cara menghitung heuristik akar C1 :

h1 = 8-0 =8 h2 = 0 h3 = 8-6 = 2

Nilai Heuristik C1 adalah Hi = h1+h2+h3 = 10.

B.

Gambar di atas merupakan matriks state untuk akar C2, sebelum dihitung untuk akar C2 akan dilihat terlebih dahulu jumlah biji yang ada pada mangkuk komputer kemudian setelah mendapatkan jumlah biji dari mangkuk Komputer, mangkuk lawan di cek jumlah bijinya, setelah mengecek jumlah biji yang terdapat di mangkuk Komputer dan lawan maka di cek apakah akar C2 terdapat kondisi Tembak atau tidak jika ada maka bernilai “1” jika tidak

maka bernilai “0”, kemudian di cek jumlah mangkuk komputer pada akar


(54)

maka tahap selanjutnya adalah menghitung heuristiknya, caranya adalah seperti berikut :

Cara menghitung heuristik akar C1 :

h1 = 8-0 =8 h2 = 1 h3 = 8-6 = 2

Nilai Heuristik C2 adalah Hi = h1+h2+h3 = 11.

C.

Gambar di atas merupakan matriks state untuk akar C3, sebelum dihitung untuk akar C3 akan dilihat terlebih dahulu jumlah biji yang ada pada mangkuk komputer kemudian setelah mendapatkan jumlah biji dari mangkuk Komputer, mangkuk lawan di cek jumlah bijinya, setelah mengecek jumlah biji yang terdapat di mangkuk Komputer dan lawan maka di cek apakah akar

C3 terdapat kondisi Tembak atau tidak jika ada maka bernilai “1” jika tidak maka bernilai “0”, kemudian di cek jumlah mangkuk komputer pada akar

kedalaman di kurangi dengan parent-nya atau level seelumnya. Setelah di cek maka tahap selanjutnya adalah menghitung heuristiknya, caranya adalah seperti berikut :

Cara menghitung heuristik akar C1 : h1 = 9-0 =9

h2 = 1 h3 = 9-6 = 3

Nilai Heuristik C3 adalah Hi = h1+h2+h3 = 13.

D.

Gambar di atas merupakan matriks state untuk akar D3, sebelum dihitung untuk akar D3 akan dilihat terlebih dahulu jumlah biji yang ada pada mangkuk komputer kemudian setelah mendapatkan jumlah biji dari mangkuk Komputer, mangkuk lawan di cek jumlah bijinya, setelah mengecek jumlah


(55)

biji yang terdapat di mangkuk Komputer dan lawan maka di cek apakah akar

D3 terdapat kondisi Tembak atau tidak jika ada maka bernilai “1” jika tidak maka bernilai “0”, kemudian di cek jumlah mangkuk komputer pada akar

kedalaman di kurangi dengan parent-nya atau level seelumnya. Setelah di cek maka tahap selanjutnya adalah menghitung heuristiknya, caranya adalah seperti berikut :

Cara menghitung heuristik akar D1 :

h1 = 14-0 =14 h2 = 1

h3 = 14-6 = 8

Nilai Heuristik C3 adalah Hi = h1+h2+h3 = 23.

E.

Gambar di atas merupakan matriks state untuk akar D2, sebelum dihitung untuk akar D2 akan dilihat terlebih dahulu jumlah biji yang ada pada mangkuk komputer kemudian setelah mendapatkan jumlah biji dari mangkuk Komputer, mangkuk lawan di cek jumlah bijinya, setelah mengecek jumlah biji yang terdapat di mangkuk Komputer dan lawan maka di cek apakah akar

D2 terdapat kondisi Tembak atau tidak jika ada maka bernilai “1” jika tidak maka bernilai “0”, kemudian di cek jumlah mangkuk komputer pada akar

kedalaman di kurangi dengan parent-nya atau level seelumnya. Setelah di cek maka tahap selanjutnya adalah menghitung heuristiknya, caranya adalah seperti berikut :

Cara menghitung heuristik akar D2 :

h1 = 8-0 =8 h2 = 0 h3 = 8-6 = 2


(56)

F.

Gambar di atas merupakan matriks state untuk akar D3, sebelum dihitung untuk akar D3 akan dilihat terlebih dahulu jumlah biji yang ada pada mangkuk komputer kemudian setelah mendapatkan jumlah biji dari mangkuk Komputer, mangkuk lawan di cek jumlah bijinya, setelah mengecek jumlah biji yang terdapat di mangkuk Komputer dan lawan maka di cek apakah akar

D3 terdapat kondisi Tembak atau tidak jika ada maka bernilai “1” jika tidak maka bernilai “0”, kemudian di cek jumlah mangkuk komputer pada akar

kedalaman di kurangi dengan parent-nya atau level seelumnya. Setelah di cek maka tahap selanjutnya adalah menghitung heuristiknya, caranya adalah seperti berikut :

Cara menghitung heuristik akar D3 : h1 = 8-0 =0

h2 = 0 h3 = 8-6 =2

Nilai Heuristik D3 adalah Hi = h1+h2+h3 = 10.

G.

Gambar di atas merupakan matriks state untuk akar E1, sebelum dihitung untuk akar E1 akan dilihat terlebih dahulu jumlah biji yang ada pada mangkuk komputer kemudian setelah mendapatkan jumlah biji dari mangkuk Komputer, mangkuk lawan di cek jumlah bijinya, setelah mengecek jumlah biji yang terdapat di mangkuk Komputer dan lawan maka di cek apakah akar E1terdapat

kondisi Tembak atau tidak jika ada maka bernilai “1” jika tidak maka bernilai “0”, kemudian di cek jumlah mangkuk komputer pada akar kedalaman di kurangi dengan parent-nya atau level seelumnya. Setelah di cek maka tahap selanjutnya adalah menghitung heuristiknya, caranya adalah seperti berikut : Cara menghitung heuristik akar E1 :

h1 = 14-0 =0 h2 = 1


(57)

Nilai Heuristik E1 adalah Hi = h1+h2+h3 = 22.

H.

Gambar di atas merupakan matriks state untuk akar E2, sebelum dihitung untuk akar E2 akan dilihat terlebih dahulu jumlah biji yang ada pada mangkuk komputer kemudian setelah mendapatkan jumlah biji dari mangkuk Komputer, mangkuk lawan di cek jumlah bijinya, setelah mengecek jumlah biji yang terdapat di mangkuk Komputer dan lawan maka di cek apakah akar

E2 terdapat kondisi Tembak atau tidak jika ada maka bernilai “1” jika tidak maka bernilai “0”, kemudian di cek jumlah mangkuk komputer pada akar

kedalaman di kurangi dengan parent-nya atau level seelumnya. Setelah di cek maka tahap selanjutnya adalah menghitung heuristiknya, caranya adalah seperti berikut :

Cara menghitung heuristik akar E2 : h1 = 10-0 =10

h2 = 0

h3 = 10-7 = 3

Nilai Heuristik E2 adalah Hi = h1+h2+h3 = 13.

I.

Gambar di atas merupakan matriks state untuk akar G1, sebelum dihitung untuk akar G1 akan dilihat terlebih dahulu jumlah biji yang ada pada mangkuk komputer kemudian setelah mendapatkan jumlah biji dari mangkuk Komputer, mangkuk lawan di cek jumlah bijinya, setelah mengecek jumlah biji yang terdapat di mangkuk Komputer dan lawan maka di cek apakah akar

G1 terdapat kondisi Tembak atau tidak jika ada maka bernilai “1” jika tidak maka bernilai “0”, kemudian di cek jumlah mangkuk komputer pada akar

kedalaman di kurangi dengan parent-nya atau level seelumnya. Setelah di cek maka tahap selanjutnya adalah menghitung heuristiknya, caranya adalah seperti berikut :


(58)

h1 = 16-0 =16 h2 = 0

h3 = 16-14 = 3

Nilai Heuristik G1 adalah Hi = h1+h2+h3 = 18.

J.

Gambar di atas merupakan matriks state untuk akar G2, sebelum dihitung untuk akar G2 akan dilihat terlebih dahulu jumlah biji yang ada pada mangkuk komputer kemudian setelah mendapatkan jumlah biji dari mangkuk Komputer, mangkuk lawan di cek jumlah bijinya, setelah mengecek jumlah biji yang terdapat di mangkuk Komputer dan lawan maka di cek apakah akar

G2 terdapat kondisi Tembak atau tidak jika ada maka bernilai “1” jika tidak maka bernilai “0”, kemudian di cek jumlah mangkuk komputer pada akar kedalaman di kurangi dengan parent-nya atau level seelumnya. Setelah di cek maka tahap selanjutnya adalah menghitung heuristiknya, caranya adalah seperti berikut :

Cara menghitung heuristik akar G2 : h1 = 17-0 =17

h2 = 0

h3 = 17-14 = 3

Nilai Heuristik G2 adalah Hi = h1+h2+h3 = 20.

K.

Gambar di atas merupakan matriks state untuk akar G3, sebelum dihitung untuk akar G3 akan dilihat terlebih dahulu jumlah biji yang ada pada mangkuk komputer kemudian setelah mendapatkan jumlah biji dari mangkuk Komputer, mangkuk lawan di cek jumlah bijinya, setelah mengecek jumlah biji yang terdapat di mangkuk Komputer dan lawan maka di cek apakah akar

G3 terdapat kondisi Tembak atau tidak jika ada maka bernilai “1” jika tidak maka bernilai “0”, kemudian di cek jumlah mangkuk komputer pada akar kedalaman di kurangi dengan parent-nya atau level seelumnya. Setelah di cek


(59)

maka tahap selanjutnya adalah menghitung heuristiknya, caranya adalah seperti berikut :

Cara menghitung heuristik akar G3 : h1 = 16-0 =16

h2 = 0

h3 = 16-14 = 2

Nilai Heuristik G1 adalah Hi = h1+h2+h3 = 18.

L.

Gambar di atas merupakan matriks state untuk akar H1, sebelum dihitung untuk akar H1 akan dilihat terlebih dahulu jumlah biji yang ada pada mangkuk komputer kemudian setelah mendapatkan jumlah biji dari mangkuk Komputer, mangkuk lawan di cek jumlah bijinya, setelah mengecek jumlah biji yang terdapat di mangkuk Komputer dan lawan maka di cek apakah akar

H1 terdapat kondisi Tembak atau tidak jika ada maka bernilai “1” jika tidak maka bernilai “0”, kemudian di cek jumlah mangkuk komputer pada akar kedalaman di kurangi dengan parent-nya atau level seelumnya. Setelah di cek maka tahap selanjutnya adalah menghitung heuristiknya, caranya adalah seperti berikut :

Cara menghitung heuristik akar H1 : h1 = 25-0 =25

h2 = 1

h3 = 25-15 = 0

Nilai Heuristik H1adalah Hi = h1+h2+h3 = 36.

M.

Gambar di atas merupakan matriks state untuk akar J1, sebelum dihitung untuk akar J1 akan dilihat terlebih dahulu jumlah biji yang ada pada mangkuk komputer kemudian setelah mendapatkan jumlah biji dari mangkuk Komputer, mangkuk lawan di cek jumlah bijinya, setelah mengecek jumlah biji yang terdapat di mangkuk Komputer dan lawan maka di cek apakah akar


(60)

J1 terdapat kondisi Tembak atau tidak jika ada maka bernilai “1” jika tidak maka bernilai “0”, kemudian di cek jumlah mangkuk komputer pada akar kedalaman di kurangi dengan parent-nya atau level seelumnya. Setelah di cek maka tahap selanjutnya adalah menghitung heuristiknya, caranya adalah seperti berikut :

Cara menghitung heuristik akar J1 : h1 = 17-0 =17

h2 = 1

h3 = 17-14 = 3

Nilai Heuristik J1 adalah Hi = h1+h2+h3 = 21.

N.

Gambar di atas merupakan matriks state untuk akar K1, sebelum dihitung untuk akar K1 akan dilihat terlebih dahulu jumlah biji yang ada pada mangkuk komputer kemudian setelah mendapatkan jumlah biji dari mangkuk Komputer, mangkuk lawan di cek jumlah bijinya, setelah mengecek jumlah biji yang terdapat di mangkuk Komputer dan lawan maka di cek apakah akar

K1 terdapat kondisi Tembak atau tidak jika ada maka bernilai “1” jika tidak

maka bernilai “0”, kemudian di cek jumlah mangkuk komputer pada akar kedalaman di kurangi dengan parent-nya atau level seelumnya. Setelah di cek maka tahap selanjutnya adalah menghitung heuristiknya, caranya adalah seperti berikut :

Cara menghitung heuristik akar K1 : h1 = 16-0 =16

h2 = 1

h3 = 16-14 = 2

Nilai Heuristik K1 adalah Hi = h1+h2+h3 = 19.

O.

Gambar di atas merupakan matriks state untuk akar K2, sebelum dihitung untuk akar K2 akan dilihat terlebih dahulu jumlah biji yang ada pada


(61)

mangkuk komputer kemudian setelah mendapatkan jumlah biji dari mangkuk Komputer, mangkuk lawan di cek jumlah bijinya, setelah mengecek jumlah biji yang terdapat di mangkuk Komputer dan lawan maka di cek apakah akar

K2 terdapat kondisi Tembak atau tidak jika ada maka bernilai “1” jika tidak maka bernilai “0”, kemudian di cek jumlah mangkuk komputer pada akar

kedalaman di kurangi dengan parent-nya atau level seelumnya. Setelah di cek maka tahap selanjutnya adalah menghitung heuristiknya, caranya adalah seperti berikut :

Cara menghitung heuristik akar K2: h1 = 17-0 =17

h2 = 0

h3 = 17-14 = 3

Nilai Heuristik K2 adalah Hi = h1+h2+h3 = 20.

3.3.1.3 Membandingkan Nilai Heuristik

Setelah menghitung heuristik maka tahap selanjutnya adalah membandingkan nilai-nilai heuristiknya pada algoritma Minimax dan Alpha-Beta Pruning hingga mendapatkan solusi, solusi yang di ambil oleh komputer adalah bukan pada level terakhir tapi pada level 1 karena pada analisis pohon pencariannya hanya untuk kemungkinan jalan komputer saja sampai kedalaman level yang dipilih oleh user ketika awal permainan. Karena untuk permainan congklak goal state yang diperoleh adalah dilihat dari banyaknya biji dalam mangkuk maka dibuat semua kemungkinan jalan untuk komputer yang nantinya akan menghasilkan biji lebih banyak dari lawan.

1. Membandingkan Nilai Heuristik pada Algoritma Minimax

Membandingkan nilai heuristik pada minimax akan dilakukan sesuai dengan alur algoritmanya yaitu diasumsikan Max akan selalu ada pada Komputer dan Min akan diasumsikan pada pemain Human, penelusurannya akan dilakukan secara DFS yaitu dimulai dari atas ke kiri kemudian ke bawah


(62)

hingga ke akar kemudian dibandingkan dan dilihat nilai heuristiknya kemudian naik ke atas kemudian di telusuri hingga ke kanan sampai mendapatkan solusi. Perbandingannya akan ditunjukan pada gambar 3.8 di bawah ini

Gambar 3.9 Membandingkan Nilai Heuristik pada Minimax

Gambar 3.9 akan membandingkan nilai heuristik, pertama penelusuran akan ditelusuri pada level 0 atau Max, kemudian ditelusuri ke kiri pada level 1 atau Min kemudian di telusuri pada level 2 atau Max,


(63)

kemudian pada level 3 yaitu C1 akan dievaluasi nilai heuristiknya yaitu h=10 setelah evaluasi penelusuran akan kembali ke atas kemudian disimpan nilai heuristiknya pada parent-nya yaitu level 2, kemudian dievaluasi nilai heuristiknya pada level 3 yaitu C2, nilai dari C2 yaitu h=10, setelah itu nilai heuristik dari C2 dibandingkan dengan nilai heuristik yang di dapat pada level 2 apabila C2 lebih besar dari pada parent-nya maka nilai heuristik pada level 2 diganti menjadi nilai heuristic yang di dapat dari C2 karena pada level 2

merupakan Max, karena Max akan selalu bernilai lebih besar ”>”, dan apabila

tidak maka nilai di parent-nya akan tetap dan tidak diubah, kemudian dibandingkan lagi pada simpul sebelahnya dan seterusnya, hingga mendapatkan solusi pada level 1 yaitu “F”, yang akan ditunjukan pada tabel 3.1 di bawah ini. Gambar 3.8 merupakan solusi untuk tabel dengan No.1 pada tabel 3.1.

Tabel 3.1 Hasil Permainan Congklak Algoritma Minimax 3 lubang dan 6 biji

No

Kasus Congklak Lubang 3 Biiji 6 pada Level Mudah

Pemain State Matrik

∑ pengambilan biji Total biji di mangkuk ∑ langkah algoritma ∑Langkah Dasar Nilai Heuristik 1

komputer 0 0 1 8 11 2x 11 50 30

20

0 0 8 8 0

human 0 0 4 11 11 3x 3 - - -

3 3 1 3 0

2

komputer 0 0 0 12 17 2x 17 28 16 19

3 0 0 4 0

human 0

1 0 12 17

1x 4 - - -

4 1 1 0 0

3

komputer 0 0 0 12 19 1x 19 10 6 24

4 1 0 0 0

human 0 0 0 12 19 1x 5 - - -

5 0 0 0 0


(64)

5 2 2 3

human 0 0 2 0 22 2x 7 - - -

7 5 0 0

No

Kasus Congklak Lubang 3 Biiji 6 pada Level Mudah

Pemain State Matrik

pengambilan biji

Total biji di mangkuk

langkah algoritma

∑Langkah

Dasar

Nilai Heuristik

5

komputer 0 0 0 0 24 2x 24 2 2 19

7 5 0 0 0

human 0 1 1 0 24 2x 10 - - -

10 0 0 0 0

6 komputer 0 0 0 0 26 1x 26 4 4 16

10 0 0 0 0

2. Membandingkan Nilai Heuristik pada Algoritma Minimax dengan Optimasi Alpha-Beta Pruning

Membandingkan nilai heuristik pada Alpha-Beta Pruning akan dilakukan sesuai dengan alur algoritmanya yaitu diasumsikan Max akan selalu ada pada Komputer dan Max akan selalu bernilai “α” karena alpha akan selalu bernilai lebih besar, Min akan diasumsikan pada pemain Human

dan akan selalu bernilai “β”, penelusurannya akan dilakukan dimulai dari atas ke kiri kemudian ke bawah hingga ke akar kemudian dibandingkan dan dilihat nilai heuristiknya kemudian naik ke atas kemudian di telusuri hingga ke kanan sampai mendapatkan solusi. Perbandingannya akan ditunjukan pada gambar di bawah ini


(65)

Gambar 3.10 Membandingkan Nilai Heuristik pada Minimax Optimasi Alpha-Beta Pruning

Gambar 3.10 akan membandingkan nilai heuristik, pertama

penelusuran akan ditelusuri pada level 0 atau ≥β/α>, kemudian ditelusuri ke

kiri pada level 1 atau ≤α/<β kemudian di telusuri pada level 2 atau ≥β/α>, kemudian pada level 3 yaitu C1 akan dievaluasi nilai heuristiknya yaitu h=8, kemudian nilai tersebut akan dibandingkan dengan parent-nya yaitu β apabila nilai tersebut lebih besar sama dengan beta maka simpul berikutnya akan di pruning apabila tidak maka akan di bandingkan dengan alpha apakah lebih


(1)

Hasil Uji Keseluruhan Level Mudah

Minimax

66 138 290 104 334 462 121 281 112 150 458

Lubang 3 Lubang 4 Lubang 5

L a n g k a h

Hasil Uji Keseluruhan Level Mudah Algoritma Minimax


(2)

Hasil Uji Keseluruhan pada Level Mudah

Minimax Optimasi Alpha-Beta Pruning

56 120 225 84 272 354 107 243 90 384 142

Lubang 3 Lubang 4 Lubang 5

L a n g k a h

Hasil Uji Keseluruhan Level Mudah Algoritma Minimax Optimasi Alpha-Beta Pruning


(3)

Kesimpulan Pengujian

1. Dari hasil pengujian yang dilakukan terhadap 25 sampel untuk setiap lubang dan biji, diperoleh bahwa langkah yang ditelusuri Minimax adalah lebih banyak dari Alpha-Beta Pruning, pada hasil uji di atas, langkah paling banyak di telusuri pada Algoritma Minimax adalah lubang dengan jumlah 5 pada biji 4 dan pada jumlah lubang 4 pada biji 7, yaitu 462 dan 458 yang terdapat pada tabel 4.10 dan tabel 4.13, sedangkan pada Algoritma Alpha-Beta pruning adalah 384 dan 354 dalam level mudah, sedangkan pada level sedang pada lubang 4 dengan biji 5 berjumlah 646 dengan begitu dengan semakin banyak jumlah lubang, biji, dan level maka akan semakin banyak penelusuran langkah yang dibutuhkan oleh komputer

2. Dari langkah tersebut terlihat perbeedaan dari Minimax dan Alpha-Beta Pruning, bahwa Alpha-Beta Pruning lebih sedikit penelusuran langkahnya yaitu rata-rata 30% dari Minimax. Penelitian ini terbukti bahwa Minimax yang di optimasi Alpha-Beta Pruning lebih cepat dari pada Minimax tanpa Optimasi.


(4)

Kesimpulan

Algoritma Minimax optimasi Alpha-Beta yang dianalisis dan di uji coba pada BAB IV telah membuktikan bahwa algoritma Minimax dalam penelusuran langkahnya berbeda dalam jumlah langkahnya dengan Minimax optimasi Alpha-beta pruning, dengan semakin banyaknya lubang maka pencarian kemungkinan-kemungkinan langkah akan semakin banyak sehingga akan memakan waktu lama, Dari hasil pengujian yang dilakukan terhadap 25 sampel untuk setiap lubang dan biji, dengan begitu dengan semakin banyak jumlah lubang dan biji maka akan semakin banyak penelusuran langkah yang dibutuhkan oleh komputer dan dari langkah tersebut terlihat perbeedaan dari Minimax dan Alpha-Beta Pruning bahwa Alpha-Beta Pruning lebih sedikit penelusuran langkahnya yaitu sebesar 30% dari Minimax. Penelitian ini terbukti bahwa Minimax yang di optimasi Alpha-Beta Pruning lebih cepat dari pada Minimax tanpa Optimasi.


(5)

Saran

Dalam analisis Algoritma penelitian ini masih jauh dari

sempurna dan masih banyak kekurangan. Oleh karena itu

perlu dilakukan analisis yang lebih dalam. Adapun sarannya,

yaitu Untuk penelitian selanjutnya akan lebih baik jika

menggunakan algoritma yang lebih cepat dari Minimax atau

Alpha-beta pruning agar permainan komputer lebih handal

dan cepat.


(6)