Anda di halaman 1dari 8

TUGAS INDIVIDU AI

AI201401-T01-TI-2012100031-Pradita Chandra Kurniawan

Adversarial Search adalah salah satu teknik pencarian node di dalam tree yang
digunakan untuk Artificial Intelligence. Adversarial Search akan mencari solusi dari
langkah yang akan digunakan oleh komputer berdasarkan data di dalam setiap node.

Gambar di atas merupakan salah satu contoh dari penggunaan adversarial search
minimax untuk menentukan langkah terbaik yang harus digunakan untuk
memenangkan game Tic-Tac-Toe

Algoritma minimax merupakan basis dari semua permainan berbasis AI seperti


permainan catur misalnya. AI permainan catur tentunya sudah sangat terkenal
dimana AI tersebut bahkan dapat mengalahkan juara dunia sekalipun. Pada
algoritma minimax, pengecekan akan seluruh kemungkinan yang ada sampai akhir
permainan dilakukan. Pengecekan tersebut akan menghasilkan pohon permainan
yang berisi semua kemungkinan tersebut. Tentunya dibutuhkan resource yang
berskala besar untuk menangani komputasi pencarian pohon solusi tersebut
berhubung kombinasi kemungkinan untuk sebuah permainan catur pada setiap
geraknya sangat banyak sekali. 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 akan
membuat lawan mengalami kerugian minimum. Semua strategi lawan akan dihitung
dengan algoritma yang sama dan seterusnya. Ini berarti, pada langkah pertama
komputer akan 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. Dalam penentuan keputusan tersebut
dibutuhkan suatu nilai yang merepresentasikan kerugian atau keuntungan yang
akan diperoleh jika langkah tersebut dipilih. Untuk itulah disini digunakan sebuah
fungsi heurisitic untuk mengevaluasi nilai sebagai nilai yang merepresentasikan
hasil permainan yang akan terjadi jika langkah tersebut dipilih. Biasanya pada
permainan tic tac toe ini digunakan nilai 1,0,-1 untuk mewakilkan hasil akhir
permainan berupa menang, seri, dan kalah. Dari nilai-nilai heuristic inilah komputer
akan menentukan simpul mana dari pohon permainan yang akan dipilih, tentunya
simpul yang akan dipilih tersebut adalah simpul dengan nilai heuristic yang akan
menuntun permainan ke hasil akhir yang menguntungkan bagi komputer.
Algoritma minimax merupakan algoritma yang diterapkan dalamgame yang
melibatkan dua pemain yang saling bergantian, sepertitic-tactoe, chess, go, othello dan game yang menggunakan strategi atau logika
lainnya (Wijaya, 2010). Persamaan antara semua game tersebut yaitu semua
merupakan game logika dan gamedengan informasi yang lengkap. Ini berarti
bahwa game merupakan sekumpulan aturan main dan dasar pemikiran yang logis.
Adanya aturan main dan dasar pemikiran yang logis tersebut, maka nantinya setiap
pemain dapat mengetahui semua langkah yang mungkin dari pemain lawannya,
sehingga pemain bisa tetap memantau kondisi permainan sewaktu game sedang
berlangsung(Akbar, 2011).
Algoritma minimax merupakan salah satu algoritma yang sering digunakan
untuk game kecerdasan buatan yang menggunakan teknikdepth first search (DFS)
dalam pencariannya pada pohon dengan kedalaman terbatas (Kusumadewi,
2003). Algoritma minimax digunakan untuk memilih langkah terbaik, dimana kedua
pemain akan saling berusaha untuk memenangkan permainan. Selain itu,

