123dok Analisis+Dan+Implementasi+Algoritma+Minimax+Dengan+Optimasi+Alpha+Beta+Pruning+
123dok Analisis+Dan+Implementasi+Algoritma+Minimax+Dengan+Optimasi+Alpha+Beta+Pruning+
SKRIPSI
NUR JANNAH
061401081
SKRIPSI
Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar Sarjana
Komputer
NUR JANNAH
061401081
Diluluskan di
Medan, 4 Desember 2010
Komisi Pembimbing :
Pembimbing 2 Pembimbing 1
Diketahui/Disetujui oleh
Departemen Ilmu Komputer FMIPA USU
Ketua,
SKRIPSI
Saya mengakui bahwa skipsi ini adalah hasil kerja saya sendiri, kecuali beberapa
kutipan dan ringkasan yang masing-masing disebutkan sumbernya.
NUR JANNAH
061401081
Ucapan terima kasih penulis sampaikan kepada Ibu Maya Silvi Lydia, B.Sc,
M.Sc selaku dosen pembimbing I dan Bapak Syahriol Sitorus, S.Si, MIT selaku dosen
pembimbing II yang telah banyak membantu memberi panduan, masukan serta saran
kepada penulis selama penulisan skripsi ini. Ucapan terima kasih juga turut penulis
ucapkan kepada Bapak Prof.Dr.Tulus,M.Si dan Bapak Amer Sharif, S.Si, M.Kom
selaku dosen pembanding I dan II. Ucapan terima kasih juga ditujukan kepada Bapak
Prof. Dr. Muhammad Zarlis, Dekan dan Pembantu Dekan Fakultas Matematika dan
Ilmu Pengetahuan Alam, serta seluruh staf pengajar di Program Studi S1 Ilmu
Komputer Universitas Sumatera Utara.
Tidak lupa pula ucapan terima kasih penulis sampaikan kepada teman-teman
angkatan 2006, serta seluruh mahasiswa Program Studi S1 Ilmu Komputer dan semua
pihak yang telah membantu penyelesaian skripsi ini baik secara langsung ataupun
tidak langsung. Semoga Allah SWT membalas kebaikan Anda semua.
ABSTRACT
The existence of game industry which rapidly grows up proves that many people have
big interest in computer games. One of the famous computer games that have been
growing rapidly is Artificial Intelligence game for example: chess and five in row.
Five in row is a logic game that requires a strategy to defeat opponent by arranging
five of pieces with the same color in a line either horizontally, vertically or diagonally.
The algorithm that implemented to this game is Minimax which being optimized with
Alpha Beta Pruning. Minimax which is a search tree algorithm will explore every
node to obtain the maximum value to win the game. However, a search tree in Five In
Row has many depth and large branches, so much time is needed to evaluated every
possibility. That’s why an algorithm is required to optimize the searching, which is
Alpha Beta Pruning. This algorithm will prune some branches at the search tree which
have no effect to the Minimax value. With Alpha Beta Pruning, the scope of searching
can be reduced so that exploring solutions can be done faster.
Halaman
Persetujuan ii
Pernyataan iii
Penghargaan iv
Abstrak v
Abstract vi
Daftar Isi vii
Daftar Tabel x
Daftar Gambar xi
Bab 1 Pendahuluan 1
1.1 Latar Belakang 1
1.2 Rumusan Masalah 3
1.3 Batasan Masalah 3
1.4 Tujuan Penelitian 3
1.5 Manfaat Penelitian 3
1.6 Metode Penelitian 4
1.7 Sistematika Penulisan 5
Lampiran 106
Halaman
Halaman
ABSTRACT
The existence of game industry which rapidly grows up proves that many people have
big interest in computer games. One of the famous computer games that have been
growing rapidly is Artificial Intelligence game for example: chess and five in row.
Five in row is a logic game that requires a strategy to defeat opponent by arranging
five of pieces with the same color in a line either horizontally, vertically or diagonally.
The algorithm that implemented to this game is Minimax which being optimized with
Alpha Beta Pruning. Minimax which is a search tree algorithm will explore every
node to obtain the maximum value to win the game. However, a search tree in Five In
Row has many depth and large branches, so much time is needed to evaluated every
possibility. That’s why an algorithm is required to optimize the searching, which is
Alpha Beta Pruning. This algorithm will prune some branches at the search tree which
have no effect to the Minimax value. With Alpha Beta Pruning, the scope of searching
can be reduced so that exploring solutions can be done faster.
PENDAHULUAN
Game Five In Row merupakan game logika yang membutuhkan pola pikir dalam
menyusun strategi untuk mengalahkan lawan. Five In Row telah dikenal sejak
beberapa dekade lalu di hampir seluruh belahan dunia meskipun dengan nama
Salah satu algoritma yang digunakan untuk game Five In Row adalah Minimax.
Minimax merupakan algoritma yang digunakan untuk menentukan pilihan langkah
selanjutnya agar memperkecil kemungkinan kehilangan nilai maksimal. Algoritma ini
mendeskripsikan kondisi apabila terdapat pemain yang mengalami keuntungan,
pemain lain akan mengalami kerugian senilai dengan keuntungan yang diperoleh
lawan dan sebaliknya. Algoritma Minimax adalah algoritma berupa pohon pencarian
yang akan menelusuri setiap node untuk memperoleh hasil yang maksimum, namun
jika kedalaman dan percabangan pohon terlalu besar maka algoritma Minimax akan
memerlukan waktu yang sangat lama untuk mengambil keputusan. Untuk
mempersingkat waktu pencarian sekaligus sebagai optimasi, maka digunakanlah
algoritma Alpha Beta Pruning. Alpha Beta Pruning merupakan algoritma yang akan
mengurangi ruang pencarian Minimax.
1. Studi Literatur
Penulisan ini dimulai dengan studi kepustakaan yaitu mengumpulkan bahan-bahan
referensi baik dari buku, artikel, jurnal, makalah, maupun situs internet mengenai
algoritma Minimax dan Alpha Beta Pruning serta beberapa referensi lainnya untuk
menunjang pencapaian tujuan tugas akhir.
3. Perancangan Sistem.
Perancangan ini ditujukan untuk membuat desain aplikasi yang bersifat user
friendly dan mudah digunakan.
4. Pengkodean.
Pada tahap ini sistem yang telah dirancang kemudian diimplementasikan ke dalam
bahasa pemrograman Java.
5. Pengujian.
Pada tahap ini dilakukan pengujian program dan mencari kesalahan pada program
hingga program itu dapat berjalan seperti yang diharapkan. Selain itu juga akan
dilakukan pengujian aplikasi kepada user yang akan bertindak sebagai responden.
Sistematika penulisan tugas akhir ini dibagi menjadi lima bab, yaitu sebagai berikut :
BAB 1 PENDAHULUAN
Berisi penjelasan mengenai latar belakang, rumusan masalah,
batasan masalah, tujuan penulisan, manfaat penulisan, dan
metodologi penelitian.
BAB 5 PENUTUP
Berisi rangkuman kesimpulan dan saran yang diperoleh selama
pengerjaan tugas akhir.
LANDASAN TEORI
Artificial Intelligence atau kecerdasan buatan merupakan cabang dari ilmu komputer
yang konsern dengan pengautomatisasi tingkah laku cerdas (Desiani dan Arhami,
2006).
Five In Row merupakan permainan logika berjenis board-game yang dimainkan oleh
dua pemain dimana setiap pemain berusaha menyusun lima buah bidak sewarna dalam
satu baris baik horizontal, vertikal maupun diagonal. Ukuran papan permainan Five In
Row bervariasi, mulai dari 7 x 7 kotak, 8 x 8 kotak hingga 19 x 19 kotak. Penulis
membatasi aplikasi Five In Row ini hanya pada papan berukuran 10 x 10 kotak.
Berikut ini adalah beberapa ketentuan dan peraturan dalam permainan Five In Row.
a. Papan permainan dalam keadaan kosong.
b. Papan permainan Five In Row berukuran 10 x 10 kotak.
c. Dua pemain, hitam dan putih melangkah bergiliran meletakkan keping masing-
masing di kotak yang kosong pada papan.
d. Pemain hitam adalah pemain pertama, dalam hal ini user.
e. Keping-keping yang telah diletakkan pada kotak tidak dapat dipindahkan
ataupun ditangkap.
f. Pemain yang pertama kali membentuk lima keping sewarna baik secara
vertikal, horizontal maupun diagonal dinyatakan menang.
g. Jika papan permainan telah penuh namun belum ada pemain yang membentuk
Five In Row, maka permainan dinyatakan seri.
Sampai saat ini, Five In Row terus dikembangkan sehingga bermunculan berbagai
jenis Five In Row. Berikut adalah beberapa jenis permainan Five In Row yang ada saat
ini, namun permainannya memiliki beberapa batasan dan peraturan berbeda .
a. Five In Row dengan papan berukuran 19 x 19 kotak. Karena board-game
lainnya yaitu Go memiliki ukuran papan serupa, maka Five In Row pun turut
diciptakan sehingga pemain dapat mengembangkan strategi.
b. Profesional Five In Row yang umumnya disebut Renju, merupakan tipe
permainan asimetris yang tidak seimbang. Langkah pemain hitam dibatasi
tidak boleh membentuk overline (lebih dari 5 keping) ataupun membentuk
doubleline, misalnya tiga-tiga atau empat-empat.
Untuk penelitian ini, hanya dibahas Five In Row standar yang aturan permainannya
telah disebutkan di atas.
Desiani dan Arhami memuat kutipan dari Okamoto dan Takaoka (1997) menyatakan
bahwa agen dapat dipandang sebagai sebuah objek yang mempunyai tujuan dan
bersifat autonomous (memberdayakan resourcenya sendiri) untuk memecahkan suatu
permasalahan melalui interaksi, suatu kolaborasi, kompetisi, negosiasi dan
sebagainya.
Sedangkan menurut Russel dan Norvig (2004), agen adalah sesuatu yang
seolah-olah merasakan sesuatu dari lingkungannya melalui sensor dan memberikan
aksi balasan kepada lingkungannya tersebut melalui effector (actuator). Dan
kumpulan dari beberapa agen yang berada pada lingkungan kerja yang sama disebut
multi-agent.
ENVIRONMENT
?
actuator action
Rational Agent adalah suatu benda yang bisa mengerjakan hal tertentu dengan benar
(Desiani dan Arhami, 2006). Namun, pernyataan di atas harus pula dapat dibuktikan
dengan adanya penilaian atau evaluasi.
Agen tidak bersifat omniscience (serba tahu). Omniscience agen berarti agen
tersebut mengetahui hasil yang sebenarnya dari aksi yang dilakukannya dan dapat
mempertimbangkannya (Desiani dan Arhami, 2006). Dengan kata lain, agen tidak
dapat disalahkan apabila gagal menangkap suatu persepsi atau melakukan suatu aksi.
Suatu perilaku agen dapat dibangun dari dua hal, yaitu knowledge dan
autonomy. Knowledge digunakan untuk mengoperasikan agen di lingkungan tertentu
sedangkan autonomy merupakan perluasan pengetahuan agen berdasarkan
pengalaman agen saat berinteraksi dengan lingkungannya (autonomous).
Kecerdasan buatan berperan penting dalam mendesain program bagi agen. Program
ini berfungsi mengimplementasikan pemetaan percepts ke agen. Program yang
dibangun harus menyatu dengan computing device yang disebut arsitektur untuk
menerima dan menjalankan agen. Arsitektur dapat berupa hardware seperti kamera
image, filtering audio input dan sebagainya.
Ada 4 (empat) tipe dasar pada program agen yang mewujudkan sistem cerdas,
yakni:
Agen refleks sederhana ini merupakan tipe agen yang paling sederhana. Agen ini
memilih tindakan (action) atas dasar persepsi (percept) yang diterimanya. Tipe ini
dapat pula disebut a condition-action rule, dapat dituliskan sebagai berikut:
if … then …
ENVIRONMENT
What the world is like
now?
actuator action
Agen ini harus menjaga keadaan internal yang bergantung pada persepsi lalu untuk
merefleksikan setidaknya beberapa aspek keadaan sekarang yang tidak terobservasi.
Pembaharuan (update) informasi dari internal state terus berjalan, dengan demikian
dibutuhkan dua jenis pengetahuan yang harus dikodekan ke program. Pertama,
informasi mengenai bagaimana lingkungan mempengaruhi kebebasan agen, dan kedua
informasi mengenai bagaimana agen melakukan aksinya.
ENVIRONMENT
How the world evolve? What the world is like
now?
actuator action
Program agen dapat dikombinasikan dengan informasi mengenai hasil dari aksi yang
mungkin dilakukan. Tipe ini turut mempertimbangkan akibat yang diberikan serta
hasil yang dicapai atas aksi yang dilakukan. Pada dasarnya pengetahuan agen akan
keadaan lingkungannya tidak selalu cukup untuk memutuskan aksi yang akan
dilakukan. Dengan kata lain, selain keadaan sekarang, agen juga memerlukan
beberapa informasi tujuan yang menerangkan tentang tujuan kondisi yang
dikehendaki. Pencarian dan perencanaan adalah dua hal yang dilakukan untuk
mencapai tujuan agen. Meskipun tipe ini terlihat kurang efisien, namun sangat
fleksibel. Agen secara otomatis melakukan aksi yang relevan apabila terjadi
perubahan kondisi, begitu pula bila tujuannya diperbaharui maka agen akan
membangkitkan aksi yang baru pula.
ENVIRONMENT
How the world evolve? What the world is like
now?
actuator action
Tipe ini merupakan pengembangan dari tipe berbasis tujuan. Tujuan dianggap tidak
cukup untuk membangkitkan perilaku agen berkualitas tinggi. Utility memiliki fungsi
yang dapat memetakan suatu keadaan ke dalam bilangan riil, yang menerangkan
derajat pencapaian keberhasilan. Spesifikasi lengkap fungsi utility mengizinkan
keputusan rasional dalam dua jenis kasus dimana agen menghadapi masalah, sehingga
tujuannya tidak tercapai. Pertama, ketika terjadi konflik tujuan dimana hanya beberapa
saja yang terpenuhi, fungsi utility menspesifikasikan tukar tambah yang sesuai.
Kedua, ketika terdapat beberapa tujuan yang dapat dilakukan agen, namun tidak dapat
ditentukan mana tujuan yang berhasil dicapai, dalam hal ini fungsi utility
menyediakan kemungkinan bobot kesuksesan dari masing-masing tujuan.
ENVIRONMENT
How the world evolve? What the world is like
now?
actuator action
a. Accessible vs Inaccessible
Jika alat sensor agen memberikan akses untuk state-state lengkap dari suatu
lingkungan maka lingkungan tersebut accessible terhadap agen. Suatu
lingkungan dapat pula menjadi inaccessible akibat adanya gangguan dan
ketidakakuratan sensor atau hal lainnya.
b. Deterministic vs Nondeterministic
Apabila keadaan lingkungan selanjutnya dapat ditentukan atau terpengaruh
oleh keadaan sekarang dan tindakan yang dipilih agen, maka lingkungan
tersebut deterministic, sebaliknya disebut nondeterministic. Jika lingkungan
tersebut inaccessible maka kemungkinan lingkungan tersebut juga
nondeterministic.
c. Episodic vs Nonepisodic
d. Static vs Dynamic
Apabila lingkungan mampu berubah sementara agen sedang berpikir, maka
lingkungan tersebut disebut dynamic, sebaliknya disebut static. Tentunya
lingkungan static lebih mudah bagi agen karena tidak perlu menyimpan suatu
state untuk melakukan aksi, serta tidak perlu mencemaskan perubahan waktu.
Apabila lingkungan tidak berubah dalam suatu waktu tapi agen dapat
menentukan tingkat keberhasilannya, maka lingkungan tersebut semidynamic.
e. Discrete vs Continous
Apabila tidak terdapat batasan jelas antara persepsi dan aksi yang ada maka
lingkungan tersebut adalah descrete. Salah satu contoh lingkungan descrete
adalah catur.
Ruang keadaan dalam Five In Row dapat dipresentasikan dengan pohon pencarian
(tree search). Tiap-tiap node pada pohon berhubungan dengan keadaan yang mungkin
dalam permainan tersebut. Setiap move (gerakan) akan menyebabkan perubahan dari
keadaan sekarang (current state) ke keadaan selanjutnya (child state). Permasalahan
yang sangat rumit yang dihadapi adalah menentukan child state mana yang terbaik.
Pearl dalam David (2008) menyebutkan beberapa hal yang biasa dilakukan
dalam pohon pencarian adalah sebagai berikut:
a. Melihat ke depan seberapa banyak langkah yang memungkinkan.
b. Menghapus percabangan yang tidak berhubungan pada pohon pencarian
ataupun dengan metode-metode tertentu jika ada.
c. Menggunakan informasi penghitungan guna menghitung seberapa besar nilai
suatu posisi.
2.4.1 Minimax
Minimax merupakan salah satu algoritma yang sering digunakan untuk game
kecerdasan buatan seperti catur, yang menggunakan teknik Depth First Search.
Algoritma Minimax akan melakukan pengecekan pada seluruh kemungkinan yang
ada, sehingga akan menghasilkan pohon permainan yang berisi semua kemungkinan
return best_move;
}
MIN
MAX
MIN
Untuk menyiasati banyaknya node yang ditelusuri oleh Minimax, perlu dibuat sebuah
optimasi yang dapat mereduksi kemungkinan yang akan dianalisis. Alpha beta
pruning merupakan optimasi dari algoritma Minimax yang akan mengurangi jumlah
node yang dievaluasi oleh pohon pencarian. Algoritma ini akan berhenti mengevaluasi
langkah ketika terdapat minimal satu langkah yang lebih buruk daripada langkah yang
dievaluasi sebelumnya. Sehingga langkah berikutnya tidak perlu dievaluasi lebih jauh.
Dengan algoritma ini hasil optimasi dari algoritma Minimax tidak akan berubah.
Variabel alpha (α) digunakan sebagai batas bawah node max, sedangkan
variabel beta (β) digunakan sebagai batas atas node min. Pada node min, evaluasi akan
dihentikan apabila telah didapat node anak yang memiliki nilai lebih kecil dibanding
dengan nilai batas bawah (α), sebaliknya pada node max evaluasi akan dihentikan
apabila telah didapat node anak yang memiliki nilai lebih besar dibanding dengan nilai
batas atas (β).
Jika tiap kedalaman (depth) berada dalam best case (langkah terbaik selalu
langsung didapat) maka time complexity algoritma adalah O(bd/2) dengan b = faktor
percabangan tiap node dan d = kedalaman (depth) maksimum (Russell dan Norvig,
2003). Sedangkan time complexity Minimax yang O(bd), dengan demikian
penggunaan Alpha Beta Pruning dapat menghemat banyak waktu.
MIN
MAX
MIN
2.6 Java
Java adalah bahasa pemrograman yang berorientasi objek (OOP) dan dapat dijalankan
pada berbagai platform sistem operasi. Perkembangan Java tidak hanya terfokus pada
satu sistem operasi, namun dikembangkan untuk berbagai sistem operasi dan bersifat
open source. Berikut adalah beberapa karakteristik Java:
1. Sederhana (Simple),
Memiliki sintaks yang hampir sama dengan C++ namun sintaks Java telah
banyak mengalami perkembangan terutama menghilangkan penggunaan
pointer yang rumit dan multiple inheritance.
4. Interpreted
Dijalankan dengan interpreter Java Virtual Machine (JVM). Hal ini
menyebabkan source code Java dapat dijalankan pada platform berbeda-beda.
5. Robust
Java memiliki reliabilitas yang tinggi. Compiler pada Java memiliki
kemampuan mendeteksi error lebih teliti dibandingkan dengan bahasa
pemrograman lain.
6. Secure
Java juga digunakan untuk aplikasi internet, sehingga Java memiliki beberapa
mekanisme keamanan untuk menjaga aplikasi tidak digunakan untuk merusak
sistem komputer yang menjalankan aplikasi tersebut.
7. Architecture Neutral
Program Java merupakan platform independent. Dengan kata lain, program
cukup mempunyai satu buah versi yang dapat dijalankan diberbagai platform
dengan JVM.
8. Portable
Souce code maupun program Java dapat dengan mudah dipindahkan ke
platform lain tanpa harus dikompilasi ulang.
9. Performance
Performance Java memang dirasa kurang tinggi, namun dapat ditingkatkan
dengan menggunakan Java lain seperti buatan Inprise, Microsoft maupun
Symantec yang menggunakan Just In Time Compilers (JIT).
11. Dynamic
Java didesain untuk dijalankan pada lingkungan yang dinamis. Perubahan pada
suatu class dapat dilakukan tanpa menganggu program yang menggunakan
class tersebut.
UML (Unified Modelling Language) adalah keluarga notasi grafis yang didukung oleh
meta-model tunggal, yang membantu pendeskripsian dan desain sistem perangkat
lunak, khususnya sistem yang dibangun menggunakan pemrograman berorientasi
objek (Fowler, 2005). Notasi merupakan grafik-grafik yang terlihat dalam model,
misalnya notasi class diagram, activity diagram dan sebagainya. Sedangkan meta-
model adalah metode yang mendefinisikan hubungan antara notasi pada model.
Diagram ini digunakan untuk menunjukkan aliran aktivitas di sistem sekaligus sebagai
pandangan dinamis terhadap sistem. Diagram ini penting untuk memodelkan fungsi
sistem dan menekankan pada aliran kendali di antara objek-objek.
Diagram ini dapat dikatakan mirip seperti diagram alir namun diperluas
dengan menunjukkan aliran kendali suatu aktivitas ke aktivitas lain serta mendukung
behavior paralel. Diagram aktivitas berupa operasi-operasi dan aktivitas-aktivitas use
case.
Diagram kelas merupakan diagram yang paling sering digunakan pada permodelan
berorientasi objek. Diagram kelas menunjukkan aspek statik sistem terutama untuk
mendukung kebutuhan fungsional sistem, misalnya kebutuhan pengguna. Class pada
diagram kelas dapat secara langsung diimplementasikan di bahasa pemrograman
objek secara langsung mendukung bentukan kelas.
Use case adalah teknik untuk merekam persyaratan fungsional sebuah sistem (Fowler,
2005). Use case mendeskripsikan tipe interaksi antara pengguna dengan sistem
dengan menyajikan narasi bagaimana sistem tersebut digunakan.
Analisis sistem adalah proses menentukan kebutuhan sistem, apa yang harus
dilakukan sistem untuk memenuhi kebutuhan klien (user) (Sutopo, 2001). Tahapan
analisis kebutuhan merupakan tahap awal untuk membangun sebuah sistem atau
aplikasi. Dengan adanya analisis ini diharapkan agar nantinya dihasilkan aplikasi yang
baik dan sesuai dengan kebutuhan.
10
1 2 3 4 5 6 7 8 9 10
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 2 0 0 0 0 0
0 0 0 1 1 2 1 1 0 0
0 0 0 0 1 1 2 0 0 0
0 0 2 0 1 2 0 2 0 0
0 0 0 2 1 1 0 0 2 0
0 0 0 0 2 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
Interface Aplikasi
yes
no
Yes
no
Permainan
Berakhir?
yes
New Game?
yes
no no
Stop
Untuk lebih jelasnya, proses aplikasi Five in Row akan dipaparkan sebagai berikut.
1. User menjalankan aplikasi permainan, kemudian komputer akan
membangkitkan interface papan permainan sekaligus level default, yaitu 2.
2. Jika user langsung ingin bermain melawan komputer maka silakan meletakkan
keping (piece) pada kotak yang diinginkan. Setelah itu komputer akan
membangkitkan gerakan kemudian menampilkan posisi computer piece yang
akan membendung gerakan user.
3. Selama permainan berlangsung komputer akan membangkitkan fungsi
terminal test untuk mengecek apakah permainan telah berakhir atau belum.
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
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.
Start
Terminal
Ya
State?
Tidak
Successor β ß Min
Node =
MaxNode
Tidak β≤α Ya
Ya
α ≥ β Ya
Tidak Stop
Tidak
Pada awal permainan akan diperiksa terlebih dahulu apakah node yang
diperiksa merupakan terminal state atau tidak, jika ya maka fungsi evaluasi akan
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.
1 1524 38
14 25
D
B C
2
16 19 37
7 8 13 20 23 26 31 32
F G H I
E J
3 4 5 10 11 18 21 27 28 34 35 36
6 9 12 22 29 30 33
17
3 -3 5 10 1 0 1 0 -3 -10
K L M N S T O P Q R
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.
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.
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 -∞.
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 Node A (D, 3, +∞) Node A masih bernilai 3 karena node C < node
D=- B, sehingga tidak mempengaruhi nilai awal.
14. D I 3 +∞ D=- Node D (I, 3, +∞)
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.
Nilai formasi mutlak diperlukan sebagai bobot dari pohon pencarian yang akan
dibangkitkan. Nilai formasi merupakan nilai yang diperoleh berdasarkan jumlah
keping yang ada dalam satu baris, kolom ataupun diagonal pada papan permainan.
Dua atau tiga buah kepingan yang berada pada satu baris ataupun kolom tentunya
berbeda nilainya dengan keping tunggal, begitu pula halnya dengan sederetan
kepingan yang tidak terbendung lawan tentunya memiliki nilai lebih unggul
dibandingkan dengan yang terbendung. Berikut adalah tabel nilai formasi pada
permainan Five in Row dengan ‘X’ adalah user piece dan ‘O’ adalah computer
piece.
Tabel 3.3 Nilai Formasi
Nama Formasi Nilai Bentuk Formasi
Comp_capped2 5 _OOX_
User_capped2 5 _XXO_
Comp_uncapped2 10 _OO_
User_uncapped2 10 _XX_
Comp_capped3 20 _OOOX
User_capped3 30 _XXXO
Comp_uncapped3 100 _OOO_
User_uncapped3 120 _XXX_
Comp_capped4 500 _OOOOX
User_capped4 500 _XXXXO
Fungsi evaluasi berfungsi sebagai penghitung nilai dari setiap node yang terdapat
pada pohon permainan. Nilai yang telah didapat akan dijadikan acuan pergerakan
selanjutnya. Formasi yang dibentuk oleh keping permainan akan menghasilkan
nilai yang akan dijadikan bobot nilai pohon.
Dalam catur, w adalah bobot tiap buah catur dan f adalah jumlah buah catur
tersebut pada papan catur. Sedangkan dalam Five in Row, w adalah bobot formasi
dan f adalah jumlah formasi yang terbentuk.
����� = ��2 . ��2 + ��� 2 . ��� 2 + ��3 . ��3 + ��� 3 . ��� 3 + ��4 . ��4
1 2 3 4 5 6 7 8 9 10
Dengan demikian jumlah uncapped2 ada 2 formasi, capped2 ada 4 formasi dan
capped4 1 formasi. Maka jumlah valuenya adalah:
Sekarang akan dicari value dari keping hitam atau user piece. Seperti langkah di
atas, pertama kali harus dilakukan evaluasi posisi.
1. Pada baris D terdapat capped2 yaitu D5 dan D6. Nilainya = 5.
2. Pada kolom 4 terdapat uncapped2 yaitu C4 dan E4. Nilainya = 5.
3. Pada diagonal terdapat capped2 yaitu F6 dan G7. Nilainya = 5.
4. Pada diagonal lain terdapat uncapped2 yaitu C5 dan D6. Nilainya = 5.
Maka jumlah formasi capped2 ada 2, begitu pula dengan formasi uncapped2.
Sehingga jumlah valuenya adalah:
Yang artinya posisi di atas sangat menguntungkan bagi pemain putih (computer).
Jika giliran putih bermain, maka tidak diragukan lagi formasi capped4 akan
segera dijadikan formasi kemenangan. Sebaliknya apabila giliran hitam maka user
akan segera mengambil tindakan dengan menutup kotak E7 dengan keping hitam
sehingga jalan kemenangan putih tertutup.
Proses untuk mendapat bobot nilai pada pohon permainan tidaklah singkat.
Mulanya komputer akan menelusuri kemungkinan pergerakan langkah yang akan
dilakukan dan asumsi pergerakan lawan. Kemudian hasil dari formasi yang
terbentuk dari masing-masing kemungkinan akan dihitung sesuai dengan fungsi
evaluasi. Berikut akan dibahas sebuah contoh kasus proses evaluasi formasi yang
terdapat pada pohon permainan Five in Row.
2.
-630
4.
-165
5.
-145
6.
-170
7.
-190
Menurut John Burch dan Gary Grudnitski dalam Yatini (2007) menyebutkan
bahwa perancangan dapat didefinisikan sebagai penggambaran, perencanaan dan
pembuatan sketsa atau pengaturan dari beberapa elemen yang terpisah ke dalam
suatu kesatuan yang utuh dan berfungsi.
Proses yang akan dideskripsikan adalah proses yang terdapat pada diagram use
case di atas, yaitu Play, New game, Level dan About. Sedangkan aktivitas aplikasi
akan digambarkan dengan activity diagram.
Berikut ini adalah tabel proses dan diagram aktivitas untuk use case di
atas.
1) Play
2) New game
Berikut ini adalah tabel proses dan activity diagram New game.
3) Level
4) About
1) Play
Rangkaian kejadian yang terjadi pada proses Play akan dipaparkan sebagai
berikut.
1. Player melakukan aktivasi aplikasi.
2. Class Interface akan memanggil class Board untuk menampilkan papan
permainan dan sebagai reaksi, class Board menampilkan new board.
3. Setelah tampilan aplikasi muncul maka Player dapat memulai permainan
dengan meletakkan UserPiece pada papan.
4. Class Interface membaca inputan Player dengan bantuan class
ActionListener. Informasi inputan Player akan diberikan kepada class
Game, sehingga class Game dapat menentukan giliran pemain selanjutnya.
2) New game
Class – class yang terlibat dalam proses New game serta diagram sekuensialnya
dapat dilihat pada gambar di bawah ini.
Class – class yang terlibat dalam proses Level serta diagram sekuensialnya dapat
dilihat pada gambar di bawah ini.
4) About
Class – class yang terlibat dalam proses About serta diagram sekuensialnya dapat
dilihat pada gambar di bawah ini.
Pada tahap ini rancangan yang telah dibuat pada perancangan konseptual
diterjemahkan ke dalam bentuk fisik sehingga terbentuk spesifikasi yang lengkap.
Tahapan ini menitikberatkan pada proses rancang bangun antarmuka (interface),
rancangan basis data dan sebagainya.
Game About
2) Menu
Menu perlu ditampilkan pada aplikasi sebagai petunjuk dan pemandu bagi user
untuk mengetahui fitur-fitur atau fasilitas yang terdapat pada aplikasi. Berikut
adalah gambar tampilan antarmuka menu pada aplikasi ini.
Apabila user mengklik menu Game maka akan muncul pop up menu yang
terdiri dari New game, Level dan Exit seperti gambar di atas. Pada masing –
masing submenu terdapat huruf awal yang digarisbawahi, ini berarti user dapat
melakukan pemilihan dengan inputan keyboard sesuai dengan huruf yang
dimaksud, misalnya untuk memilih New game cukup tekan tombol N, tombol L
untuk Level dan E untuk Exit.
Sedangkan jika user mengklik menu About, maka akan muncul message
dialog yang berisi tentang petunjuk permainan serta author aplikasi seperti pada
gambar di bawah ini.
About
Game Play
Game Play X
OK
Five In Row
OK
Five In Row
OK
Five In Row
OK
Piranti interaksi merupakan alat bantu bagi user ketika menggunakan suatu
aplikasi. Untuk itu perlu dirancang aplikasi dengan beberapa piranti masukan
yaitu mouse dan keyboard. Dengan adanya dukungan aplikasi terhadap kedua
jenis piranti ini maka diharapkan user akan lebih merasa mudah dan nyaman saat
berinteraksi dengan aplikasi permainan ini.
Tahap implementasi merupakan lanjutan dari tahap perancangan. Pada tahap ini
seluruh spesifikasi dari aplikasi yang dirancang akan diterjemahkan ke dalam
bahasa pemrograman sehingga menghasilkan sebuah perangkat lunak.
Aplikasi permainan Five In Row ini secara khusus diberi nama JFiNRo,
untuk membedakannya dengan aplikasi serupa.
Perangkat lunak yang digunakan dalam pembuatan aplikasi permainan ini adalah
Java Standard Development Kit 6 Update 7 serta NetBeans IDE (Integrated
Development Environtment) 6.8 yang bersifat GUI yang sangat membantu dalam
proses pengkodean dan dapat mengurangi kesalahan penulisan sintaks program.
Aplikasi ini dibangun pada sistem operasi Windows XP Professional Service Pack
2.
Tampilan utama dari aplikasi permainan JFiNRo ini dapat dilihat pada gambar
4.1. Gambar tersebut memperlihatkan tampilan papan pada awal permainan.
Ketika permainan dimulai, papan dalam kondisi kosong seperti yang diperlihatkan
oleh gambar.
Tampilan permainan yang sedang berlangsung dapat dilihat pada gambar 4.2.
Gambar ini memperlihatkan kedua pemain, user dan komputer dalam beberapa
kondisi akhir permainan.
(a) (b)
(a) (b)
(c)
Berikut adalah tampilan dari menu yang terdapat pada aplikasi permainan JFiNRo
ini. Gambar (a) adalah submenu dari menu Game dan gambar (b) adalah submenu
dari menu About.
(a) (b)
Gambar 4.4 Menu Aplikasi
Tampilan Game Play akan muncul ketika user memilih menu About atau
menekan Alt+A melalui keyboard. Game Play berisikan petunjuk singkat aturan
permainan beserta author aplikasi seperti yang tertera pada gambar 4.5 berikut ini.
int moveVal;
Square s = SquareFactory.create();
if (giliran == COMPUTER_PIECE) {
switch (b.terminalTest()) {
case USER_WIN:
moveVal = MINWIN;
break;
case COMPUTER_WIN:
moveVal = MAXWIN;
break;
default:
moveVal = move(kedalamanSaatIni + 1, maxdepth, b,
potentialSquare,
USER_PIECE, alpha, beta);
break;
}
if (alphaBetaPruningEnabled) {
alpha = alpha > moveVal ? alpha : moveVal;
if (alpha >= beta) {
return beta;
}
}
} else {
switch (b.terminalTest()) {
case USER_WIN:
moveVal = MINWIN;
break;
case COMPUTER_WIN:
moveVal = MAXWIN;
break;
default:
moveVal = move(kedalamanSaatIni + 1, maxdepth, b,
potentialSquare,
COMPUTER_PIECE, alpha, beta);
break;
}
if (alphaBetaPruningEnabled) {
beta = beta < moveVal ? beta : moveVal;
if (beta <= alpha) {
return alpha;
}
}
}
}
int retVal = 0;
if (u.uncapped4 > 0) {
return MINWIN;
}
if (c.uncapped4 > 0) {
return MAXWIN;
}
retVal += c.capped2 * 5;
retVal -= u.capped2 * 5;
Berikut adalah beberapa langkah pengujian pada level satu. Penomoran kotak
dimulai dari sudut kiri bawah, searah sumbu y adalah A, B, C dan seterusnya
hingga J. sedangkan searah sumbu x adalah 1, 2, 3 dan seterusnya hingga kotak
10.
Pada level satu agen bermain tidak maksimal karena agen hanya
cenderung membuat formasi kemenangan tanpa peduli dengan formasi lawan.
Apabila user bermain secara optimal maka agen pada level satu sangat mudah
dikalahkan. Dari hasil pengujian terhadap 25 orang responden, user tidak pernah
kalah dari komputer.
Berikut adalah beberapa langkah pengujian pada level dua. Penomoran kotak
sama seperti sebelumnya.
Pada langkah ketiga di atas, agen telah melakukan suatu tindakan yang
membendung pergerakan user karena berdasarkan penghitungan evaluasi value
user saat itu lebih unggul dibandingkan komputer, sehingga agen mengambil
keputusan tersebut. Sedangkan pada langkah ketujuh, agen bertindak cerdas
dengan membendung formasi user sekaligus membentuk formasi
comp_uncapped3 yang berbalik merugikan user. Dengan demikian agen telah
bertindak cerdas.
Pada langkah kesepuluh, value yang diperoleh dari formasi tersebut adalah
sebagai berikut.
Value max (komputer) = 10
Value min (user) = 55
Sehingga value total = 10 – 55 = -45, dengan kata lain pada posisi ini user lebih
unggul dibandingkan komputer.
Berikut adalah beberapa langkah yang diujikan pada agen level empat.
Tabel 4.5 Pengujian Agen Level Empat
No. Langkah User Keterangan Langkah Agen
1. User memulai permainan
dengan meletakkan keping
pada F5 dan seperti
sebelumnya komputer juga
meletakkan kepingnya
pada G4.
Dari tabel pengujian di atas dapat disimpulkan bahwa agen terbukti dapat
bermain secara optimal dan dapat berpikir sesuai dengan konsep algoritma
Minimax dan Alpha Beta Pruning.
Pengujian integrasi ini akan dilakukan pada dua platform berbeda, yaitu
Windows dan Linux untuk memastikan keadaan aplikasi pada kedua sistem
operasi itu dapat bekerja dengan baik. Berikut ini adalah pengujian integrasi
aplikasi pada tiap proses pada masing-masing platform.
4.7.1.1 Play
Berikut adalah hasil evaluasi pada proses Play pada platform Windows.
Sedangkan tabel di bawah ini adalah hasil pengujian terhadap proses Play
pada platform Linux.
Berikut adalah hasil evaluasi pada proses New game pada platform Windows.
Sedangkan tabel di bawah ini adalah hasil evaluasi proses New game pada
platform Linux.
4.7.1.3 Level
Berikut adalah hasil evaluasi pada proses Level pada platform Windows.
Sedangkan tabel di bawah ini adalah hasil evaluasi proses Level pada
platform Linux.
4.7.1.4 About
Berikut adalah hasil evaluasi pada proses About pada platform Windows.
Sedangkan tabel di bawah ini adalah hasil evaluasi proses About pada
platform Linux.
Ada tiga poin utama yang perlu dievaluasi dari perancangan antarmuka
aplikasi JFiNRo ini, yaitu:
1. Easy to learn, mudah dipelajari bagaimana menjalankan aplikasi.
2. Easy to use, fitur-fitur ataupun menu dalam antarmuka mudah digunakan.
3. Easy to understand, antara lain user mampu memahami fungsi dari
masing-masing button (tombol).
60
50
40
30
20
10
0
Amat baik Baik Cukup baik Kurang baik
Pengujian pada aspek ini bertujuan untuk memperoleh informasi mengenai tingkat
kesulitan menjalankan aplikasi pada komputer pengguna. Dari pengujian ini akan
didapati apakah pengguna memahami aturan permainan hanya dari melihat isi
game Play yang tersedia serta memahami fungsi-fungsi dari menu yang ada.
20
15
Amat baik
Baik
10
Cukup baik
5 Kurang baik
0
Kemudahan Aturan Alat inputan Fungsi menu
menjalankan permainan
aplikasi
80
70
60
50
40
30
20
10
0
Amat baik Baik Cukup baik Kurang baik
50
45
40
35
30
25
20
15
10
5
0
Amat baik Baik Cukup baik Kurang baik
Berikut adalah hasil kuesioner yang diperoleh untuk pengujian pada aspek
kehandalan aplikasi.
Tabel 4.17 Hasil Kuesioner Kehandalan Aplikasi
No. Level Permainan Menang Kalah Seri Jumlah
1. 1 0 25 0 25
2. 2 18 5 2 25
3. 3 22 2 1 25
4. 4 12 1 - 13
Dari hasil pengujian dapat dilihat bahwa pada level 1 (satu) aplikasi
mengalami kegagalan total karena sangat mudah dikalahkan. Berbeda dengan
level 2 (dua) dimana aplikasi dapat memenangkan 18 kali pertandingan dengan 5
kali kekalahan dan 2 kali seri. Begitu pula pada level 3 (tiga), aplikasi hanya
mengalami kekalahan 2 kali dan seri 1 kali dan menang 22 kali.
Dari hasil perhitungan di atas diperoleh bahwa pada level dua aplikasi
mampu memenangkan pertandingan sebanyak 72%, kalah 20% dan seri 8%. Pada
level tiga mampu memenangkan pertandingan sebanyak 88%, kalah 8% dan seri
4%.
5.1 Kesimpulan
Berdasarkan pembahasan dan penelitian yang telah dipaparkan pada bab sebelumnya
maka dapat diambil kesimpulan seperti berikut ini.
2. Aplikasi JFiNRo dapat berjalan baik pada beberapa platform seperti Windows
dan Linux dengan sama baiknya.
4. Semakin tinggi level permainan, maka semakin lama pula waktu yang
dibutuhkan komputer untuk mengevaluasi langkah sebab ruang pencarian
semakin besar.
5. Agen yang terdapat pada aplikasi JFiNRo telah diuji dan hasilnya sesuai
dengan konsep perancangan agen cerdas.
Berikut ini adalah beberapa saran yang perlu dipertimbangkan untuk menjadi landasan
penelitian selanjutnya.
Allis, L.V dan Van Hendrik, H. J. 1992. Go-Moku and Threat-Space Search.
Netherland : University of Limburg.
David. 2008. Anilisis dan Pengembangan Sistem Aplikasi Catur Komputer Berbasis
Kecerdasan Buatan dalam Bahasa Pemrograman Java. Skripsi. Medan :
Departemen Ilmu Komputer FMIPA USU.
Desiani, Anita dan Arhami, Muhammad. 2006. Konsep Kecerdasan Buatan.
Yogyakarta : Penerbit Andi.
Fowler, Martin. 2005. UML Distilled Edisi 3 Panduan Singkat Bahasa Pemodelan
Objek Standar. Yogyakarta: Penerbit Andi.
Indrajani dan Martin. 2007. Pemrograman Berbasis Objek dengan Bahasa Java.
Jakarta: Elex Media Komputindo.
Pearl, Judea. 1984. Heuristics : Intelligent Search Strategies for Computer Problem
Solving. California : Addison-Wesley Publishing Company.
Prabawa, Aditya Eka W. 2009. Kombinasi Greedy, Minimax dan Alpha Beta Pruning
untuk Permainan Reversi. Bandung : Institut Teknologi Bandung.
Russel, Stuart, dan Norvig, Peter. 2004. Artificial Intelligence A Modern Approach.
Second Edition. New Jersey: Prentice Hall.
Vebrina, Yus Gias. 2008. Penerapan Q Learning pada Aplikasi Board Game. Skripsi.
Bandung: Institut Teknologi Bandung.
Whitten, Jeffrey, L. and Bentley, Lonnie, D. 1998. System Analysis and Design
Method. Fourth Edition. New York : Irwin McGraw Hill.
Yatini, Indra. 2007. Interaksi Manusia dan Komputer. Yogyakarta : Graha Ilmu.