ANALISA PENGGUNAAN ALGORITMA GREEDY PADA PERMAINAN FIVE LINK

dokumen-dokumen yang mirip
Penggunaan Algoritma Greedy untuk menyelesaikan Permainan Othello

IMPLEMENTASI ALGORITMA GREEDY PADA PERMAINAN OTHELLO

Penerapan Algoritma Greedy pada Permainan Bubble Breaker

Penerapan Algoritma Greedy dalam Permainan Othello

APLIKASI ALGORITMA GREEDY DALAM PERMAINAN JAWBREAKER

PERBANDINGAN ALGORITMA GREEDY DAN BRUTE FORCE DALAM SIMULASI PENCARIAN KOIN

Implementasi Algoritma Greedy pada Permainan Ludo

Penentuan Keputusan dalam Permainan Gomoku dengan Program Dinamis dan Algoritma Greedy

Penerapan Algoritma Greedy untuk Permainan Halma

Penerapan Algoritma Greedy dalam Permainan Connect 4

Implementasi Algoritma Greedy Dua Sisi pada Permainan 2048

Penerapan Algoritma Greedy dalam Pencarian Rantai Penjumlahan Terpendek

Penerapan Algoritma Greedy dalam Permainan Bantumi

IMPLEMENTASI ALGORITMA GREEDY PADA PERMAINAN CONGKLAK

Penerapan Algoritma Greedy dalam Pembuatan Artificial Intelligence Permainan Reversi

PERBANDINGAN APLIKASI ALGORITMA BRUTE-FORCE DAN KOMBINASI ALGORITMA BREADTH FIRST SEARCH DAN GREEDY DALAM PENCARIAN SOLUSI PERMAINAN TREASURE HUNT

Algoritma Greedy pada Board Game Saboteur

Penerapan Algoritma Greedy untuk Permainan Flood It

Algoritma Greedy dalam Artificial Intelligence Permainan Tic Tac Toe

Solusi Terbaik Permainan Rocket Mania Deluxe dengan Pendekatan Algoritma BFS dan Algoritma Greedy

PENERAPAN ALGORITMA GREEDY DALAM PENCARIAN SOLUSI TERBAIK PADA PERMAINAN TETRIS

PENGGUNAAN ALGORITMA GREEDY DALAM PERMAINAN KARTU BLACK JACK

Penerapan Algoritma Greedy Pada Game Tower Defense: Tower of Greece

ALGORITMA GREEDY DALAM PERMAINAN DOTS AND BOXES

Perbandinganan Penggunaan Algoritma Greedy dan Modifikasi Algoritma Brute Force pada Permainan Collapse XXL

Pencarian Solusi Optimal dalam Permainan Congklak dengan Program Dinamis

Pencarian Solusi Permainan Fig-Jig Menggunakan Algoritma Runut-Balik

Pemilihan Monster yang Akan Digunakan dalam Permainan Yu-Gi-Oh! Capsule Monster Coliseum

Penerapan Algoritma Greedy pada Intelegensia Buatan untuk Transfer Pemain dalam Permainan Simulasi Sepakbola

Penggunaan Algoritma Greedy Dalam Perancangan Papan Teka Teki Silang

Penerapan Algoritma Greedy dalam Permainan Tetris

APLIKASI ALGORITMA GREEDY DALAM PERMAINAN CAPSA BANTING

PENGGUNAAN ALGORITMA GREEDY PADA MESIN PENCARI

Penerapan Algoritma Greedy dan Backtrackng Dalam Penyelesaian Masalah Rubik s Cube

Penerapan Prinsip Greedy dalam Permainan Kartu Hearts

Algoritma Backtracking Pada Permainan Peg Solitaire

Penentuan Lokasi Pemasaran Produk dengan Media Periklanan Menggunakan Algoritma Greedy

Aplikasi Algoritma Greedy untuk Pergerakan Musuh pada Permainan Pac-Man

PENERAPAN ALGORITMA BACKTRACKING PADA PERMAINAN WORD SEARCH PUZZLE

Implementasi Algoritma Greedy dalam Pembagian kerja pada Mesin yang Identik

Penggunaaan Algoritma Greedy Dalam Aplikasi Vending Machine

ANTIMAGIC PUZZLE. Alwi Afiansyah Ramdan

