• Tidak ada hasil yang ditemukan

Game Playing #1/5. (C) 2005, gunawan -

N/A
N/A
Protected

Academic year: 2021

Membagikan "Game Playing #1/5. (C) 2005, gunawan -"

Copied!
5
0
0

Teks penuh

(1)

Game Playing

Beberapa Karakteristik dan Batasan Game untuk Game Playing:

Dimainkan oleh 2 (dua) pemain: manusia dan komputer. Para pemain saling bergantian melangkah.

Perfect Information Game: kedua pemain sama-sama memiliki akses pada informasi yang lengkap tentang keadaan permainan, sehingga tidak ada informasi yang tertutup bagi lawan mainnya.

No Determined by Chances. Tidak melibatkan faktor probabilitas, misalnya dengan menggunakan dadu.

No Phsychological Factors. Tidak melibatkan faktor psikologi, seperti "gertakan" (misalnya Poker)

No Oversight Errors. Smart Opponent. Lawan diasumsikan pintar juga, jadi jangan mengharap lawan khilaf, sehingga terjadi salah langkah.

Beberapa contoh permainan yang biasa digunakan sebagai contoh kasus Game Playing pada AI: 1. Last One Loses

2. n-coins Grundy's Game

3. Slide-5 (cari, mulai dari: http://www.csm.astate.edu/~rossa/slide5.pas.html) 4. Tic-Tac-Toe 5. Checkers 6. Go 7. Nim 8. Othello 9. Chess

Dengan memperhatikan karakteristik dan batasan di atas, menjadi mungkin untuk implementasi sejumlah permainan tradisional /sehari-hari seperti:

1. Dakon (Game Tradisi Jawa) 2. Halma

Metode iterative diterapkan oleh karena space pencarian solusi terlalu besar, dalam hal ini

pencarian akan dilakukan sebelum setiap langkah dilakukan untuk mendapatkan langkah berikutnya yang terbaik.

Fungsi Evaluasi

digunakan untuk menilai "seberapa baik" konfigurasi suatu game.

Tidak seperti heuristic search yang fungsi evaluasinya adalah sebuah bilangan non-negatif, sebagai estimasi biaya dari start-state menuju goal-state, pada game playing fungsi evaluasinya memberikan estimasi tentang kualitas papan permainan dalam mengarahkan seorang pemain untuk memenangkan permainan (static evaluation function). Disebut juga dengan: Static Board Evaluator, f(n).

(2)

Jika f(n) bilangan negatif besar, artinya konfigurasi papan dengan pemilihan node n "buruk untuk saya dan baik untukmu"

Jika f(n) dekat dengan 0, artinya papan dalam keadaan netral Pada leaf nodes:

Jika f(n) = + "tak terhingga", artinya kondisi saya memenangkan pertandingan. Jika f(n) = - "tak terhingga", artinya kondisi kamu memenangkan pertandingan. Static Board Evaluator tidak selalu mudah untuk ditulis, misalnya untuk permainan catur. Banyak fungsi evaluasi game playing yang dispesifikasikan sebagai "jumlah berbobot dari featuresnya": (w1*feature1) + (w2*feature2) + (w3*feature3) + ... (wn*featuren). Sebagai contoh pada Deep Blue (program catur yang "imbang" saat menghadapi Gary Kasparov) memiliki tidak kurang dari 6000 features dalam fungsi evaluasinya.

Contoh static evaluation function untuk Tic-Tac-Toe: f(n) = [jumlah 3-length yang terbuka untuk saya] - [jumlah 3-length yang terbuka untukmu]

Strategi Minimax

Minimax adalah sebuah prosedur pencarian yang melihat ke depan -- memperhatikan apa yang akan terjadi kemudian -- yang digunakan untuk memilih langkah berikutnya. Asumsikan bahwa kita telah memiliki sebuah Static Board Evaluator yang akan mengembalikan sebuah bilangan yang menunjukkan "seberapa baiknya" sebuah konfigurasi papan.

A / \ B C / \ / \ D E F G 4 7 2 8

Anggaplah static board evaluator untuk konfigurasi papan D, E, F, G, masing-masing adalah 4, 7, 2, dan 8. Nilai konfigurasi B adalah 4 (karena jika saya memilih B, lawan akan memilih D -- langkah terbaik untuk dia). Hal yang sama akan terjadi bila saya melangkah ke C yang nilai konfigurasinya 2. Dengan demikian nilai konfigurasi A adalah 4 (artinya melangkah ke konfigurasi B=4 lebih baik bagi saya dibanding C=2).

FUNCTION Minimax(N)

1. IF N adalah sebuah terminal node dari game tree THEN

RETURN nilai yang dihitung oleh static board evaluator untuk node N ELSE

Expand successors N1, N2, N3, ... , Nm dari node N IF N berada pada level meminimalkan THEN

RETURN min(Minimax(N1), Minimax(N2), ... , Minimax(Nm) ) ELSE

RETURN max(Minimax(N1), Minimax(N2), ... , Minimax(Nm) ) 2. RETURN

(3)

αβ-Pruning (αβ-CutOff)

Cara untuk meningkatkan efisiensi fungsi minimax standard.

Metode tambahan ini ditambahkan pada function minimax untuk mereduksi jumlah node yang diexpand. Kepada function minimax ditambahkan sepasang nilai, α dan β.

Penelusuran pada game tree dilakukan secara depth-first order (seperti DFS).

Nilai

α dari node n:

Diberi harga awal dengan:

nilai static-board evaluator dari node n, jika n adalah terminal node. -tak terhingga, pada keadaan lainnya (bukan leaf-node).

Perubahan nilai α :

pada level memaksimalkan, nilai α akan diisi dengan nilai terbesar dari semua successor yang diexpand, dan

pada level meminimalkan, nilai α akan diisi dengan nilai α dari predecessornya.

Nilai

β dari node n:

Diberi harga awal dengan:

nilai static-board evaluator dari node n, jika n adalah terminal node. +tak terhingga, pada keadaan lainnya (bukan leaf-node).

Perubahan nilai β :

pada level meminimalkan, nilai β akan diisi dengan nilai terkecil dari semua successor yang diexpand, dan

pada level memaksimalkan, nilai β akan diisi dengan nilai β dari predecessornya.

Pengaturan nilai

α dan β seperti itu akan menjamin:

menghasilkan nilai yang sama seperti yang dihasilkan fungsi minimax standard untuk root node.

nilai static-board evaluator dari sebuah node akan selalu tidak lebih kecil dari nilai α dan tidak pernah lebih besar dari node β.

Selama algoritma bekerja, nilai α dan β dari sebuah node mungkin berubah, tetapi nilai

α tak pernah berkurang (monotonically non-decreasing), dan nilai β tak pernah bertambah (monotonically non-increasing).

Nilai α sebuah node tidak pernah kurang dari nilai α predecessornya Nilai β sebuah node tidak pernah lebih besar dari nilai β predecessornya Untuk node yang dikunjung terakhir:

nilainya = α jika node ini berada pada level memaksimalkan nilainya = β jika node ini berada pada level meminimalkan A

/ \ B C / \ / \

(4)

Misalnya pada contoh game tree untuk minimax di atas, fungsi minimax telah dilakukan secara lengkap untuk node B, jadi kita akan mulai menerapkan fungsi yang sama untuk C. Pertama kita melihat F dan mendapatkan nilainya = 2. Dengan demikian saat ini sesungguhnya tidak perlu untuk memeriksa node G, karena apapun nilainya tidak akan mengubah keputusan saya untuk memilih langkah B. Perhatikan bahwa saat ini current maximum adalah 4:

Jika G>2, misalnya G=8 seperti pada contoh di atas, maka lawan akan memilih F jika saya (komputer) memilih C. Dalam hal ini max(B,C) = max(min(4,7),min(2,8)) = max(4,2), jadi saya memilih B=4.

Jika G<2, misalnya G=1, maka lawan akan memilih G jika saya memilih C. Dalam hal ini max(B,C) = max(min(4,7),min(2,1)) = max(4,1), jadi saya tetap memilih B=4.

Kenyataan ini selanjutnya dapat digunakan untuk memangkas (pruning) seluruh game subtree di bawah node G. A nilai B = 4 / \ nilai C dipastikan <= 2 B C jadi nilai A = 4 / \ / \ D E F G 4 7 2 (dipangkas)

Pada contoh di atas terjadi pemangkasan pada level meminimalkan. Hal yang sama juga terjadi pada level memaksimalkan.

Efektivitas αβ-Pruning

Worst-Case:

No Pruning (tidak terjadi pemangkasan branch node).

Menguji b^d terminal node, dimana setiap node memiliki b children, dan pencarian dilakukan sampai d-ply.

Best-Case:

Menguji hanya (2b)^(d/2) terminal node

Biasanya memungkinkan pencarian sampai 2 kali lebih dalam (jumlah ply-nya) dari yang dilakukan minimax standard, sehingga kepandaiannya meningkat.

Terjadi saat langkah terbaik dari seorang pemain adalah leftmost alternative (alternatif langkah yang paling kiri) atau child-node yang diexpand pertama kali. Jadi: pada level memaksimalkan (node-node MAX) child-node dengan nilai yang terbesar diexpand terlebih dahulu; sedang pada level meminimalkan (node-node MIN) sebaliknya, atau child-node dengan nilai yang terkecil diexpand terlebih dahulu.

Pada program catur Deep-Blue, misalnya, secara empiris diketahui bahwa

αβ-Pruning menyebabkan rata-rata branching factor pada setiap nodenya menjadi hanya sekitar 6 child-node dari yang seharusnya sekitar 35 sampai 40 child-node (Catatan: Oleh sejumlah penulis disebutkan pada angka 38).

(5)

FUNCTION Minimax-αβ (N, A, B)

1. α <--- A

β <--- B

2. IF N adalah sebuah terminal node dari game tree THEN

RETURN nilai yang dihitung oleh static board evaluator untuk node N ELSE

IF N berada pada level meminimalkan THEN REPEAT FOR i = 1, 2, 3, ... , m

Expand successor ke-i, atau Ni Value <--- Minimax-αβ (Ni, α, β)

β <--- min (β, Value)

IF β <= α THEN EXIT LOOP RETURN β

ELSE {N berada pada level memaksimalkan} REPEAT FOR i = 1, 2, 3, ... , m

Expand successor ke-i, atau Ni Value <--- Minimax-αβ (Ni, α, β)

α <--- max (α, Value)

IF α >= β THEN EXIT LOOP RETURN α

3. RETURN

Catatan: Pada beberapa permainan diimplementasikan dengan sebuah procedure, sehingga output valuenya disimpan pada salah satu parameternya. Lihat source code slide5.pas.

Contoh Penerapan Fungsi Minimax-αβ untuk Game Tree 3-Ply

Berikut ini adalah sebuah game tree dengan sebuah b-cutoff pada node F dan a-cutoff pada node C dan D. Pada kasus ini dipangkas 10 node (O, H, R, S, I, T, U, K, Y, Z) dari total 26 node yang digenerate pada fungsi minimax standard.

Referensi

Dokumen terkait

Dari kajian teori-teori diatas, terlihat bahwa landasan pengembangan pembelajaran konstekstual adalah kontruktivisme, yaitu filosofi belajar yang menekankan bahwa

Sehingga didapat variabel yang paling dominan sebagai penyebab terjadinya change order yang dialami oleh pihak kontraktor pada proyek konstruksi jalan di Sumatera

Hasil pemindaian (scan) surat pernyataan bermeterai Rp 6.000 dari Penyedia bahwa barang yang ditawarkan dalam kondisi baru dan 100% asli / original.. Hasil pemindaian (scan) brosur

4.4.1 Mempraktikkan pembuatan hiasan dari bahan alam dan buatan... Dengan membaca teks tentang merawat tanaman kaktus, siswa dapat membuat kalimat tanya dengan benar...

Hal ini berarti jika individu mempunyai intensitas mengikuti pengajian kitab al-Hikam yang tinggi maka individu akan termotivasi untuk mengikuti pengajian tersebut

Standar Kompetensi Lulusan (SKL) berfungsi sebagai criteria dalam menentukan kelulusan peserta didik pada setiap satuan pendidikan, rujukan untuk penyusunan standar-standar

Arsitektur klasik-barat yang berkembang sejak zaman Yunani kuno ribuan tahun silam hingga berakhir pada abad XVI seiring dengan munculnya aliran lain seperti Neo-Klasik yang

Jika tidur, pilih tempat tidur yang baik, misalnya yang memiliki matras (kasur) yang kuat (firm), sehingga posisi tidur tidak melengkung. Yang paling baik adalah tidur miring