Jumat, 22 Juni 2018

BAB 6 Pengambilan Keputusan pada Board Game

Tugas

Konsep Board Game

        Board game atau permainan papan, secara arti juga sudah dengan mudah untuk dimengerti, yaitu permainan yang dimainkan diatas papan atau diatas alas tertentu yang sudah dirancang sedemikian rupa sesuai dengan aturan permainannya. Board game biasanya ditujukan untuk permainan bersama keluarga dengan peraturan yang mudah sehingga mendapatkan kesan seru yang semakin mempererat tali kekeluargaan. Namun ada beberapa game yang membutuhkan keseriusan pada rancangan board game, seperti catur dan othello.

Algoritma Min Max

     Algoritma minmax atau minimax adalah sebuah algoritma yang digunakan pada permainan dengan dua pemain dengan cara memprediksi keadaan masa depan, dan kemudian mengambil langkah yang memaksimalkan peluang kemenangan. Teori di balik minimax adalah bahwa algoritma lawan akan mencoba untuk meminimalkan nilai apapun yang algoritma pemain berusaha maksimalkan. Dengan konsep seperti itu, maka algoritma ini akan melakukan gerakan yang membuat lawannya memiliki peluang lebih kecil untuk menang. 

Algoritma AlphaBetaWithMemory

       Sebagai catatan, MTD(f) memanggil fungsi Alpha-Beta yang menyimpan nilai simpul-simpulnya dalam memori, dan mengembalikan nilainya untuk pencarian kembali. Untuk membuat MTD(f) sangkil, maka fungsi Alpha-beta harus menyimpan nilai simpul yang telah dicari. Berikut ini adalah kode dari AlphaBetaWithMemory: 

function AlphaBetaWithMemory(n : node_type; alpha , beta , d : integer) : integer;
          if retrieve(n) == OK then /* Melihat tabel transposisi */
                    if n.lowerbound >= beta then return n.lowerbound;
                    if n.upperbound <= alpha then return n.upperbound;
                    alpha := max(alpha, n.lowerbound);
                    beta := min(beta, n.upperbound);
          if d == 0 then g := evaluate(n); /* simpul daun */
          else if n == MAXNODE then g := -INFINITY;
                    a := alpha; /* menimpan nilai alpha yang sebenarnya */
                    c := firstchild(n);
          while (g < beta) and (c != NOCHILD) do g := max(g, AlphaBetaWithMemory (c, a, beta, d - 1))
                    a := max(a, g);
                    c := nextbrother(c);
           else /* n adalah sebuah MINNODE */
                    g := +INFINITY;
                    b := beta; /* save original beta value */
                    c := firstchild(n);
           while (g > alpha) and (c != NOCHILD) do g := min(g, AlphaBetaWithMemory (c, alpha, b, d - 1));
                    b := min(b, g);
                    c := nextbrother(c); /* Tabel transposisi menyimpan nilai simpul */
            if g <= alpha then n.upperbound := g;
                    store n.upperbound;
            if g > alpha and g < beta then n.lowerbound := g;
                    n.upperbound := g;
                    store n.lowerbound, n.upperbound;
            if g >= beta then n.lowerbound := g;
                     store n.lowerbound;
return g;

Tabel transposisi yang digunakan berguna untuk menyimpan dan mengambil panggilan. Retrieve berfungsi untuk memastikan jika sebuah nilai terdapat MAKALAH IF2251 STRATEGI ALGORITMIK TAHUN 2008 dalam tabel, maka nilai itu akan langsung digunakan, bukan dilanjutkan dengan mencarinya. Store berfungsi untuk menyimpan nilai yang ada. Dalam algoritma ini, kita juga akan menyimpan nilai langkah terbaik kedalam tabel transposisi.

Hashing

Hashing adalah transformasi aritmatik sebuah string dari karakter menjadi nilai yang merepresentasikan string aslinya. Menurut bahasanya, hashberarti memenggal dan kemudian menggabungkan. Hashing digunakan sebagai metode untuk menyimpan data dalam sebuah array agar penyimpanan data, pencarian data, penambahan data, dan penghapusan data dapat dilakukan dengan cepat. Ide dasarnya adalah menghitung posisi recordyang dicari dalam array, bukan membandingkan record dengan isi pada array. Fungsi yang mengembalikan nilai atau kunci disebut fungsi hash (hashfunction) dan array yang digunakan disebut tabel hash (hash table). Hash tablemenggunakan struktur data array asosiatif yang mengasosiasikan recorddengan sebuah field kunci unik berupa bilangan (hash) yang merupakan representasi dari record tersebut.

Zobrist Hashing

Zobrist hashing (juga disebut sebagai kunci Zobrist atau tanda tangan Zobrist [1]) adalah konstruksi fungsi hash yang digunakan dalam program komputer yang memainkan permainan papan abstrak, seperti catur dan Go, untuk menerapkan tabel transposisi, jenis khusus dari tabel hash yang diindeks oleh posisi papan dan digunakan untuk menghindari menganalisis posisi yang sama lebih dari satu kali.

Strategi Replacement

Metode replacement digunakan untuk menghapus data yang ada pada cache yang penuh, untuk digantikan dengan data baru. Banyak metode replacement yang diteliti sebelumnya. Faktor yg biasa diperhitungkan untuk proses replacement pada cache: 
- recency: waktu terakhir referensi ke objek
- frekuensi: jumlah request ke sebuah objek
- size: ukuran dari objek dalam cache
- cost of fetching the object: perhitungan pengambilan objek langsung dari server asli (seperti jarak dalam jumlah hop)
- modification time: waktu dimodifikasi terakhir sebuah objek
- expiration time: waktu dimana objek sudah kadaluarsa dan bisa diganti langsung


Sumber :

http://repository.unpas.ac.id/15941/2/bab%202.pdf

http://informatika.stei.itb.ac.id/~rinaldi.munir/Stmik/2016-2017/Makalah2017/Makalah-IF2211-2017-043.pdf

http://informatika.stei.itb.ac.id/~rinaldi.munir/Stmik/2007-2008/Makalah2008/MakalahIF2251-2008-094.pdf

http://syazdiayhodian.blogspot.com/2011/06/hashing.html

https://en.wikipedia.org/wiki/Zobrist_hashing

file:///E:/Pengantar%20Game%20(Soft%20Skill)/Tugas%204/565-770-1-PB.pdf

Tidak ada komentar:

Posting Komentar