Aplikasi Teori Graf dalam Permainan Kombinatorial

Penerapan Algoritma Backtrack pada Knight s Tour

Aplikasi Algoritma MiniMax pada Beberapa Permainan Papan

Aplikasi Algoritma Greedy pada Optimasi Pelaksanaan Misi dalam Permainan Assassins Creed : Revelations

PENGGUNAAN EXHAUSTIVE SEARCH SEBAGAI SOLUSI PERMAINAN SCRAMBLE

Penggunaan Algoritma DFS dalam Pencarian Strategi Permainan Catur

Penerapan Algoritma Greedy dalam Penyetokan Barang

Optimisasi Penjadwalan Proses Pada Central Processing Unit Dengan Menggunakan Algoritma Greedy

Penerapan Algoritma Greedy Pada Permainan Kartu Truf

Penggunaan Algoritma Greedy dalam Optimasi Masalah Perkebunan

Penerapan Algoritma Greedy dan Algoritma BFS untuk AI pada Permainan Greedy Spiders

Algoritma Greedy dalam Strategi Permainan Centipede

Analisis Beberapa Algoritma dalam Menyelesaikan Pencarian Jalan Terpendek

Penerapan Algoritma Greedy dalam Optimasi Keuntungan Perusahaan Pengiriman Barang

Penerapan Algoritma Runut-Balik (Backtracking) pada Permainan Nurikabe

SOLUSI ALGORITMA BACKTRACKING DALAM PERMAINAN KSATRIA MENYEBRANG KASTIL

Penerapan Algoritma Greedy dalam Permainan Tradisional Congklak

ANALISIS PENERAPAN ALGORITMA RUNUT-BALIK DALAM PENCARIAN SOLUSI PERSOALAN LOMPATAN KUDA

Penerapan Algoritma Brute Force dan Backtracking pada Permainan Skycraper

Penentuan Langkah Sederhana dalam Permainan Kartu Hearthstone dengan Algoritma Greedy

Penerapan Algoritma Runut-balik pada Permainan Math Maze

Penggunaan Algoritma Backtracking pada Permainan Mummy Maze

Penerapan Algoritma DFS dan BFS untuk Permainan Wordsearch Puzzle

Penerapan Algoritma Greedy pada Artificial Inteligence dalam Permainan Defence of the Ancient

Strategi Algoritma Penyelesaian Puzzle Hanjie

Pemanfaatan Pohon dalam Realisasi Algoritma Backtracking untuk Memecahkan N-Queens Problem

Analisis Pengimplementasian Algoritma Greedy untuk Memilih Rute Angkutan Umum

Penerapan Algoritma DFS pada Permainan Sudoku dengan Backtracking

Penentuan Langkah dengan Greedy dalam Permainan Ludo

ALGORITMA RUNUT-BALIK (BACKTRACKING ALGORITHM) PADA MASALAH KNIGHT S TOUR

PENGGUNAAN ALGORITMA BACKTRACKING DALAM PENYELESAIAN PERMAINAN SUDOKU

Aplikasi Algoritma Greedy untuk Menyelesaikan Permainan Magic Wingdom

Penyelesaian Game Lights Out dengan Algoritma Runut Balik

Penerapan Algoritma Backtracking pada Knight s Tour Problem

Implementasi Brute Force dan Greedy dalam Permainan Big Two (Capsa)

PENERAPAN ALGORITMA RUNUT-BALIK (BACKTRACKING) DALAM PENYELESAIAN PERMAINAN SUDOKU

Aplikasi Algoritma Greedy dalam Permainan Kartu Truf

Penggunaan Algoritma Greedy untuk Mencari Solusi Optimal dalam Permainan Brick Breaker

Penerapan Algoritma Greedy Dalam Permainan Clash Royale

Perbandingan Algoritma Brute Force dan Backtracking dalam Permainan Word Search Puzzle

Kompleksitas Algoritma untuk Penyelesaian Persoalan Penukaran Koin dengan Algoritma Greedy

Algorima Greedy Pada Self Serve Gas Station

BAB I PENDAHULUAN. O, yang bergiliran menandai ruang dalam kotak berukuran 3 3. Pemain yang

Algoritma Exhaustive Search Dalam Permainan Congklak

