ANALISIS DAN PERANCANGAN APLIKASI
3.1 Analisis Kebutuhan Aplikasi
3.1.3 Analisis Algoritma
Seperti yang telah dipaparkan pada bab sebelumnya, algoritma yang digunakan untuk membangun aplikasi ini adalah Minimax dan Alpha Beta Pruning. Algoritma Minimax tidak digunakan secara tunggal sebab algoritma tersebut dirasa kurang efisien. Minimax akan mengevaluasi seluruh node yang ada pada pohon pencarian satu persatu hingga selesai, sedangkan jumlah node yang akan dievaluasi tidaklah sedikit. Berikut adalah tabel jumlah node yang akan dievaluasi menurut tingkat kedalamannya, dimana branching factor b adalah jumlah pergerakan maksimum masing-masing node dan depth d adalah kedalaman pohon pencarian.
Tabel 3.1 Hubungan Kedalaman dan Jumlah Node Kedalaman Jumlah node O(bd)
1 100
2 10000
3 1000000
4 100000000
5 10000000000
Ukuran papan permainan Five in Row adalah 10 x 10 yang berarti berjumlah 100 kotak. Dengan demikian jumlah pergerakan maksimum yang dimiliki masing-masing node adalah 100, sebab Five in Row tidak memiliki illegal move seperti halnya permainan catur ataupun Othello. Yang dimaksud dengan illegal move adalah gerakan ilegal atau batasan pergerakan pemain, misalnya kuda hanya boleh melangkah sesuai
dengan huruf L pada catur. Jumlah pergerakan maksimum ini akan dijadikan percabangan pada pohon pencarian.
Dengan adanya Alpha Beta Pruning diharapkan waktu pencarian akan jauh lebih singkat karena tujuan utama dari algoritma ini adalah mengabaikan subtree atau percabangan yang tidak mempengaruhi hasil akhir. Berikut beberapa ketentuan dalam algoritma Alpha Beta Pruning.
1. Alpha (α) merupakan nilai batas bawah maksimum atau nilai terbaik
sementara pada max. Alpha digunakan pada node min dan diset pada node max.
2. Beta (β) merupakan nilai batas atas minimum atau nilai terbaik sementara pada min. Beta digunakan pada node max dan diset pada node min.
3. Max bertujuan untuk memaksimalkan nilai dengan cara memilih node anak dengan nilai paling besar. Nilai awal max adalah –∞ dan akan bertambah seiring dengan pencarian.
4. Min bertujuan untuk meminimalkan nilai dengan cara memilih node anak dengan nilai paling kecil. Nilai awal min adalah +∞ dan akan berkurang seiring dengan berjalannya pencarian.
5. Max adalah agen yang mewakili komputer, sedangkan min adalah agen yang mewakili gerakan lawan dalam hal ini user.
Berikut adalah pseudocode algoritma Minimax dengan optimasi Alpha Beta Pruning.
int alphaBetaMax( int alpha, int beta, int depthleft ) { if ( depthleft == 0 ) return evaluate();
for ( all moves) {
score = alphaBetaMin( alpha, beta, depthleft - 1 ); if( score >= beta )
return beta; // beta-cutoff if( score > alpha )
alpha = score; // Alpha bertindak sebagai max }
return alpha; }
int alphaBetaMin( int alpha, int beta, int depthleft ) { if ( depthleft == 0 ) return -evaluate();
for ( all moves) {
score = alphaBetaMax( alpha, beta, depthleft - 1 ); if( score <= alpha )
return alpha; // alpha-cutoff if( score < beta )
beta = score;// beta bertindak sebagai Min }
return beta; }
Berikut adalah flowchart algoritma Minimax dengan optimasi Alpha Beta Pruning. Start Terminal State? Successor Node = MaxNode α ß Max α ≥ β β ß Min β ≤ α Hitung Value Stop Tidak Ya Ya Tidak Tidak Tidak Ya Ya
Gambar 3.4 Flowchart Algoritma Minimax dengan Optimasi Alpha Beta Pruning
Flowchart di atas memperlihatkan bagaimana algoritma Minimax dan Alpha
Beta Pruning mengevaluasi setiap node pada pohon permainan.
Pada awal permainan akan diperiksa terlebih dahulu apakah node yang diperiksa merupakan terminal state atau tidak, jika ya maka fungsi evaluasi akan
mengevaluasi nilai yang diperoleh dan menghentikan pencarian. Sebaliknya jika tidak maka successor akan dibangkitkan untuk mengevaluasi node anak yang ada pada kedalaman selanjutnya.
Jika yang dievaluasi adalah node max maka nilai node tersebut akan diperiksa.
Jika nilainya maksimal maka akan ditetapkan menjadi α. Apabila nilai α lebih besar atau sama dengan β, maka evaluasi dihentikan. Dengan demikian node di bawahnya tidak perlu dievaluasi.
Sebaliknya jika yang dievaluasi adalah node min maka akan terus diperiksa
selama nilai β tidak lebih kecil atau sama dengan α. Apabila nilai β ditemukan bernilai lebih kecil atau sama dengan nilai α maka evaluasi dihentikan.
Berikut ini akan dipaparkan tahapan optimasi Alpha Beta Pruning secara singkat.
1. Dapatkan nilai Alpha dan Beta. Alpha adalah nilai maksimum yang ditemukan. Beta adalah nilai minimum yang ditemukan.
2. Pada node max, sebelum mengevaluasi node anak, bandingkan terlebih dahulu nilai yang didapatkan dengan nilai Beta. Jika nilainya lebih besar, batalkan pencarian untuk node tersebut.
3. Pada node min, sebelum mengevaluasi node anak bandingkan terlebih dahulu nilai yang didapatkan dengan nilai Alpha. Jika nilainya lebih kecil, batalkan pencarian untuk node tersebut.
Algoritma Minimax ini bersifat depth first search, yang berarti proses pengecekan akan dilakukan hingga ke kedalaman tertentu sesuai level permainan kemudian beralih ke tingkat atas. Untuk lebih jelasnya proses depth first search akan digambarkan sebagai berikut.
-10 -3 0 1 10 5 -3 3 1 0 A B C D E F G H I J K L M N S T O P Q R 19 21 20 24 25 32 31 28 29 34 35 1 2 7 3 14 4 5 6 8 13 12 11 9 10 15 16 17 18 23 22 38 26 37 27 30 33 36
Gambar 3.5 Proses Pencarian Depth First Search
Awal pencarian akan dimulai dari node root yaitu node A, dimana node ini memiliki tiga anak yaitu node B, node C dan node D. Yang pertama diperiksa adalah
node B beserta turunannya yaitu node E dan node F, namun node E yang memiliki
anak node K dan L harus dievaluasi terlebih dahulu kemudian nilai dikembalikan ke
node E, lalu node E mengembalikan nilai pada node induknya yaitu node B. Karena node B masih memiliki node anak yang belum diperiksa maka proses evaluasi terus
berlangsung terhadap node F beserta turunannya. Setelah seluruh cabang pada node B selesai diperiksa maka nilai akan dikembalikan kepada node A. Demikian seterusnya hingga proses pencarian seluruh pohon selesai dijalankan. Proses evaluasi pohon pencarian sesuai dengan arah dan nomor pada anak panah.
Gambar 3.6 Diagram Pohon Pencarian
Diagram di atas memperlihatkan bahwa pada baris max nilai alpha (α) selulu
-∞, sedangkan pada baris min nilai beta (β) selalu +∞. Sebenarnya nilai α dan β yang
terdapat pada diagram di atas bukanlah nilai alpha dan beta selama proses berlangsung. Nilai di atas hanya memperlihatkan bahwa pada node max fungsi evaluasi hanya boleh mengubah nilai alpha dan sebaliknya pada node min fungsi evaluasi hanya boleh mengubah nilai beta.
Untuk lebih jelasnya mengenai proses evaluasi pada pohon tersebut, akan dipaparkan lebih lanjut dalam bentuk tabel berikut ini.
Tabel 3.2 Proses Pencarian Alpha Beta Pruning No Node Yang dievaluasi Node yang dipanggil
Nilai α Nilai β Nilai
Node
Fungsi Keterangan
1. A B -∞ +∞ - Node A (B, -∞, +∞) Pada awal permainan nilai α = -∞ sedangkan nilai β = +∞.
2. B E -∞ +∞ - Node B (E, -∞, +∞)
3. E K -∞ +∞ 3 Node E (K, -∞, +∞) Nilai 3 ditetapkan menjadi nilai α
4. E L 3 +∞ 3 Node E (L, 3, +∞) Nilai node L < node K, dengan demikian node E (max) tetap akan memiliki nilai 3.
5. E Selesai α = 3 β = +∞ E = 3 Node E telah selesai dievaluasi, dengan
demikian proses akan beralih ke tingkat atas yaitu node B.
6. B F -∞ 3 3 Node B (F, -∞, 3) Nilai 3 yang diperoleh dari node E diset menjadi
nilai β, sedangkan nilai α kembali menjadi -∞.
Tulang
No. Node
yang di evaluasi
Node yang
dipanggil
Nilai α Nilai β Nilai
Node
Fungsi Keterangan
7. F M -∞ 3 5 Node F (M, -∞, 3) Nilai 5 berasal dari node M yang kemudian
ditetapkan menjadi nilai α.
8. F Selesai α = 5 β = 3 F = 5 Node N tidak perlu diperiksa sebab nilai α ≥ β. (α = 5 sedangkan β = 3).
9. B Selesai -∞ β = 3 B = 3 Nilai 3 diperoleh dari node E yang bernilai lebih kecil dari node F.
10. A C 3 +∞ Node A (C, 3, +∞) Nilai node A sementara adalah 3.
11. C G 3 +∞ G = 1 Node C (G, 3, +∞) Node G bernilai 1.
12. C Selesai α = 3 β = 1 C = 1 Node H tidak perlu diperiksa karena didapati
bahwa node C < node B.
13. A D 3 +∞ A = 3
D = -
Node A (D, 3, +∞) Node A masih bernilai 3 karena node C < node
B, sehingga tidak mempengaruhi nilai awal.
14. D I 3 +∞ D = - Node D (I, 3, +∞)
No. Node
yang di evaluasi
Node yang
dipanggil
Nilai α Nilai β Nilai
Node
Fungsi Keterangan
15. I O 3 +∞ I = 1 Node I (O, 3, +∞) Nilai 1 diperoleh dari node O, kemudian
ditetapkan menjadi nilai α.
16. I P 3 +∞ I = 1 Node I (P, 3, +∞) Nilai node I tetap 1.
17. I Selesai α = 1 +∞ I = 1
18. D Selesai β = 1 D = 1 Node J tidak perlu diperiksa karena node D < node B
19. A Selesai α = 3 β = +∞ 3 Jadi, fungsi evaluasi mendapatkan nilai 3 untuk
node A.