algoritma minimax ini bekerja secara rekursif dengan mencari langkah yang akan
membuat lawan mengalami kerugian minimum.Algoritma minimax mendeskripsikan
kondisi apabila terdapat pemain yang mengalami keuntungan, pemain lain akan
mengalami kerugian senilai dengan keuntungan yang diperoleh lawan dan
sebaliknya.
Algoritma minimax akan melakukan pengecekan pada seluruh kemungkinan yang
ada, sehingga akan menghasilkan pohon permainan yang berisi semua
kemungkinan permainan tersebut (Jannah, 2010). Dengan pohon permainan ini
setiap pemain mengetahui langkah-langkah yang mungkin diberikan pada situasi
permainan saat ini. Sehingga untuk setiap langkah dan semua langkah selanjutnya
dapat diketahui. Dalam repersentasi pohon pada algoritmaminimax, terdapat dua
jenis simpul, yaitu simpul min dan simpul max. Max akan memilih langkah dengan
nilai tertinggi dan min akan memilih langkah dengan nilai terendah (Kusumadewi,
2003).Dalam penentuan keputusan max/min tersebut dibutuhkan suatu nilai yang
merepresentasikan kerugian atau keuntungan yang akan diperoleh jika langkah
tersebut dipilih. Untuk itulah disini digunakan sebuah fungsi heuristik.
Fungsi heuristik yang digunakan algoritma ini adalah fungsi heuristik statis
(Kusumadewi, 2003). Fungsi heuristik digunakan untuk mengevaluasi nilai sebagai
nilai yang merepresentasikan hasil permainan yang akan terjadi jika langkah
tersebut dipilih. Dari nilai-nilai heuristik inilah komputer akan
menentukan simpul mana dari pohon permainan yang akan dipilih,
tentunya simpul yang akan dipilih tersebut adalahsimpul dengan nilai heuristik yang
akan menuntun permainan ke hasil akhir yang menguntungkan
bagi komputer (Akbar, 2007).Untuk proses dan cara kerja algoritma yang lebih
jelasnya lagi, dapat dilihat pada Gambar 2.10 yang merepresentasikan cara kerja
algoritma Minimax.

Gambar 2.10 Contoh Representasi Cara Kerja pada Algoritma Minimax


(Coppin, 2004)
Gambar 2.10 menunjukkan proses pencarian dimulai dari jalur paling kiri terlebih
dahulu, sehingga DFS akan menelusuri simpul paling kiri bawah hingga paling
kanan. DFS akan menelusuri simpul paling kiri bawah yaitu 5. Nilai 5 disimpan
sebagai nilai maksimum sementara karena berada di level 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 level 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 level max. Saat
mencapai level 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 level paling atas karena
merupakan level max. Lalu penelusuran jalur kanan akan dilakukan dengan cara
yang sama seperti penelusuran jalur kiri sehingga diperoleh nilai 6. Karena nilai
maksimum sementara pada level 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 algoritma minimax adalah jalur
sebelah kanan, karena level atas merupakan level max sehingga didapat nilai 6
sedangkan jika memilih jalur kiri, hanya akan didapat nilai 3.

Alpha-Beta Pruning
Dalam algoritma Minimax, pencarian dilakukan pada seluruh bagian pohon,
sementara sebagian pohon tidak seharusnya diperiksa. Alpha-Beta Pruning
merupakan modifikasi dari algoritma Minimax, yang akan mengurangi jumlah node
yang dievaluasi oleh pohon pencarian. Pencarian untuk node berikutnya akan
dipikirkan terlebih dahulu. Algoritma ini akan berhenti mengevaluasi langkah ketika
terdapat paling tidak satu kemungkinan yang ditemukan dan membuktikan bahwa
langkah tersebut lebih buruk jika dibandingkan dengan langkah yang diperiksa
sebelumnya. Sehingga, langkah berikutnya tidak perlu dievaluasi lebih jauh.
Dengan algoritma ini hasil optimasi dari suatu algoritma tidak akan berubah.
Gambar 2-8 merupakan pohon dengan algoritma Alpha-Beta Pruning.

Diperlihatkan, pada pohon tersubut, terdapat pemotongan pencarian dengan


menggunakan algoritma Alpha-Beta Pruning. Pada algoritma ini, terdapat dua nilai

