Penerapan Algoritma DFS dalam Menyelesaikan Permainan Buttons & Scissors

dokumen-dokumen yang mirip
Penerapan Algoritma BFS dan DFS dalam Permainan Ular Tangga

Penerapan Algoritma DFS pada Permainan Sudoku dengan Backtracking

Penerapan Algoritma DFS dan BFS untuk Permainan Wordsearch Puzzle

Perbandingan Algoritma Brute Force dan Breadth First Search dalam Permainan Onet

Penerapan DFS dan BFS dalam Pencarian Solusi Game Japanese River IQ Test

Penerapan strategi BFS untuk menyelesaikan permainan Unblock Me beserta perbandingannya dengan DFS dan Branch and Bound

Pencarian Pohon Solusi Permainan Alchemy Menggunakan Algoritma BFS dan DFS

Perbandingan Algoritma Depth-First Search dan Algoritma Hunt-and-Kill dalam Pembuatan Labirin

Perbandingan Algoritma Brute Force dan Backtracking dalam Permainan Word Search Puzzle

Implementasi Algoritma DFS pada Pewarnaan Gambar Sederhana Menggunakan Bucket tool

Implementasi Algoritma Backtracking untuk Memecahkan Puzzle The Tile Trial pada Permainan Final Fantasy XIII-2

Penerapan Algoritma BFS dan DFS dalam Mencari Solusi Permainan Rolling Block

Penggunaan Algoritma DFS dan BFS pada Permainan Three Piles of Stones

Penerapan Algoritma Runut-Balik (Backtracking) pada Permainan Nurikabe

Penerapan Algoritma Runut-Balik untuk Menyelesaikan Permainan Pencarian Kata

Penerapan Algoritma Backtracking dalam Permainan Futoshiki Puzzle

Pemanfaatan Algoritma Runut-Balik dalam Menyelesaikan Puzzle NeurOn dalam Permainan Logical Cell

Penerapan Algoritma Backtracking pada Knight s Tour Problem

Implementasi Algoritma BFS dan DFS dalam Penyelesaian Token Flip Puzzle

Algoritma Puzzle Pencarian Kata

Implementasi Algoritma DFS pada permainan Monument Valley

Penerapan Algoritma Transversal pada Graf dan Algoritma Pencocokan String dalam Sistem Jual-Beli Tiket Bioskop

Memecahkan Puzzle Hidato dengan Algoritma Branch and Bound

Penerapan Algoritma Backtracking untuk Menyelesaikan Permainan Hashiwokakero

Penerapan Algoritma Brute-Force serta Backtracking dalam Penyelesaian Cryptarithmetic

ANTIMAGIC PUZZLE. Alwi Afiansyah Ramdan

Algoritma Backtracking Pada Logic Game : Family Crisis (Game Penyebrangan)

PENERAPAN ALGORITMA BACKTRACKING PADA PERMAINAN WORD SEARCH PUZZLE

Pencarian Solusi Permainan Flow Free Menggunakan Brute Force dan Pruning

Algoritma Backtracking Pada Permainan Peg Solitaire

Aplikasi Algoritma Runut Balik dalam Pembangkitan Elemen Awal Permainan Sudoku

Aplikasi Algoritma Traversal Dalam Binary Space Partitioning

MAKALAH STRATEGI ALGORITMIK (IF 2251) ALGORITMA RUNUT BALIK DALAM GAME LABIRIN

PENERAPAN ALGORITMA RUNUT BALIK DALAM PERMAINAN TEKA-TEKI SILANG

Analisis Pengimplementasian Algoritma Greedy untuk Memilih Rute Angkutan Umum

Penggunaan Strategi Algoritma Backtracking pada Pencarian Solusi Puzzle Pentomino

ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

Penggunaan Algoritma Greedy Dalam Perancangan Papan Teka Teki Silang

Penyelesaian Game Lights Out dengan Algoritma Runut Balik

Implementasi Intuitif Penyelesaian Labirin dengan Algoritma Depth-First Search

Pencarian Solusi Permainan Fig-Jig Menggunakan Algoritma Runut-Balik

Penentuan Keputusan dalam Permainan Gomoku dengan Program Dinamis dan Algoritma Greedy