I. PENDAHULUAN II. DASAR TEORI. Contoh lainnya: Solusi: 0= V,1= I,2= O,3= R, 4= N,5= L,7= A,8= F,9= E.

PENGGUNAAN ALGORITMA BRANCH AND BOUND UNTUK MENYELESAIKAN PERSOALAN PENCARIAN JALAN (PATH-FINDING)

Penerapan Algoritma Greedy pada Permainan Tower Defense

IF3051 Strategi Algoritma Penerapan Algoritma Greedy untuk Peletakan Tanaman dalam Game Harvest Moon: Back to Nature

Penerapan Algoritma Greedy untuk Memecahkan Masalah Pohon Merentang Minimum

Strategi Permainan Bridge menggunakan Algoritma Greedy

Penerapan Algoritma Greedy dalam Algoritma Penjadwalan Prosesor Tunggal Shortest Job First

BAB III METODE PENELITIAN. Berikut langkah-langkah yang dilakukan dalam penelitian ini :

Perbandingan Algoritma Dijkstra dan Algoritma Floyd-Warshall dalam Penentuan Lintasan Terpendek (Single Pair Shortest Path)

APLIKASI ALGORITMA GREEDY DALAM PENENTUAN SPESIFIKASI KOMPUTER RAKITAN

Aplikasi Algoritma Runut Balik dalam Pembangkitan Elemen Awal Permainan Sudoku

Aplikasi Algoritma Greedy untuk Optimasi Sistem Booking Hotel Online

Penggunaan Algoritma Greedy Untuk Menyelesaikan Permainan Cluedo

Penerapan Algoritma Greedy pada Permainan Kartu 100

Transkripsi:

ANALISA PENGGUNAAN ALGORITMA GREEDY PADA PERMAINAN FIVE LINK Joelian Samuel Jurusan Informatika, Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung Jalan Ganesa 10 Bandung if15092@students.if.itb.ac.id ABSTRAK Komputer telah menjadi alat bantu manusia yang sangat berguna dalam beberapa dekade ke belakang. Penggunaan komputer pun telah meluas tidak hanya sebagai alat komputasi atau perhitungan. Salah satu kegunaan dari komputer pada masa sekarang adalah untuk membuat aplikasi permainan. Game dalam komputer telah menjadi sebuah kebutuhan di saat saat sekarang ini, dimana seseorang yang sangat sibuk dan tidak memiliki waktu luang yang banyak dapat mendapatkan sedikit penyegaran dari bermain game di komputer. Permainan yang terdapat di komputer pun sudah sangat banyak macamnya dari yang sederhana sampai yang memakai algoritma yang sangat susah. Penulis pada makalah ini berusaha menerapkan algoritma greedy pada permainan five link atau lebih dikenal tic tac toe. Game five link sendiri merupakan game logika yang telah dikenal banyak orang dan merupakan permainan tradisional yang diangkat menjadi permainan komputer. Game ini merupakan game yang memakai papan sebagai arena permainan layaknya catur. Game ini dilakukan oleh dua orang pemain dengan tujuan untuk membuat bidak pemain menjadi satu garis lurus secara horisontal, vertikal, ataupun diagonal dan menghalangi pemain lain dapat melakukan hal itu. Aplikasi algoritma greedy di sini, dipakai untuk menentukan jalan komputer menaruh bidaknya pada papan permainan. Kata kunci: Algoritma greedy, Five Link, Game, Permainan. bidang. Semakin banyak pula masalah yang dapat diselesaikan menggunakan komputer. Salah satu penggunaan komputer yang paling sering diaplikasikan adalah pembuatan game atau permainan. Permainan pada komputer telah menjadi salah satu perangkat lunak yang wajib ada pada setiap komputer yang dimiliki seseorang. Permainan atau game tersebut pun sangat banyak jenisnya. Salah satu aplikasi permainan ini adalah aplikasi permainan tradisional. Permainan tradisional adalah permainan yang sudah ada di masyarakat seperti permainan kartu, catur, ataupun cabang cabang olahraga. Permainan tradisional ini yang semula dimainkan secara real di masyarakat, sekarang dapat dilakukan dengan melawan komputer dengan simulasi. Dalam simulasi inilah, strategi algortimik dipakai untuk membuat semacam Intelegensia Buatan bagi komputer untuk menentukan langkah langkah dalam suatu permainan. Strategi yang telah dikenal sudah banyak jenismya seperti algoritma greedy, brute force, dan sebagainya. Permainan Five Link sendiri sudah dikenal masyarakat secara luas, namun mungkin saja dengan nama yang berbeda, seperti catur jawa, ataupun tic tac toe. Permainan ini dilakukan dalam papan berukuran seperti papan catur dan dimainkan oleh dua orang. Tujuan dari permainan ini adalah untuk menempatkkan bidak masingmasing pemain dalam suatu garis lurus yang dapat berupa garis horisontal, vertikal, ataupun diagonal. Dalam makalah ini akan dijelaskan bagaimana penggunaan algortima greedy dalam membantu komputer untuk menentukan langkah dalam menaruh bidak. 1. PENDAHULUAN Komputer telah menjadi alat bantu manusia yang paling sering dipakai dalam beberapa dekade ke belakang. Penggunaan komputer pun telah meluas ke berbagai MAKALAH IF2251 STRATEGI ALGORITMIK TAHUN 2007 1