yang diatur, yaitu Alpha dan Beta, yang merepresentasikan nilai minimum dari max
yang diyakini dan nilai maksimum dari min yang diyakini. Nilai awal alpha adalah
tak hingga negatif dan nilai awal beta adalah tak hingga positif. Sebagai hasil dari
proses rekursif, area pencarian akan semakin kecil. Ketika beta menjadi lebih kecil
dari alpha, akan berarti posisi saat itu tidak dapat menjadi hasil terbaik permainan
untuk kedua pemain dan pencarian tidak perlu dilakukan lebih jauh.
Kinerja Minimax dapat diperbaiki dengan Pruning (memangkas) game tree.
Prinsipnya: node (subtree) yang tidak mungkin mempengaruhi hasil akhir tidak
perlu ditelusuri. Pruning demikian dilakukan oleh algoritma Alpha-Beta Pruning.
Alpha-Beta Pruning tidak akan mempengaruhi hasil akhir dari algoritma Minimax.
1. Pengertian Alpha Beta Pruning
Alpha Beta Pruning adalah cara untuk mengurangi jumlah simpul yang dieksplorasi
dalam algoritma MinMax. Dengan alpha-beta, waktu yang diperlukan dalam
pencarian akan berkurang dengan cara membatasi waktu yang terbuang percuma
pada saat mengevaluasi pohon permainan. Implementasi alpha-beta akan
memberikan jalur terbaik dalam setiap kemungkinan permainan dalam pohon
permainan yang terbentuk.
Dalam algoritma alpha-beta, urutan jalannya algoritma akan dimulai sama seperti
algoritma minmax. Untuk simpul MIN, nilai yang dihitung dimulai dengan +infinity
dan akan menurun seiring jalannya permainan. Untuk simpul MAX, nilai akan
dihitung mulai dengan infinity dan akan menaik 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 MInMax dalam pohon permainan, dengan dua kali lipat
tingkat kedalaman pohon.

2. Algoritma Alpha Beta


Algoritma akan mendapat dua nilai : alpha dan beta, yang akan merepresentasikan
nilai minimum untuk MAX, dan nilai maksimum untuk MIN. Pada awalnya nilai alpha
adalah infinity dan beta bernilai awal +infinity. Selama jalannya rekursi, perbedaan
nilai alpha dan beta akan semakin mengecil.
Ketika nilai beta menjadi lebih kecil dari alpha, berarti keadaan saat ini bukan
merupakan hasil terbaik dari kedua pemain, dan dengan demikian tidak perlu
dieksplorasi lebih jauh.

Pseudocode untuk algoritma alpha-beta adalah :

Contoh Alpha Beta Pruning


Kondisi awal dari sebuah keadaan seperti digambarkan pada gambar 4.1 dan akan
didapatkan hasil dengan metode Alpha Beta Prunning seperti pada 4.2.

Algoritma
1. Hampiri node pertama pada leaf dengan nilai 5, naik ke parent pada level 2
masukkan nilai 5, hampiri 8, karena 8>5 maka ganti parent dengan 8,
hampiri 3.
2. Setelah ketiga leaf pertama terhampiri, naik lebih tinggi lagi ke level 1
masukkan nilai 8.
3. Hampiri node keempat pada leaf dengan nilai 9, naik ke parent pada level 2
masukkan nilai 9. Jika kita menghampiri leaf berikutnya, kita mencari yang
lebih tinggi dari 9, sementara pada level 1 kita mencari yang lebih kecil dari
8, maka leaf 3 dan 1 kita potong (tidak kita hampiri).
4. Begitu seterusnya hingga kita dapatkan hasil akhir dari tree di atas adalah
seperti gambar 4.2

Pencarian CutOf
Minimax Cutof adalah identik terhadap MinimaxValue kecuali
1. Terminal? digantikan oleh Cutof?
2. Utility digantikan oleh Eval
Apakah bekerja pada penerapan?
bm = 106, b=35 m=4
Hanya melihat 4-ply ke depan adalah seorang pemain catur tanpa harapan!

4-ply manusia pemula

8-ply PC pada umumnya, manusia master

12-ply Deep Blue, Kasparov

Anda mungkin juga menyukai