Penerapan Algoritma Flood Fill untuk Mengurangi Ruang Pencarian pada Pencarian Solusi Puzzle Pentomino

PENGUNAAN DUA VERSI ALGORITMA BACKTRACK DALAM MENCARI SOLUSI PERMAINAN SUDOKU

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.

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

Implementasi Logika Penurunan Persamaan Aritmatika pada Program Komputer

Penyelesaian Permasalahan Nonogram dengan Algoritma Runut Balik

PERMAINAN KNIGHT S TOUR DENGAN ALGORITMA BACKTRACKING DAN ATURAN WARNSDORFF

Menyelesaikan Permainan Wordament Menggunakan Algoritma Backtracking

Aplikasi Branch and Bound Pada Pencarian Jalan Pada Software Navigasi

Aplikasi Graf Breadth-First Search Pada Solver Rubik s Cube

Penyelesaian N-Puzzle Menggunakan A* dan Iterative Deepening A*

Penerapan Algoritma Backtrack pada Knight s Tour

Implementasi Algoritma Runut Balik dalam Pengenalan Citra Wajah pada Basis Data

Penerapan Algoritma Runut-balik pada Permainan Math Maze

Penerapan Algoritma Greedy dan Breadth First Search pada Permainan Kartu Sevens

Pembentukan pohon pencarian solusi dan perbandingan masingmasing algoritma pembentuknya dalam simulasi N-Puzzle

SOLUSI ALGORITMA BACKTRACKING DALAM PERMAINAN KSATRIA MENYEBRANG KASTIL

Penerapan strategi runut-balik dalam penyelesaian permainan puzzle geser

Penggunaan Algoritma Greedy untuk Mencari Solusi Optimal dalam Permainan Brick Breaker

Aplikasi Algoritma Greedy dalam Penjurusan Mahasiswa Tingkat Pertama Institut Teknologi Bandung

Penggunaan Algoritma DFS dan BFS Dalam Pencarian Jarak Tedekat di Game Civilization V

Penerapan Algoritma Branch and Bound untuk Penentuan Jalur Wisata

Algoritma Brute-Force dan Greedy dalam Pemrosesan Graf

Penerapan Algoritma Greedy untuk Permainan Flood It

Pelacakan dan Penentuan Jarak Terpendek terhadap Objek dengan BFS (Breadth First Search) dan Branch and Bound

Penyelesaian Sum of Subset Problem dengan Dynamic Programming

Menentukan Titik Evakuasi Selanjutnya bagi Sekelompok Regu Tim SAR dengan Algoritma Branch and Bound

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

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

Penggunaan Algoritma DFS dalam Pencarian Strategi Permainan Catur

Penerapan BFS dan DFS dalam Garbage Collection

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

Aplikasi dan Analisis Algoritma BFS dan DFS dalam Menemukan Solusi pada Kasus Water Jug

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

PENGGUNAAN ALGORITMA BACKTRACKING DALAM PENYELESAIAN PERMAINAN SUDOKU

PENERAPAN ALGORITMA RUNUT-BALIK DALAM PENCARIAN SOLUSI TEKA-TEKI BATTLESHIP

Algoritma Greedy dalam Artificial Intelligence Permainan Tic Tac Toe

Perbandingan BFS, DFS dan Greedy pada Permainan Logika Crossing Bridge

PEMBANGKIT TEKA-TEKI SILANG DENGAN ALGORITMA BACKTRACKING SERTA APLIKASI PERMAINANNYA YANG BERBASIS WEB

Penggunaan Algoritma Greedy untuk menyelesaikan Permainan Othello

Aplikasi Algoritma Brute Force dan Backtracking pada Permainan Slitherlink

Pembentukan Pohon Pencarian Solusi dalam Persoalan N-Ratu (The N-Queens Problem)

Penggunaan Algoritma Pathfinding pada Game

Penerapan Algoritma Greedy dalam Permainan Tradisional Congklak

Pembangkit Teka-Teki Silang dengan Algoritma Backtracking serta Aplikasi Permainannya yang Berbasis Web

Penerapan Algoritma Brute Force dan Backtracking pada Permainan Skycraper