3. METODE PENYELESAIAN 3.1 Analisis Masalah Gambar 1. Permainan Five link (dalam versi berbeda) sedang dimainkan 2. DASAR TEORI 2.1 Definisi Umum Algortima Greedy Dalam pencarian solusi untuk menentukan langkah komputer pada permainan five link, kita harus meninjau terlebih dahulu beberapa permasalahan yang mungkin terjadi di dalam permainan. Permasalahan pertama yang dapat terjadi adalah ketika bidak pemain dan bidak komputer tidak ada yang mendekati jumlah lima bidak dalam satu rangkaian. Komputer dapat dengan mudah menentukkkan peletakkan bidak pada papan permainan, seperti terlihat pada gambar. Pada kondisi ini kita dapat dengan langsung menerapkan algoritma greedy dengan memilih rangkaian bidak komputer yang memiliki jumlah paling mendekati lima. Algoritma greedy adalah algoritma yang memecahkan masalah langkah per langkah yang dalam setiap langkahnya mengambil pilihan terbaik yang terdapat pada saat itu tanpa memedulikan konsekuensi ke depannya. Hal ini disebut sebagai optimum lokal. Harapan dari algoritma ini dapat membentuk suatu penyelesaian atau optimum global suatu masalah dari optimum lokalnya. 2.2 Skema Umum Algoritma Greedy Persoalan optimasi suatu masalah menggunakan algoritma greedy dapat dipilah pilah menjadi bagianbagian sebagai berikut : 1. Himpunan Kandidat Merupakan Himpunan yang berisi elemen elemen penyelesaian persoalan 2. Himpunan Solusi Merupakan Himpunan yang telah berisi solusisolusi yang telah diterima sebagai langkah penyelesaian atau optimum lokal. 3. Fungsi Seleksi Merupakan fungsi pembatas yang mensortir himpunan kandidat menjadi calon himpunan solusi 4. Fungsi Kelayakan Merupakan fungsi pembatas bagi himpunanhimpunan kandidat bilamana sudah tidak layak lagi berada di dalam himpunan kandidat 5. Fungsi Objektif Merupakan fungsi yang bertujuan memaksimalkan atau meminimalkan nilai solusi tergantung konteks permasalahannya. Algoritma greedy banyak dipakai dalam permasalahan seperti knapsack, penjadwalan job, dan sebagainya. Gambar 2. Ananlisis Masalah Pertama Permasalahan kedua yang dapat terjadi dan paling sering terjadi adalah bidak lawan sudah ada yang memiliki rangkaian yang jumlahnya mendekati angka lima. Jika terdapat rangkaian tersebut, komputer harus memprioritasklan jalannya untuk menghalangi bidak lawan agar tidak dapat membentuk suatu rangkain lima bidak. Pada kasus ini, algoritma greedy tidak secara murni dipakai, karena ada kondisi yang menyebabkan semua kemungkinan dalama himpunan kandidat tidak dapat diterapkan. Dapat dilihat pada gambar di bawah contoh kasus seperti ini. MAKALAH IF2251 STRATEGI ALGORITMIK TAHUN 2007 2

