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