Penggunaan Algoritma Backtrack dan Aturan Warnsdorff Untuk Menyelesaikan Knight s Tour Problem

I. PENDAHULUAN. 1.1 Permainan Rush Hour

Pencarian Solusi Permainan Pipe Puzzle Menggunakan Algoritma Backtrack

Penerapan Algoritma Greedy dalam Permainan Connect 4

Implementasi Algoritma DFS untuk Pergerakan Ghost di Permainan Pac Man

Implementasi Algoritma Greedy dalam Pembagian kerja pada Mesin yang Identik

Implementasi Algoritma Greedy Dua Sisi pada Permainan 2048

Penyelesaian Permainan Sliding Puzzle 3x3 Menggunakan Algoritma Greedy Dengan Dua Fungsi Heuristik

UNTUK PEMECAHAN MASALAH PADA PERMAINAN HASHIWOKAKERO

Strategi Optimized Brute Force Pada Tent Puzzle Solver

Penerapan Pohon dengan Algoritma Branch and Bound dalam Menyelesaikan N-Queen Problem

PENGGUNAAN EXHAUSTIVE SEARCH SEBAGAI SOLUSI PERMAINAN SCRAMBLE

Transkripsi:

Penerapan Algoritma DFS dalam Menyelesaikan Permainan Buttons & Scissors Muhammad Ridwan / 13513008 Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung, Jl. Ganesha 10 Bandung 40132, Indonesia muhammad_ridwan@students.itb.ac.id Abstract Suatu permainan pada umumnya diciptakan untuk menghilangkan stres atau mengisi waktu luang. Namun banyak pula permainan-permainan yang dibuat untuk mengasah kemampuan otak seperti kakurasu, sudoku, dll. Pada makalah ini, penulis akan memanfaatkan algoritma DFS untuk menyelesaikan permainan buttons & scissors. Penyelesaian yang akan dihasilkan merupakan salah satu solusi untuk menyelesaikan permainan tersebut. Index Terms buttons & scissors, DFS, game, solution I. PENDAHULUAN Permainan merupakan suatu alat hiburan yang diciptakan oleh manusia sejak zaman dahulu. Banyak permainan tradisional yang hingga saat ini masih dimainkan oleh anak-anak zaman sekarang bahkan orang dewasa. Permainan diciptakan dengan menciptakan cara bermain dan aturan atau batasan untuk permainan tersebut. Menurut Kimpraswil (dalam As adi Muhammad, 2009: 26) mengatakan bahwa definisi permaina adalah usaha olah diri (olah pikiran dan olah fisik) yang sangat bermanfaat bagi peningkatan dan pengembangan motivasi,kinerja, dan prestasi dalam melaksanakan tugas dan kepentingan organisasi dengan lebih baik. Lain halnya dengan Joan Freeman dan Utami Munandar (dalam Andang Ismail, 2009: 27) mendefinisikan permainan sebagai suatu aktifitas yang membantu anak mencapai perkembangan yang utuh, baik fisik, intelektual, sosial, moral, dan emosional.menurut beberapa pendapat para ahli tersebut peneliti menyimpulkan definisi permainan adalah suatu aktifitas yang dilakukan oleh beberapa anak untuk mencari kesenangan yang dapat membentuk proses kepribadian anak dan membantu anak mencapai perkembangan fisik,intelektuan, sosial, moral dan emosional. Pada zama dahulu, permainan hanya dimainkan oleh anak-anak. Di Indonesia ada banyak permainan tradisional yang hingga saat ini masih dimainkan oleh masyarakat seperti congklak, bentengan, ular naga, lompat tali, petak umpet, dll. Pada era teknologi sekarang, telah banyak jenis-jenis permainan baru yang marak dimainkan oleh anak-anak maupun orang dewasa melalui media komputer, handphone, dll. Ada permainan aksi, petualangan, tekateki, olahraga, dll. Ada pula jenis permainan yang online atau offline tergantung permainan tersebut. Untuk permainan teka-teki, banyak pula contoh dari jenis permainan tersebut yang telah ada sejak dahulu seperti sudoku, kakurasu, tic tac toe, dll. Namun, pada zaman sekarang telah bermunculan permainan-permainan teka-teki yang sangat menarik untuk dimainkan seperti 2048, flow, paperama, buttons & scissors, dll. Tujuan dari makalah ini adalah memberikan algoritma program yang dapat diimplementasikan untuk menyelesaikan permainan buttons & scissors. II. BUTTONS & SCISSORS Buttons & scissors merupakan permainan baru yang muncul ketika telah banyak masyarakat yang menggunakan smartphone dan android. Permainan ini merupakan puzzle game yang hanya membutuhkan satu orang pemain, namun dapat dilakukan bersama-sama. Permainan ini membutuhkan taktik untuk menentukan urutan penyelesaian. Permainan ini berisi sebuah kain yang memiliki banyak kancing. Kancing tersebut harus digunting dengan cara men-tap kancing yang ingin digunting kemudian men-tap kancing terakhir yang akan digunting. Kancing hanya dapat digunting ke arah kancing yang memiliki warna yang sama. Kancing tidak bisa digunting sendirian, pengguntingan kancing minimal harus melibatkan dua buah kancing. Kancing dapat digunting ke arah manapun asalkan tidak ada kancing berwarna lain yang menghalangin pengguntingan kancing tersebut. Tujuan akhir dari permainan ini adalah menghabiskan seluruh kancing yang ada pada kain. Permainan tidak memiliki batasan lain seperti waktu. Namun waktu penyelesaian untuk permainan ini akan menjadi faktor pemberian score untuk permainan tersebut.