Komputer harus dapat menghalangi jalan lawan karena terdapat kemungkinan lawan dapat memenangi permainan walaupun tidak dalam satu rangkaian. 3.2 Algoritma Penyelesaian Masalah Gambar 3. Analisis Masalah Kedua Pada gambar terlihat jumlah tiga bidak dalam satu rangkaian bidak lawan sudah dianggap mendekati lima rangkaian karena bila lawan menaruh bidak satu lagi yang membuat rangkaian itu menjadi empat rangkaian, maka lawan memiliki dua kesempatan dari dua arah yang berbeda untuk membuat rangkaian itu menjadi limarangkaian. Akan tetapi, pada masalah ini algoritma greedy dapat diterapkan apabila komputer telah lebih dahulu memiliki empat rangkaian dan memiliki kesempatan memenangkan permainan dalam langkah berikutnya atau dengan kata lain lawab tidak melakukan pencegahan terhadap bidak komputer. Dapat dilihat pada gambar jika komputer memiliki bidak pada posisi X merah maka komputer tidak harus menghalangi jalan lawan lagi. Kasus ketiga yang mungkin dapat terjadi adalah bidak lawan tidak dalam satu rangkaian akan tetapi dapat membentuk lima rangkaian. Dapat dilihat pada gambar Gambar 4. Analisis Kasus Ketiga Dari analisis masalah di atas, penulis mencoba menerapkan algoritma greedy pada masalah ini. Pada masalah ini yang menjadi himpunan kandidat adalah semua posisi yang belum terisi oleh bidak lawan dan komputer pada papan permainan, dan yang menjadi himpunan solusi adalah semua posisi penaruhan bidak oleh komputer untuk memenangkan permainan ataupun untuk menghalangi lawan memenangkan permainan. Fungsi seleksi pada kasus ini adalah fungsi yang menyeleksi semua kemungkinan posisi kosong pada papan permainan yang menyebabkan rangkaian bidak yang dimiliki komputer bertambah panjang atau mendekati lima rangkaian. Sedangkan untuk fungsi kelayakan pada algoritma penyelesaian masalah ini adalah penempatan posisi bidak komputer sehingga tidak menyebabkan lawan dapat memenangkan permainan ini. Dan fungsi objektif dari permainan ini adalah untuk membuat rangkaian bidak komputer menjadi limarangkaian. Sehingga di dapat algoritma sebagai berikut Procedure Cek_Lawan (input P : Papan, output found : boolean, idxr : int, idxc : int, jenis : int, max : int ) {Prosedur ini melakukan pengecekan pada papap permaianan mengenai posisi bidak lawan, jika terdapat rangkaian tiga bidak atau lebih maka akan mengembalikan nilai true dan idxr, idxc terisi posisi bidak pertama dalam rangkaian bidak lawan dan jenis akan mengembalikan apakah rangkaian terdapat dalam satu kolom, baris, diagonal utama, atau diagonal lainnya. Prosedur ini akan berhenti pada penemuan pertama } Procedure Cek_Kawan (input P : Papan, output idxr : int, idxc : int, jenis : int, max : int) {prosedur ini mencari rangkaian bidak komputer terpanjang pada papan permainan, dan mengembalikan posisi bidak pertama dalam rangkaian, dan jenis rangkaian itu melintang apakah sebaris, sekolom, atau sediagonal } MAKALAH IF2251 STRATEGI ALGORITMIK TAHUN 2007 3

