Penerapan Algoritma Greedy dan Algoritma BFS untuk AI pada Permainan Permainan Greedy Greedy Spiders DIAZ WALID PRASETYO HABIBI 110403020015 FTI/SI(R2)
Abstrak — Makalah ini membahas membahas tentang algoritma Greedy dan algoritma Breadth First Search atau lebih dikenal dengan BFS beserta penerapannya dalam sebuah mobile game yaitu Greedy Spiders. Algoritma Greedy sendiri merupak merupakan an salah satu algoritm algoritma a yang populer dalam dalam memecah memecahkan kan persoala persoalan n optimasi optimasi,, baik maksimasi maksimasi ataupun ataupun minimasi minimasi.. Algoritm Algoritma a BFS merupak merupakan an salah salah satu algoritma algoritma untuk traversa traversall graf. graf. Greedy Greedy Spiders Spiders merupak merupakan an turn-base turn-based d pule pule game game yang memiliki memiliki storyline yang cukup menarik. !ada permainan ini terdapat laba-laba yang ingin memakan serangga serangga yang sudah terperangkap di "aring laba-laba tersebut. Bagi pemain, ob"ektif dari permainan ini adalah menyelamatkan serangga serangga yang terperangkap agar tidak dimakan oleh laba-laba. !emain bisa menyelamatkan serangga dengan menggunakan menggunakan tools yang diberikan. #amun, penerapan penerapan algoritma Greedy dan BFS yang akan dibahas dalam makalah ini adalah untuk menentukan bagaimana bagaimana pergerakan pergerakan laba-laba yang merupakan merupakan A$ dalam permainan ini dengan ob"ektif untuk mencapai mencapai serangga yang men"adi santapannya. %ata %unci — algoritma Greedy, algoritma BFS, Greedy Spiders, laba-laba, laba-laba, "aring laba-laba, laba-laba, serangga
I.
PENDAHULUAN
Deasa ini! game tela" men#amur di $eragam kalangan. %erdapat $anyak #enis game yang ada! ada! mulai dari dari p!!"e game! &PG ' R#"e P"a$%&g 'ame (! a%&g game game! dan lain se$againya. 'ame yang semakin men#amur di masyarakat masyarakat didukung dengan semakin ter#angkaunya "arga *e+%e yang dapat digunakan untuk $ermain game yang di#ual di pasaran, 'ame *e+e"#pe pun pun semakin $anyak $ermun)ulan karena pangsa pasar yang semakin luas. 'ame yang akan di$i)arakan dalam makala" ini adala" sala" satu p!!"e game pada m#-%"e p.#&e atau perangkat lainnya yang $eroperasi pada sistem sistem operasi m#-%"e yang sedang -##m%&g yakni android, P!!"e game sendiri adala" #enis game yang $anyak diminati karena $iasanya memiliki "e atau aturan yang muda" dan $iasanya men#adi permainan asa" otak.
'ame yang akan di$a"as adala" Greedy Spiders. Greedy Spiders merupakan game yang termasuk pada #enis p!!"e game dimana game ini menggunakan logika seder"ana untuk menyelesaikannya. Pada permainan ini terdapat la$a* la$a yang ingin memakan serangga yang terperangkap pada #aring la$a*la$a terse$ut. +$#ekti, $agi pemain pada permainan ini adala" adala" untuk menyelamatkan serangga serangga yang ter#e$ak pada #aring #aring la$a*la$a se"ingga tidak dapat dapat dimakan ole" la$a*la$a. La$a*la$a terse$ut merupakan AI pada permainan ini yang akan men#adi laan $agi pemain dalam menyelesaikan permainan ini. La$a*la$a terse$ut akan men)ari #alan ter$aik untuk mendapatkan serangga untuk dimakan se$elum serangga dapat di$e$askan ole" pemain. Apa$ila pemain dapat mem$e$askan semua serangga yang terperangkap! maka pemain tela" menyelesaikan le-el pada permainan ini. Namun! apa$ila la$a*la$a $isa memakan sala" sala" satu dari serangga serangga yang terperangkap! maka permainan $erak"ir $erak"ir dan pemain gagal meleati meleati le-el terse$ut.
Penulis sendiri tidak ta"u pasti algoritma apa yang se$enarnya digunakan untuk A%%%a" I&e""%ge&e 'AI( pada permainan Greedy Greedy Spiders ini. Namun! Namun! penulis akan men)o$a mem$a"as mem$a"as penggunaan penggunaan algoritma Greedy Greedy dan algoritma BFS untuk menentukan pergerakan AI pada permainan ini se"ingga la$a*la$a dapat memakan sala" satu dari serangga yang terperangkap. Penerapan Penerapan dari algoritma Greedy dan BFS pada permainan permainan Greedy Spiders akan di$a"as pada $a$* $a$ selan#utnya.
II.
G&EED4 SPIDE&S! ALG+&I%5A G&EED4! DAN ALG+&I%5A B&EAD%H FI&S% SEA&3H 'BFS(
A, 'ee*$ Sp%*e
Gambar Menu )tama Game Greedy Spiders
Greedy Spiders adala" se$ua" m#-%"e game untuk sistem operasi i+S dan android. Pengem$ang dari permainan ini adala" Blyts yang merupakan #ae .#e. Greedy Spiders memiliki /0 le-el yang di$ungkus dalam 1 $ua" le-el utama! yaitu %ime to Eat! 2ild Hills! Dry Es)ape! dan S)ary 3rypts.
Gambar * +ontoh $nterface (evel - pada !ermainan Greedy Spiders
Gambar & 'mpat ( evel )tama pada !ermainan Greedy Spiders
B, A"g#%ma 'ee*$ Algoritma Greedy merupakan metode yang paling populer dalam meme )a"kan persoalan optim asi. Ada dua ma
Game ini merupakan &-ae* p!!"e game yang memiliki #$"%&e yang )ukup menarik. Pada permainan ini terdapat la$a*la$a yang ingin memakan serangga yang terperangkap pada #aring la$a*la$a terse$ut. +$#ekti, $agi pemain pada permainan ini adala" untuk menyelamatkan serangga yang terperangkap agar tidak dimakan ole" la$ala$a. Pemain dapat menyelamatkan serangga dengan menggunakan tools yang di$erikan! yaitu gunting untuk memotong #aring la$a* la$a! api untuk mem$akar #aring! ae -g yang digunakan untuk menipu la$a*la$a se"ingga la$a*la$a $ergerak ke ara"nya $ukan ke ara" serangga yang asli! atau menggunakan kekuatan supranatural. %erdapat tu#u" serangga yang "arus diselamatkan. Namun! pada tiap le-elnya tidak seluru"nya mun)ul sekaligus.
Gambar enis Serangga pada !ermainan Greedy Spiders
persoalan optimasi! yaitu maksimasi dan minimasi. Prinsip yang digunakan dalam algoritma ini adala" 6ae .a $# a& ge 6 7 yang $erarti am$il yang $isa didapat sekarang. Algoritma Greedy adala" algoritma yang meme)a"kan masaka" langka" per langka". Pada setiap langka"
diam$il pili"an yang ter$aik yang dapat diperole" pada saat itu tanpa memper"atikan konsekuensi ke depan seperti prinsipnya dengan "arapan $a"a dengan memili" optimum lokal pada setiap langka" akan $erak"ir dengan optimum glo$al.
Elemen*elemen algoritma Greedy 8 .
Himpunan kandidat! 3. Himpunan ini $erisi elemen*elemen pem$entuk solusi. Pada setiap langka"! satu $ua" kandidat diam$il dari "impunannya.
/.
Himpunan solusi! S. Himpunan ini $erisi kandidat*kandidat yang terpili" se$agai solusi persoalan. Dengan kata lain! "impunan solusi adala" "impunan $agian dari "impunan kandidat.
9.
Fungsi seleksi 'e"e%#& &%#&( Fungsi ini dinyatakan dengan predikat seleksi. 5erupakan dungsi yang pada setiap langka" memili" kandidat yang paling memungkinkan men)apai solusi optimal. :andidat yang suda" dipili" pada suatu langka" tidak perna" dipertim$angkan lagi pada langka" selan#utnya.
1.
Fungsi kelayakan ' ea%-"e( Fungsi ini dinyatakan dengan predikat layak. Fungsi kelayakan ini merupakan ,ungsi yang memeriksa apaka" suatu kandidat yang tela" dipili" dapat mem$erikan solusi yang layak! yakni kandidat terse$ut $ersama*sama dengan "impunan solusi yang suda" ter$entuk tidak melanggar kendala '#&a%&( yang ada. :andidat yang layak dimasukkan ke dalam "impunan solusi! sedangkan yang tidak layak di$uang dan tidak perna" dipertim$angkan lagi.
;.
Fungsi o$yekti, Fungsi o$#ekti, ini merupakan se$ua" ,ungsi yang memaksimumkan atau meminimumkan nilai solusi.
Skema umum algoritma Greedy adala" se$agai $erikut.
function greedy(input C: himpunan_kandidat) himpunan_kandidat {Mengembalikan solusi dari persoalan optimasi dengan algoritma greedy Masukan: himpunan kandidat C Keluaran: himpunan solusi yang bertipe himpunan_kandidat} x : kandidat S : himpunan_kandidat Deklarasi
Algoritma:
S {} {inisialisasi S dengan kosong} while (not SOLS!(S)) and (C ≠ {} ) do x S"L"#S!(C){pilih sebuah kandidat dari C} C C $ {x} {elemen himpunan kandidat berkurang satu} if L%&%#(S ∪ {x}) then
∪
S S {x} endif endwhile {SOLUSIS! or C " {}} if SOLS!(S) then return S el'e write(tidak ada 'olu'i) endif
Solusi optimum glo$al yang diperole" dari algoritma Greedy ini $elum tentu merupakan solusi optimum 'ter$aik(! tetapi -#p%mm atau pe*##p%mm. Hal ini dikarenakan algoritma Greedy tidak $eroperasi se)ara menyeluru" ter"adap semua alternati, solusi yang ada dan terdapat $e$erapa ,ungsi seleksi yang $er$eda se"ingga kita "arus memili" ,ungsi yang tepat #ika menginginkan algoritma yang meng"asilkan solusi optimal.
7, A"g#%ma Bea*. F% Sea. (BFS)
%erdapat dua $ua" algoritma tra-ersal untuk gra,.. %ra-ersal di dalam gra, $erarti mengun#ungi simpulsimpul dengan )ara yang sistematik. Dua $ua" algoritma terse$ut adala" Bea*. F% Sea. 'BFS( dan Dep. F% Sea. 'DFS(. Pada makala" ini! "anya akan di$a"as mengenai BFS.
Untuk algoritma BFS! tra-ersal dimulai dari simpul -. Algoritmanya adala" se$agai $erikut. .
:un#ungi simpul -.
/.
:un#ungi semua simpul yang $ertetangga dengan simpul - terle$i" da"ulu.
9.
:un#ungi simpul yang $elum dikun#ungi dan $ertetangga dengan simpul*simpul yang tadi dikun#ungi! demikian seterusnya.
Pe*##*e algoritma BFS! yaitu diperlukan 8
.
5atriks ketetanggan A > ?a%8@ yang $erukuran & 9 & a %8 : ! #ika simpul % dan simpul 8 $ertetangga! a%8 : ! #ika simpul % dan simpul 8 tidak $ertetangga.
/.
Antrian untuk menyimpan simpul yang tela" dikun#ungi.
9.
%a$el -##"ea& yang $ernama dikunungi
dikunungi : array*+,,n- of .oolean
dikun#ungi?i@ > true #ika simpul % suda" dikun#ungi dikun#ungi?i@ > ,alse #ika simpul % $elum dikun#ungi
Inisialisasi ta$el8
for i l to n do
procedure .3S(input 2:integer) { #ra$ersal gra% dengan algoritma pen&arian '(S) Masukan: $ adalah simpul a*al kun+ungan Keluaran: semua simpul yang dikun+ungi di&etak ke layar } Deklarasi
w : integer 0 : antrian procedure .uat%ntrian(input4output 0 : antrian) {membuat antrian kosong, kepala-! diisi .} procedure /a'uk%ntrian(input4output 0 : antrian1 input 2 : integer) {memasukkan $ ke dalam antrian - pada posisi belakang} procedure 5apu'%ntrian(input4output 0 : antrian1 output 2 : integer) { menghapus $ dari kepala antrian - } function %ntrian#o'ong(input 0 : antrian)
6oolean { true +ika antrian - kosong, %alse +ika sebaliknya } Algoritma:
.uat%ntrian(0) { buat antrian kosong } write(2) { &etak simpul a*al yang dikun+ungi } dikunungi*2-7true { simpul $ telah dikun+ungi, tandai dengan true} ! { masukkan simpul a*al
dikunungi*i- fal'e endfor /a'uk%ntrian(012)
kun+ungan ke dalam antrian } { kun+ungi semua simpul gra% selama antrian belum kosong } while not %ntrian#o'ong(0) do 5apu'%ntrian(012) { simpul $ telah dikun+ungi, hapus dari antrian } for w7l to n do if %*21w- 8 + then { $ dan * bertetangga } if not dikunungi*w- then write(w) {&etak simpul yang dikun+ungi} /a'uk%ntrian(01w) dikunungi*w-true endif endif endfor endwhile { /ntrianKosong-! }
III.
DES:&IPSI 5ASALAH
Seperti tela" di#elaskan se$elumnya! pada permainan Greedy Spiders terdapat AI yaitu la$a*la$a yang akan memakan serangga yang terperangkap di #aring la$a*la$a terse$ut. Namun! langka" yang dilakukan ole" la$a*la$a untuk men)apai titik di mana serangga $erada tidak muda" karena ada gangguan dari pemain yang $erusa"a memutuskan #aring la$a*
la$a ke ara" serangga terse$ut. Dikarenakan permainan ini merupakan &-ae* game atau permainan $erdasarkan giliran untuk $ermain! la$ala$a yang men#adi AI memperole" giliran kedua yang $erarti la$a*la$a akan $ergerak setela" pemain melakukan langka"nya.
La$a*la$a "anya $isa $ergerak satu langka" dengan #arak satu titik pada #aring.
Gambar / 0itik 12 0itik %emungkinan 0erbesar
Pada gam$ar di atas! titik C merupakan titik dimana la$ala$a memiliki kemungkinan ter$esar untuk memakan serangga. Apa$ila la$a*la$a $erada di titik terse$ut dengan sekali langka" lagi! la$a*la$a dapat memili" tiga $ua" serangga untuk dimakan yang menye$a$kan permainan $erak"ir dan pemain gagal menyelesaikan le-el permainan terse$ut. +le" karena itu! untuk men)ari titik C terse$ut! digunakan Greedy By Serangga %er$anyak.
Setela" mendapatkan titik C! maka AI "arus men)ari ta"u mana #alur terpendek yang $isa ia lalui untuk men)apai titik terse$ut. Untuk itula" digunakan algoritma BFS. 5engapa dipili" algoritma BFS 'Bea*. F% Sea.( di$anding DFS ' Dep. F% Sea.( :eduanya memang sama*sama algoritma yang digunakan untuk tra-ersal gra, untuk menemukan suatu titik. Pada kasus ini! #aring la$ala$a dianggap se$agai gra, yang memiliki $o$ot yang sama. %itik yang di)ari! yakni titik C! suda" pasti ditemukan. Sekarang tinggal men)ari #arak terpendeknya. Baik algoritma BFS maupun DFS! #arak dari la$a*la$a ke titik C sama*sama direpresentasikan dengan kedalaman po"on yang di$uat. Apa$ila menggunakan algoritma DFS! pada penelusuran aal! titik C pasti langsung ditemukan tetapi $elum tentu mendapatkan kedalaman yang paling minimum. Sedangkan! dengan menggunakan algoritma BFS! memang titik C tidak ditemukan dengan sekali penelusuran! namun apa$ila ditemukan pertama kali! maka itula" kedalaman yang paling minimum atau #arak terdekat yang $isa diperole".
I. I5PLE5EN%ASI ALG+&I%5A G&EED4 DAN B&EAD%H FI&S% SEA&3H 'BFS( Penerapan algoritma Greedy dan BFS pada AI permainan Greedy Spiders yaitu la$a*la$a dimaksudkan untuk memperole" "asil yang maksimal. 5aksimal dalam kasus yang akan di$a"as di sini $erarti memperole" #alur tersingkat pada pergerakan la$a*la$a guna men)apai serangga yang akan menyusa"kan pemain dalam menyelesaikan permainan Greedy Spiders. Pem$a"asan implementasi algoritma Greedy dan BFS akan di$erikan dengan studi kasus pada suatu le-el di permainan Greedy Spiders. Le-el yang digunakan untuk studi kasus adala" le-el /*1.
Gambar 3 (evel &-* pada !ermainan Greedy Spiders
Algoritma Greedy yang digunakan adala" Greedy $y serangga ter$anyak. Dengan menggunakan algoritma Greedy ini! penyelesaiannya adala" pertama*tama meli"at seluru" titik pada #aring la$a*la$a dimana serangga adala" titik 9 sa#a. %itik yang $er#arak satu langka" untuk memakan Greenie adala" titik !/! dan 9. %itik yang $er#arak satu langka" untuk $erada. :emudian akan dili"at titik mana yang $er#arak satu langka" ke tiap serangga.
Gambar 4 'mpat 0itik yang Ber"arak Satu (angkah dari Serangga
merepresentasikan #arak yang akan dilalui.
Gambar 5 0itik-0itik !enelusuran
Po"on yang akan di$entuk dengan menggunakan
memakan %o$y %itik yang $er#arak satu langka" untuk memakan 2ormy adala" titik 9 dan 1.
Titik
/ 9 1
Jumlah Serangga yang Bisa Dimakan 9 0abel 0itik 0erdekat dan umlah Serangga
Dari ta$el terse$ut dapat diam$il kesimpulan $a"a kemungkinan ter$esar untuk la$a*la$a memakan serangga adala" apa$ila la$a*la$a $erada di titik 9 dengan #unla" serangga yang $isa ia makan $er#umla" tiga! yaitu Greenie! %o$y! dan 2ormy.
Implementasi algoritma Greedy terse$ut adala" se$agai $erikut. •
Himpunan :andidat Seluru" titik pada #aring la$a*la$a dengan #arak satu ter"adap titik yang terdapat serangga
•
Himpunan Solusi %itik dengan #arak satu langka" yang memiliki #umla" serangga ter$anyak yang $isa dimakan
•
Fungsi Seleksi %itik yang memiliki #umla" serangga ter$anyak yang $isa dimakan dalam sekali langka" lagi
•
Fungsi Layak %itik memiliki minimal satu serangga yang dapat dila"ap dalam sekali langka" lagi
:emungkinan ter$uruk adala" apa$ila masing*masing titik "anya $isa memakan satu serangga. 5aka akan langsung di)ari titik terdekat dari posisi la$a*la$a.
Setela" diperole" titik terse$ut! kemudian dilakukan pen)arian #alur untuk menu#u titik terse$ut. Pen)arian #arak ini dapat menggunakan algoritma Bea*. F% Sea. atau BFS di mana kedalaman po"on algoritma BFS adala" se$agai $erikut.
Gambar 6 !ohon BFS
%itik yang di)ari adala" titik dengan nomor . Dapat dili"at pada gam$ar po"on yang ter$entuk dengan menggunakan algoritma BFS di atas! titik ditemukan pada kedalaman dua. Dari titik di mana la$a*la$a $erada 'L(
"ingga titik dengan / 1 9 1 1 ; adala" dari titik L ke titik
penelusuran BFS akan melalui titik*titik .
1 kemudian ke titik 'L
1 (.
Untuk pem$anding! penulis menggunakan algoritma titik . Po"on yang akan $erikut.
akan memperli"atkan penelusuran DFS ' Dep. F% Sea.( untuk men)apai di$entuk dengan DFS ini adala" se$agai
DAF%A& & EFE&ENSI ?@ 5unir! &inaldi! Studi In,ormatika
6Diktat :ulia" IF//; Strategi Algoritmik7! Program Sekola" %eknik Elektro dan
In,ormatika I%B! /.
Dengan menggunakan algoritma DFS akan diperole" po"on yang $isa dili"at pada gam$ar diatas. Satu kali penelusuran akan men)apai titik yang ditu#u namun $elum tentu memiliki kedalaman minimum. :edalaman yan gdiperole" dari po"on yang di$entuk ole" algoritma DFS di atas adala" 1 yang $erarti dengan 1 kali langka" $aru la$a*laa akan men)apai titik terse$ut. Pada algoritma DFS titik yang dilalui dan #alur yang diperole" adala" sama! yaitu L 9 1 .
.: ESI5PULAN Algoritma Greedy dan algoritma BFS dapat diterapkan pada AI permainan Greedy Spiders. Greedy yang digunakan adala" Greedy $y serangga ter$anyak! di mana akan di)ari suatu titik yang apa$ila la$a*la$a terse$ut $erada di titik terse$ut! la$a*la$a memiliki dua atau le$i" pili"an serangga untuk dimakan dalam sekali langka" lagi. Dengan $erada di titik yang seperti itu! pemain pasti gagal menyelesaikan satu le-el permainan Greedy Spiders. :emudian! algoritma BFS akan dipanggil setela" menemukan titik yang "arus di)apai. Algoritma BFS ini dapat mem$erikan #arak minimum yang "arus ditempu" ole" la$a*la$a menu#u titik terse$ut.