Analisis Algoritma Minimax Analisis Dan Implementasi Kecerdasan Buatan Pada Permainan Checker Menggunakan Algoritma Minimax Dengan Negascout

3.3 Analisis Algoritma Minimax

Algoritma Minimax merupakan salah satu implementasi dari pencarian DFS Depth- First Search dalam melakukan pencarian pada pohon. DFS akan menelusuri simpul paling dalam terlebih dahulu. Setelah simpul akar dibangkitkan, algoritma ini akan membangkitkan simpul pada tingkat kedua, yang akan dilanjutkan pada tingkat ketiga, dan seterusnya. Penulis akan menjelaskan cara kerja algoritma minimax dari contoh pohon permainan gambar 3.6. Gambar 3.6 Gambar proses perubahan nilai node dengan algoritma Minimax Universitas Sumatera Utara Tabel 3.2 Analisis algoritma Minimax Langkah Simpul Nilai Catatan 1 a ∞ Setiap node yang berada pada tingkat min, akan diberi nilai awal ∞, sehingga node min akan mencari nilai yang lebih kecil dari ∞ 2 f - ∞ Node yang berada pada tingkat max, akan diberi nilai awal - ∞, sehingga node max akan mencari nilai yang lebih besar dari - ∞ 3 f -102 - ∞ -102 benar, update f = -102 4 f -102 -102 -103 salah, f = -102 5 f -102 -102 -103 salah, f = -102 6 a -102 ∞ -102 benar, update a = -102 7 root -102 - ∞ -102 benar, update root = -102 Nilai root sementara disimpan sebagai nilai maksimun pemain. 8 b ∞ 9 g - ∞ 10 g -101 - ∞ -101 benar, update g = -101 11 g -101 -101 -102 salah, g = -101 12 g -101 -101 -102 salah, g = -101 13 b -101 ∞ -101 benar, update b = -101 14 root -101 -102 -101 benar, update root = -101 15 c ∞ 16 h - ∞ 17 h 99 - ∞ 99 benar, update h = 99 18 c 99 ∞ 99 benar, update c = 99 19 i - ∞ 20 i 97 - ∞ 97 benar, update i = 97 21 c 97 99 97 benar, update c = 97 node Min, mencari nilai terkecil 22 j - ∞ 23 j 98 - ∞ 98 benar, update j = 98 24 c 97 97 98 salah, c = 97 25 k - ∞ 26 k 100 - ∞ 100 benar, update k = 100 27 c 97 97 100 salah, c =97 28 root 97 -101 97 benar, update root = 97 29 d ∞ 30 l - ∞ 31 l -103 - ∞ -103 benar, update l = -103 32 l -101 -103 -101 benar, update l = -101 33 l -101 -101 -103 salah 34 d -101 ∞ -101 benar, update d = -101 35 root 97 97 -101 salah 36 e ∞ 37 m - ∞ 38 m -101 - ∞ -101benar, update m = -101 39 m -99 -101 -99 benar, update m = -99 40 m -99 -99 -101 salah 41 e -99 ∞ -99 benar, update e = -99 42 root 97 97 -99 salah, pencarian selesai dengan hasil akhir ialah 97. Universitas Sumatera Utara 3.4 Analisis Algoritma Negascout Setelah mengetahui cara kerja dari algoritma Minimax, selanjutnya penulis akan menganalisis algoritma Negascout. Dalam menganalisis algoritma Negascout, penulis menggunakan contoh pohon permainan yang berbeda dengan sebelumnya. Hal ini disebabkan sebagian node pada pohon permainan gambar 3.6 hanyalah memiliki satu cabang saja. Jika algoritma Negascout digunakan untuk mencari pada pohon tersebut, maka tidak akan terlihat perbedaan antara algoritma Minimax dengan algoritma Negascout. Oleh sebab itu penulis menggunakan pohon permainan pada gambar 3.7 sebagai contoh yang akan dianalisis oleh algoritma Negascout. Gambar 3.7 Pohon permainan menggunakan algoritma Negascout Analisis lengkap dari pohon permainan diperlihatkan pada tabel 3.2 yang memperlihatkan bagaimana proses nilai berpindah pada pohon langkah demi langkah. Universitas Sumatera Utara Tabel 3.3 Tabel analisis algoritma Negascout Langkah Simpul Alpha Beta Catatan 1 a - ∞ ∞ Nilai alpha dimulai dengan - ∞ dan nilai beta dimulai dengan ∞. 2 b - ∞ ∞ - 3 d - ∞ ∞ - 4 d 5 ∞ Dalam tahap ini, kita telah menelusuri cabang-cabang dari simpul “d”, dan mendapat nilai terbaik ialah 5 karena 5 4. Dimana nilai ini akan dinaikkan ke simpul “b” 5 b - ∞ 5 Pada simpul min, kita mengharapkan nilai yang akan diperoleh ialah nilai yang lebih kecil dari 5. Sekarang kita harus menelusuri cabang-cabang dari simpul “e” untuk mencari nilai yang lebih rendah. 6 e - ∞ 5 - 7 e 6 5 Pemotongan Beta Nilai 6 diperoleh dari cabang pertama simpul “e”. Pemain Min akan menyadari bahwa ia akan mendapat nilai yang lebih baik jika memilih langkah “d” dari pada langkah “e”. Karena pada langkah “e”, Min akan mendapat nilai maksimum 6 sedangkan pada d akan mendapat nilai 5. Sekarang kita dapat mengabaikan cabang-cabang dari simpul “e” yang lain. 8 a 5 ∞ Nilai 5 telah dinaikkan ke akar “a”. Sekarang Max telah mengetahui bahwa sekarang nilai terbaiknya setidaknya ialah 5. Ia perlu mencari apakah ia dapat nilai yang lebih baik. 9 c 5 ∞ - 10 f 5 ∞ - 11 f 5 7 Pemotongan Null Window. Nilai 7 diperoleh pada cabang pertama dari simpul “f”. Dalam negascout terjadi pemotongan null window yang artinya algoritma menebak bahwa 7 ialah nilai terbaik dari simpul “f”. Permotongan ini terjadi karena 7 alpha. 12 c 7 5 13 g 7 5 Setelah menelusuri cabang-cabang dari simpul “g”, nilai yang diperoleh ialah 4. Ketika 4 dibandingkan dengan nilai beta. Ternyata 5 4. Sehingga pencarian selesai dengan nilai optimal yang diperoleh ialah 5. Universitas Sumatera Utara 3.4.1 Pseudo Code Dengan menggunakan algoritma Minimax dengan Negascout, maka akan terciptalah suatu kecerdasan buatan dengan waktu pencarian optimal untuk suatu permainan. Negascout telah menjadi jantung bagi banyak software permainan terbaik di dunia. Program-program tersebut bahkan telah mampu mengalahkan pemain-pemain juara. Tabel 3.4 Tabel pseudo code Negascout 1 FUNCTION negascout p: POSITION; alpha, beta, depth: INTEGER : INTEGER; 2 VAR i,t,m,n: INTEGER; 3 BEGIN 4 IF depth = d THEN RETURN evaluatep 5 ELSE 6 BEGIN m := -INFINITY; 7 n := beta; 8 FOR i := 1 TO b DO 9 BEGIN t:= -negascout p.i, -n, -maxalpha,m, depth+1; 10 IF t m THEN 11 IF n = beta OR depth = d-2 12 THEN m := t 13 ELSE m := -negascout p.i, -beta, -t, depth+1; 14 IF m = beta THEN RETURN m; 15 n := max alpha, m +1; 16 END; 17 RETURN m; 18 END; 19 END; Keterangan pseudo code: p = kondisi papan d = kedalaman maksimum dari pohon yang ditelusuri b = lebar pohon banyak langkah yang mungkin terjadi pada papan evaluatep = merupakan fungsi yang memberikan nilai evaluasi pada kondisi papan “p” Universitas Sumatera Utara 3.4.2 Kinerja Algoritma Algoritma Negascout memiliki banyak keuntungan dibandingkan dengan algoritma Minimax. Keuntugan itu ialah adanya pemotongan pada cabang yang tidak berguna dalam pohon permainan. Pemotongan-pemotongan tersebut antara lain pemotongan alpha, pemotongan beta dan pemotongan null window. Hal ini menyebabkan Negascout memiliki proses pencarian yang jauh lebih optimal. Negascout akan memiliki waktu pencarian yang paling optimal, ketika Negascout mendapatkan langkah terbaik pada langkah pertama dilakukannya pencarian. Hal ini dikarenakan Negascout tidak melakukan pencarian ulang pada jendela yang telah dipotongnya.

3.5 Pemodelan Visual Menggunakan UML