Deklarasi i,j,max1,max2: integer; Algoritma For (i = 0 to 7) For (j = 0 to 7) Cek_baris (p[i][j],max1) Cek_kolom (p[i][j],max2) If (max1 > max2) Max = max1 Jenis = 1 endif Max = max2 Jenis = 2 Cek_diagonalUtama (p[i][j], max1) Cek_diagonalLain (p[i][j],max2) If (max1 > max2) Max = max1 Jenis = 3 Max = max2 Jenis = 4 EndFor EndFor Procedure Get_Next (input p:papan, jenis :int, banyak : int, idxraw : int, idxcaw : int ; output idxr : int, idxc : int) {Mendapatkan langkah selanjutnya komputer} Procedure Greedy () {Proses Melangkah Komputer} Deklarasi P : papan I,j,idxr,idxc,max1,max2,j1,j2 : int Found : Boolean Algoritma Cek_Lawan(P,Found,i,j,j1,max1) Cek_kawan(P,idxr,idxc, j2, max2) If (Found) If (max2 == 4) Get_Next (P,j2,max,idxr,idxc,i,j) P[i][j] = bidak_komp; Get_Next (P,j1,max,i,j,idxr,idxc) P[idxr][idxc] = bidak_komp Get_Next (P,j2,max,idxr,idxc,i,j) P[i][j] = bidak_komp; Pada pseudo code di atas, program memiliki tiga prosedur pendukung dan satu prosedur utama yang mengimplementasikan ketiga prosedur pendukung. Prosedur pendukung pertama, yaitu cek_lawan digunakan sebagai fungsi kelayakan yang membuat program akan memprioritaskan pencegahan terhadap bidak lawan yang telah membuat tiga atau lebih rangkaian. Prosedur yang kedua adalah cek_kawan. Prosedur ini merupakan kebalikan dari prosedur cek_lawan. Prosedur ini mencari posisi rangkaian yang membentuk rangkaian bidak komputer yang paling panjang. Prosedur inilah yang menjadi fungsi seleksi sekaligus prosedur yang menerapkan algoritma greedy. Prosedur ini memiliki empat prosedur bantuan yang tidak penulis jelaskan pada makalah ini yaitu prosedur cek_baris, cek_kolom, cek_diagoalutama, dan cek_diagonallain. Pada intinya, keempat prosedur bantuan ini memiliki fungsi yang sama, yaitu membalikkan panjang rangkaian yang terbentuk dari suatu bidak komputer di dalam papan permainan sesuai arah di dalam nam prosedur, prosedur ini juga mencek apakah rangkaian tersebut memiliki kotak kosong untuk menaruh bidak komputer selanjutnya, jika tidak ada kotak kosong maka akan mengembalikan nilai 0 pada panjang rangkaian Dari nilai balikkan fungsi tersebut didapatkannlah rangkaian terpanjang dari bidak yang dimiliki komputer. Prosedur yang ketiga sebenarnya hanyalah pencari posisi penaruhan berikutnnya dari komputer. Pada prosedur utama, semua prosedur pendukung dipakai dalam menentukkan langkah komputer. Hal pertama dilakukan adalah melakukan pengecekan bidak lawan dan pengecekan bidak sendiri. Setelah itu dilihat apakah ada posisi bidak lawan yang berbahaya, jika ada lihat apakah komputer memilki kesempatan memenangi permainan atau tidak. Jika komputer tidak memiliki kesempatan memenangi permainan maka komputer akan menghalangi rangkaian bidak lawan. Jika tidak ada rangkaian bidak lawan yang berbahaya, maka komputer dapat menambahkan bidak komputer pada posisi di MAKALAH IF2251 STRATEGI ALGORITMIK TAHUN 2007 4

rangkaian yang terpanjang pada papan permainan dan mungkin saja dapat memenangi permainan. IV. KESIMPULAN Algoritma greedy yang digunakkan pada permainan ini sebenarnya sudah cukup efektif dalam menahan bidak lawan agar tidak membuat rangkaian lima bidak. Akan tetapi, karena hal iru pula terkadang komputer tidak dapat menambah jumlah rangkaian bidaknya karena harus mencegah lawan medapatkan rangkaian bidak yang lebih panjang. Bidak komputer pada permainan ini akan terlihat acak acakkan karena harus menahan bidak lawan terus menerus. Penulis belum mencoba algoritma lain sebagai pembanding dari algoritma greedy pada permainan ini. Akan tetapi, untuk permainan sederhana seperti five link ini penulis merasa algoritma greedy sudah cukup baik dalam menjalankan simulasi permainan ini. REFERENSI [1] Munir, Rinaldi, Diktat Kuliah IF2251 Strategi Algoritmik, Program Studi Informatika Sekolah Teknik Elektro dan Informatika ITB, 2007. [2] Five link http://www.linkfive.com/linkfiveintro.html Diakses tanggal 15 Mei 2007 pukul 21.30 WIB. MAKALAH IF2251 STRATEGI ALGORITMIK TAHUN 2007 5