Gambar 1. Permainan buttons & scissors (sumber: http://forum.xdadevelopers.com/showthread.php?t=2358867) III. DEPTH-FIRST SEARCH (DFS) Depth-First Search (DFS) adalah salah satu strategi pencarian dalam suatu graf. DFS menelusuri simpul yang bertetangga dengan simpul sekarang. Berikut adalah penjelasan tentang algoritma DFS. Penelusuran dimulai dari simpul akar. Dari simpul akar dicari satu simpul yang bertetangga dengannya. Saat ditemukan, penelusuran akan dilakukan pada simpul baru tadi dan mengulangi lagi pencarian simpul tetangga dan seterusnya. Untuk lebih jelasnya, berikut adalah ilustrasi penjelasan algoritma DFS. Terdapat sebuah graf G dengan 12 simpul seperti Gambar 2. Penelusuran dimulai dari simpul nomor 1. nomor 3. Dari simpul nomor 3, ternyata ada simpul tetangga lain selain nomor 4, yaitu nomor 5. Maka, penelusuran dilanjutkan ke nomor 5. Selanjutnya simpul nomor 3 tidak lagi memiliki simpul tetangga. Oleh karena itu dilakukan backtrack kembali ke simpul nomor 2 dan dilakukan pencarian kembali. Pencarian dan bactrack seperti ini terus dilakukan hingga seluruh simpul telah terjamah dan/atau solusi telah ditemukan. Sehingga, urutan penelusuran dari graf G di atas dengan menggunakan algoritma DFS adalah 1 2 3 4 5 6 7 8 9 10 11 12. Dalam implementasinya, struktur data algoritma DFS biasanya menggunakan struktur data rekursif atau tumpukan (stack). Struktur data stack biasanya digunakan untuk algoritma DFS yang iteratif. Berikut adalah pseudocode dari algoritma DFS dalam versi rekursif dan versi stack yang telah dijelaskan tadi. procedure DFS (Graph G, Node s) // versi rekursif visited[s] true foreach simpul w bertetangga dengan s in G do if not visited[w] then DFS(G,w) procedure DFS (Graph G, Node s) // versi iteratif S {} PUSH(S,s) while (S) not empty do POP(S,s) if not visited[s] then visited[s] true foreach simpul w bertetangga dengan s in G do PUSH(S,w) Gambar 2. Graf G (sumber: http://www.programmerinterview.com/images/dfs.png) Penelusuran dilakukan mulai dari simpul nomor 1. Dari simpul nomor 1, ditemukan simpul tetangga berikutnya adalah nomor 2. Selanjutnya, penelusuran dilakukan di nomor 2 dan ditemukan simpul tetangganya adalah 3, begitu seterusnya. Perlu diperhatikan pada iterasi ke 3, saat penelusuran dilakukan pada simpul 4, tidak ditemukan lagi simpul tetangganya. Oleh karena itu, akan dilakukan backtrack dan pencarian kembali ke simpul IV. IMPLEMENTASI DFS DALAM PENYELESAIAN PERMAINAN BUTTONS & SCISSORS Dalam makalah ini, kita akan menganggap kain dalam permainan buttons & scissors sebagai suatu matriks yang berisi integer. Element integer matriks tersebut merepresentasikan warna dari kancing. Contoh kain dan matriks.

function IsMayCutDown(MATRIX M, int i, int j) if (i!= M.NBrs 1) then while(m[i + 1][j] = 0) do if (M[i + 1][j] = M[i][j]) then function IsMayCutRight(MATRIX M, int i, int j) if (j!= M.Nkol 1) then while(m[i][j + 1] = 0) do if (M[i][j + 1] = M[i][j]) then Gambar 3. Contoh kain (sumber: http://www.techydad.com/wpcontent/uploads/2014/01/buttons_and_scissors.jpg) Berdasarkan kain pada gambar 3, representasi matriks adalah sebagai berikut. 1 2 3 3 3 4 5 3 5 5 Tabel 1. Representasi matriks untuk gambar 3 A. Menentukan apakah kancing mungkin digunting Kancing pada indeks (i,j) mungkin digunting apabila ada kancing yang bersebelahan yang memiliki warna yang sama dengan kancing tersebut. function IsMayCutUpRight(MATRIX M, int i, int j) if (i!= 0 and j!= M.NKol 1) then while(m[i 1][j + 1] = 0) do i i 1 if (M[i - 1][j + 1] = M[i][j]) then function IsMayCutDownRight(MATRIX M, int i, int j) if (i!= M.NBrs 1 and j!= M.Nkol 1) then while(m[i + 1][j + 1] = 0) do if (M[i + 1][j + 1] = M[i][j]) then B. Menggunting kancing Mengunting kancing dengan cara merubah element Matriks M pada indeks kuncing yang digunting menjadi 0. Kuncing digunting ke arah yang ditentukan sejumlah kancing yang berada pada arah kancing tersebut. procedure CutUpRight(MATRIX M, int i, int j, sum) while (IsMayCutUpRight(M,i,j)) do while(m[i 1][j + 1] = 0) do i i 1

procedure CutDown(MATRIX M, int i, int j, sum) while (IsMayCutDown(M,i,j)) do while(m[i + 1][j] = 0) do procedure CutRight(MATRIX M, int i, int j) while (IsMayCutRight(M,i,j)) do while(m[i][j + 1] = 0) do procedure CutDownRight(MATRIX M, int i, int j) while (IsMayCutDownRight(M,i,j)) do while(m[i + 1][j + 1] = 0) do C. DFS dan Penentuan Solusi Andaikan kita memiliki List of Solution yang setiap elemennya beranggotakan (ic = indeks i pengguntingan, jc = indkes j pengguntingan, ac = arah pengguntingan, jc = jumlah pengguntingan untuk arah tersebut). Arah pengguntingan yang mungkin adalah: 1. Kanan atas, 2. Kanan, 3. Kanan bawah, dan 4. Bawah. Pada setiap simpul diperiksa apakah simpul tersebut simpul akhir atau bukan, selanjutnya diperiksa apakah simpul mati, lalu baru diperiksa untuk setiap element yang masih tersedia apakah bisa digunting, jika bisa maka masuk ke simpul baru dan gunting kancing tersebut. DFS (Matriks M, List Solution) //Solver if seluruh element sudah habis then return dummy valid sol if element belum habis tapi tidak dapat lagi digunting foreach baris foreach kolom if (M[baris][kolom]!= 0) if (IsMayCutUpRight(M,baris,kolom)) CutUpRight(M,baris,kolom,sum) Solution.addFirstElement(baris,kolom,1,sum) if (IsMayCutDown(M,baris,kolom)) CutDown(M,baris,kolom,sum) Solution.addFirstElement(baris,kolom,4,sum) if (IsMayCutRight(M,baris,kolom)) CutRight(M,baris,kolom,sum) Solution.addFirstElement(baris,kolom,2,sum) if (IsMayCutDownRight(M,baris,kolom)) CutDownRight(M,baris,kolom,sum) Solution.addFirstElement(baris,kolom,3,sum)

Berikut penggambaran mekanisme DFS di atas untuk persoalan pada gambar 3. Simpul 1 1 2 3 3 3 4 5 3 5 5 Simpul 2 4 5 3 5 5 Simpul 3 4 5 3 0 0 Simpul 4 4 5 3 0 0 0 2 1 2 2 0 6 4 6 3 Simpul 5 4 5 3 0 0 0 2 1 2 2 6 0 4 6 3 Simpul 6 1 2 0 3 3 4 5 0 5 5 1 2 6 3 4 5 dst. Penambahan solusi ke List dimulai ketika DFS telah dst. memasuki dst. simpul kosong (seluruh elemen matriks telah 0). List akan ditambahkan dummy solution. Lalu DFS akan kembali ke simpul akar, menambahkan solution untuk simpul tersebut, lalu kembali ke simpul akar. Seterusnya, hingga sampai ke simpul awal. Untuk persoalan tersebut, berikut salah satu solusi yang mungkin akan dikembalikan oleh fungsi DFS: - (2,3,1,2) - (2,2,2,3) - (1,2,4,2) - (2,1,3,3) - (3,1,4,2) - (3,4,2,2) - (1,5,4,2) - (4,2,2,2) - (1,1,3,3) - (1,3,4,2) - (5,1,2,2) V. KESIMPULAN Algoritma DFS merupakan algoritma yang cukup baik untuk diterapkan pada persoalan buttons & scissors. Hal ini dikarenakan algoritma DFS menggunakan pencarian dengan cara menjalar ke akar. Sehingga apabila akar telah ditemukan, pencarian tidak perlu dilanjutkan ke akar selanjutnya. Untuk persoalan buttons and scissors, Algoritma DFS juga lebih baik ketimbang algoritma BFS. Hal ini karena, Simpul solusi tidak mungkin ditemukan di awal-awal (untuk matriks 5 x 5 minimal ada 6 simpul) Sehingga akan terbilang boros apabila menggunakan algoritma BFS. VI. UCAPAN TERIMAKASIH Pertama, penulis mengucapkan terima kasih kepada Allah swt yang telah menyertai penulis sehingga berhasil menyelesaikan tugas makalah ini. Penulis juga mengucapkan terima kasih kepada Bapak dan Ibu pengajar mata kuliah IF2211 Strategi Algoritma, yaitu Bapak Dr. Ir. Rinaldi Munir, M.T dan Ibu Dr. Nur Ulfa Maulidevi, S.T, M.Sc. yang telah mengajarkan banyak pelajaran kepada penulis di satu semester ini. Atas bimbingan Bapak dan Ibu, penulis akhirnya berhasil menyelesaikan mata kuliah ini. Penulis juga ingin berterima kasih atas pelajaran eksplorasi strategi algoritma yang Bapak dan Ibu berikan yang dapat penulis bawa sebagai bekal di masa depan. Tanpa tugas eksplorasi yang Bapak dan Ibu berikan, penulis tidak dapat mendapatkan pengalaman lebih dari strategi algoritma saja. Semoga seluruh perjuangan yang telah penulis dapatkan di dalam mata kuliah ini dapat bermanfaat bagi penulis dan lingkungan sekitar.

DAFTAR PUSTAKA [1] http://www.scribd.com/doc/172744204/pengertian-permainan- Menurut-Beberapa-Ahli#scribd diakses tanggal 4 Mei 2015 pukul 20.00 [2] http://informatika.stei.itb.ac.id/~rinaldi.munir/stmik/2013-2014- genap/makalah2014/makalahif2211-2014-096.pdf diakses tanggal 4 Mei 2015 pukul 20.00 [3] Munir, Rinaldi. 2009. Diktat Kuliah Strategi Algoritma, Penerbit Informatika: Bandung. PERNYATAAN Dengan ini saya menyatakan bahwa makalah yang saya tulis ini adalah tulisan saya sendiri, bukan saduran, atau terjemahan dari makalah orang lain, dan bukan plagiasi. Bandung, 5 Mei 2015 Muhammad Ridwan 13513008