Perbandingan Penerapan Algoritma Minimax Dengan Algoritma Alpha-Beta Pruning Pada Permainan Othello
ABSTRAK
Saat ini kecerdasan buatan atau Artificial Intelligence (AI) digunakan untuk memecahkan berbagai masalah, salah satunya adalah memecahkan permasalahan dalam permainan papan atau board games. Algoritma minimax dan alpha-beta pruning contohnya untuk memecahkan masalah pada board game. Algoritma ini mengasumsikan bahwa setiap langkah yang diambil merupakan langkah terbaik disetiap posisi. Pada penulisan ini membahas penerapan algoritma minimax dengan algoritma alpha-beta pruning pada permainan othello.
Tujuannya adalah untuk membandingkan dan menerapkan algoritma minimax dan algoritma alpha-beta pruning pada permainan othello.
Kata Kunci: Algoritma minimax, Algoritma alpha-beta pruning, Board Game, Othello.
1. PENDAHULUAN
Artificial Intelligence (AI) atau kecerdasan buatan merupakan bagian dari ilmu pengetahuan komputer yang ditujukan untuk perancangan otomatisasi tingkah laku cerdas dalam sistem kecerdasan komputer.
Dengan demikian diharapkan komputer bisa menirukan beberapa fungsi otak manusia, seperti berpikir dan belajar. Kecerdasan merupakan kemampuan untuk memperoleh, mengerti dan menggunakan kemampuan yang dimilikinya untuk menyelesaikan persoalan yang dihadapinya.
Definisi kecerdasan buatan atau biasa disebut Artificial Intelligence (AI) adalah suatu studi bagaimana membuat agar komputer dapat melakukan sesuatu sebaik yang dikerjakan oleh manusia ( Kusumadewi, 2003) . AI sering digunakan untuk menyelesaikan masalah, misalnya pada board game. Board game adalah permainan yang dimainkan pada papan yang dirancang khusus. Dengan menggunakan AI, komputer dapat bertindak seperti manusia dalam menyelesaikan suatu permasalahan. Supaya komputer bisa bertindak seperti dan sebaik manusia, maka komputer juga harus diberi
T. Arie Setiawan P.
Fakultas Teknologi Informasi Universitas Kristen Satya Wacana
Salatiga 50711 [email protected]
Jasson Prestiliano Fakultas Teknologi Informasi Universitas Kristen Satya Wacana
Salatiga 50711 [email protected]
Sylvester Raymond Fakultas Teknologi Informasi Universitas Kristen Satya Wacana
Salatiga 50711
[email protected]
bekal pengetahuan dan mempunyai kemampuan untuk menalar. AI sudah mempunyai beberapa metode untuk membekali komputer dengan pengetahuan dan kemampuan untuk menalar, sehingga komputer bisa menjadi mesin yang pintar dalam memecahkan suatu permasalahan.
Salah satu permasalahan yang dapat diselesaikan dengan metode AI adalah permainan othello. Othello ditemukan oleh Hasegawa Goro pada tahun 1945.
Permainan othello dimainkan pada arena papan kotak-kotak persegi dengan koin hitam dan koin putih di atas arena, ukuran papan permainan othello adalah 8 x 8. Pada awal permainan diletakkan dua koin hitam dan dua koin putih. Koin warna putih harus melewati koin warna hitam agar koin warna hitam dapat diubah menjadi koin putih, dan sebaliknya.
Algoritma minimax adalah algoritma yang bekerja secara rekursif dengan mencari langkah yang akan membuat lawan mengalami kerugian maksimum dan kerugian minimum untuk diri sendiri.
Algoritma alpha-beta pruning melakukan pencarian yang mengurangi secara drastis jumlah simpul dengan melakukan pruning yaitu mengeliminasi simpul yang tidak perlu diproses. Algoritma alpha-beta pruning
sendiri adalah pengembangan dari algoritma minimax. Algoritma alpha-beta pruning mengurangi jumlah simpul yang dieksplorasi algoritma minimax. Oleh karena itu menjadi menarik untuk menganalisa perbandingan algoritma minimax dan algoritma alpha-beta pruning pada permainan othello.
Permasalahan yang ingin dikaji pada penelitian ini adalah bagaimana menerapkan algoritma minimax dengan algoritma alpha- beta pruning pada permainan othello.
Tujuan utamanya adalah menerapkan algoritma minimax dengan algoritma alpha- beta pruning pada permainan othello dan manfaat dari penelitian ini dapat menjadi referensi, bahan pembanding atau dasar bagi penelitian yang lain. Pada penelitian ini terdapat tiga batasan masalah yaitu algoritma yang dibandingkan adalah algoritma minimax dan algoritma alpha-beta pruning, tingkat kedalaman (depth) maksimal yang diteliti adalah tujuh, dan kinerja yang dibandingkan adalah waktu.
2. LANDASAN TEORI
Penelitian yang sudah dilakukan berjudul Game Playing untuk Othello dengan Menggunakan Algoritma Negascout dan MTDF (Rich & Knight, 1991).
Negascout adalah salah satu metode
pencarian minimax dengan berasumsi bahwa langkah pertama yang diambil merupakan langkah terbaik, sedangkan sisanya merupakan langkah terburuk. Jika terdapat langkah yang terbaik dari langkah pertama maka akan dilakukan proses research.
MTDF yang menggunakan upperbound dan lowerbound bekerja dengan melakukan pemanggilan alpha-beta with memory secara berulang-ulang. Proses pruning banyak dihasilkan dengan menggunakan bound ini.
Percobaan dilakukan dengan mempertandingkan algoritma negascout
melawan MTDF, yang akan dievaluasi melalui edge table, mobility, potential mobility atau frontier dan penguasaan corner. Edge table digunakan untuk menyimpan nilai mobility dengan mengevaluasi satu sisi papan, semakin banyak nilai mobility maka akan semakin bagus karena semakin banyak pula langkah yang bagus yang dapat dimainkan. Potential mobility atau frontier menggunakan liberties untuk mengevaluasi jumlah disc yang berbatasan dengan petak kosong. Semakin banyak frontier maka akan semakin buruk karena lawan akan mendapat mobility tambahan dan juga akan mengurangi mobility yang akan didapat. Penguasaan corner juga sangat penting karena dengan menguasai wilayah corner memperbesar
kemungkinan kemenangan yang akan diraih (Gunawan, dkk, 2009).
2.1 Algoritma Minimax
Pada permainan othello, algoritma minimax digunakan untuk menemukan nilai akurat untuk sebuah posisi papan. Algoritma minimax mengasumsikan bahwa kedua pemain selalu mengambil langkah terbaik pada setiap posisi ( Russel, & Norvig, 2003) . Keuntungan yang didapat dengan menggunakan algoritma minimax yaitu algoritma minimax mampu menganalisis segala kemungkinan posisi permainan untuk menghasilkan keputusan yang terbaik karena algoritma minimax ini bekerja secara rekursif dengan mencari langkah yang membuat lawan mengalami kerugian maksimum. Semua strategi lawan dihitung dengan algoritma yang sama dan seterusnya.
Ini berarti, pada langkah pertama komputer
menganalisis seluruh pohon permainan. Dan
untuk setiap langkahnya, komputer akan
memilih langkah yang paling membuat
lawan mendapatkan keuntungan minimum,
dan yang paling membuat komputer itu
sendiri mendapatkan keuntungan maksimum
dapat dilihat pada Gambar 1.
Gambar 1 Ilustrasi Algoritma Minimax (Prabawa, 2009).
Pada Gambar 1, saat mencari nilai terbaik maka akan dieksplorasi pohon sebelah kiri terlebih dahulu, -1 didapat karena minimize dari -1 dan 2, -8 didapat karena minimize dari -8, 9, 4. Kemudian keputusan pun diambil yaitu nilai 7 karena maximize dari -1, 7, -8. Pseudocode dari algoritma Minimax ini dapat dilihat pada Kode 1.
Kode 1 Pseudocode Algoritma Minimax (Prabawa, 2009)
If (GameOver (M) or (depth > Maxdepth)) then
→ Evaluation (B, currentPlayer) If (not CanPlay (Player)) then
→ Minimax (M, depth, otherPlayer) Moves ← ValidMoves (Player)
if (Player = currentPlayer) then bestValue ← -99999999 else
bestValue ← 99999999 i traversal [1..moves.Count]
N ← CopyMatrix(M)
Move (N,
moves[i].x,moves[i].y,Player) Value ←
if (Player = currentPlayer) then if (Value > bestValue) then bestValue ← Value bestMove ← moves[i]
else
if (Value < bestValue) then bestValue ← Value bestMove ← moves[i]
if ( not EmptyMove (bestMove)) then Move(M, bestMove.x,bestMove.y, Player)
→bestValue
GameOver() adalah fungsi yang memeriksa apakah kondisi papan permainan menggambarkan akhir permainan.
Evaluation() adalah fungsi yang menghitung nilai sebuah simpul daun. CanPlay() adalah fungsi yang memeriksa apakah seorang pemain dapat bergerak. ValidMoves() adalah fungsi yang menghasilkan beberapa langkah yang dapat dilakukan seorang pemain. Sort() adalah fungsi yang mengurutkan isi langkah yang dapat diambil pemain. CopyMatrix() adalah fungsi untuk menyalin isi matriks.
Move() adalah fungsi yang mengesksekusi langkah seorang pemain pada papan permainan. EmptyMove() adalah fungsi yang memeriksa apakah sebuah langkah null atau tidak.
2.2 Algoritma Alpha-Beta Pruning
Alpha-beta pruning adalah sebuah cara untuk mengurangi jumlah simpul yang diekplorasi dalam algoritma minimax.
Dengan alpha-beta pruning, waktu yang
diperlukan dalam pencarian akan berkurang
dengan cara membatasi waktu yang
terbuang percuma pada saat mengevaluasi
pohon permainan. Implementasi alpha-beta
pruning akan memberikan jalur terbaik
dalam setiap kemungkinan permainan dalam pohon permainan yang terbentuk ( Prabawa, 2009 ).
Dalam algoritma alpha-beta pruning, urutan jalannya algoritma akan dimulai sama seperti algoritma minimax. Untuk simpul MIN, nilai yang dihitung dimulai dengan positif infinity (+infinity) dan akan menurun seiring jalannya permainan. Untuk simpul MAX, nilai akan dihitung mulai dengan minus infinity (-infinity) dan akan naik seiring berjalannya waktu. Efisiensi prosedur alpha-beta akan sangat tergantung pada urutan simpul berikutnya dari sebuah simpul yang sedang dieksplorasi. Jika beruntung, maka sebuah simpul MIN akan dianggap sebagai simpul dengan urutan nilai dari rendah ke tinggi, dan simpul MAX dari tinggi ke rendah. Secara umum, dapat diperlihatkan bahwa dalam kondisi yang terbaik, alpha-beta akan membuka jumlah terminal nodes yang sama dengan minimax dalam pohon permainan, dengan dua kali lipat tingkat kedalaman pohon.
Alpha-beta pruning adalah algoritma pencarian yang mengurangi secara drastis jumlah simpul yang dibangkitkan untuk dievaluasi pada pohon pencarian dengan algoritma minimax. Pruning adalah eliminasi simpul yang tidak perlu diproses saat pencarian.
Gambar 2 Ilustrasi Algoritma Alpha-Beta Pruning
(Prabawa, 2009)
Berdasarkan Gambar 2, pada saat program mencari nilai A, B dievaluasi dan didapatkan bahwa nilanya adalah enam (minimum dari 6 dan 9), kemudian C dievaluasi. Dari sana didapatkan bahwa nilai E adalah empat (maksimum dari 4 dan -2).
Karena C adalah Minimizer, dapat diketahui bahwa nilai C lebih kecil sama dengan empat (C≤4). Oleh karena itu, C tidak akan dipilih oleh A sebagai maksimum, karena A telah memiliki anak B dengan nilai enam, yang tentunya akan lebih besar daripada semua nilai C yang mungkin. Dengan demikian, mengevaluasi F dan G tidak perlu dilakukan, dan proses evaluasi C dapat dihentikan (pruned). Dan evaluasi dilanjutkan ke simpul D.
Hal yang sama dapat dilakukan bila
misalnya A bukan maximizer melainkan
minimizer. Secara umum dapat didefinisikan
batas bawah (lower bound / alpha) dan batas
atas (upper bound / beta) dari nilai sebuah
Mulai Permainan Keluar Permainan Pilih Credit
User
Pilih Instruction
simpul. Salah satu batas ini tidak berubah dalam simpul, dan bila nilai simpul tersebut melewati batas, simpul tersebut dapat dieliminasi. Batas yang satunya lagi berubah bila nilai simpul tersebut diubah.
Pseudocode dari algoritma Alpha-beta pruning yang merupakan hasil pengembangan dari algoritma minimax (Prabawa, 2009) dapat dilihat pada Kode 2.
Kode 2 Pseudocode Algoritma Alpha-beta Pruning (Prabawa, 2009)
If (GameOver (M) or (depth > Maxdepth)) then
→ Evaluation (B, currentPlayer) If (not CanPlay (Player)) then
→ AlphaBeta (M, depth, otherPlayer, alpha, beta)
Moves ← ValidMoves (Player) Sort (moves)
I traversal [1..moves.Count]
N ← CopyMatrix(M) Move (N,
moves[i].x,moves[i].y,Player) Value ←
AlphaBeta (N,depth+1, otherPlayer, alpha, beta)
if (Player = currentPlayer) then if (Value > alpha) then alpha ← Value bestMove ← moves[i]
if (alpha >= beta) then
→ alpha else
if (Value < beta) then beta ← Value
bestMove ← moves[i]
if (alpha >= beta) then
→ beta if ( not EmptyMove (bestMove)) then
Move(M, bestMove.x,bestMove.y, Player)
if (Player = currentPlayer) then
→ alpha else
→ beta