ALGORITMA RUNUT-BALIK UNTUK MENGGANTIKAN ALGORITMA BRUTE FORCE DALAM PERSOALAN N-RATU

dokumen-dokumen yang mirip
Algoritma Runut-balik (Backtracking) Bahan Kuliah IF2251 Strategi Algoritmik Oleh: Rinaldi Munir

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

Algoritma Runut-balik (Backtracking) Bagian 1

PENERAPAN ALGORITMA BACKTRACKING PADA PERMAINAN WORD SEARCH PUZZLE

Algoritma Runut-balik (Backtracking)

ANTIMAGIC PUZZLE. Alwi Afiansyah Ramdan

SOLUSI ALGORITMA BACKTRACKING DALAM PERMAINAN KSATRIA MENYEBRANG KASTIL

Perbandingan Algoritma Brute Force dan Backtracking dalam Permainan Word Search Puzzle

SOLUSI PERMAINAN CHEMICALS DENGAN ALGORITMA RUNUT BALIK

Penerapan Algoritma Backtrack pada Knight s Tour

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

Aplikasi Algoritma Runut Balik dalam Pembangkitan Elemen Awal Permainan Sudoku

Penerapan Algoritma Backtracking pada Game The Lonely Knight

ALGORITMA RUNUT BALIK DALAM PENYELESAIAN PERMAINAN WORD DIAGRAM

Penerapan Algoritma Runut-Balik untuk Menyelesaikan Permainan Pencarian Kata

Penerapan Algoritma Runut-balik pada Permainan Math Maze

Penerapan Algoritma Runut-Balik pada Magic Square

Implementasi Algoritma Runut Balik dalam Pengenalan Citra Wajah pada Basis Data

Pencarian Solusi Permainan Fig-Jig Menggunakan Algoritma Runut-Balik

Penyelesaian Permainan 3 missionaries and 3 cannibals Dengan Algoritma Runut-Balik

Penerapan Algoritma Runut-Balik (Backtracking) pada Permainan Nurikabe

Penerapan Algoritma Greedy dalam Pencarian Rantai Penjumlahan Terpendek

UNTUK PEMECAHAN MASALAH PADA PERMAINAN HASHIWOKAKERO

PENERAPAN ALGORITMA RUNUT BALIK DALAM PERMAINAN TEKA-TEKI SILANG

Penggunaan Algoritma Backtracking pada Permainan Mummy Maze

Aplikasi Algoritma Runut-balik pada Penyelesaian Teka Teki Mengisi Angka

Penggunaan Algoritma Backtracking Untuk Menentukan Keisomorfikan Graf

Analisis Penerapan Algoritma Backtracking Pada Pencarian Jalan Keluar di Dalam Labirin

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

Penerapan Algoritma Backtracking pada Pewarnaan Graf

Analisis Beberapa Algoritma dalam Menyelesaikan Pencarian Jalan Terpendek

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

PENYELESAIAN TEKA-TEKI PENYUSUNAN ANGKA MENGGUNAKAN ALGORITMA RUNUT BALIK

ANALISIS PENYELESAIAN PUZZLE SUDOKU DENGAN MENERAPKAN ALGORITMA BACKTRACKING ABSTRAK

PENGUNAAN DUA VERSI ALGORITMA BACKTRACK DALAM MENCARI SOLUSI PERMAINAN SUDOKU

Pencarian Solusi Permainan Pipe Puzzle Menggunakan Algoritma Backtrack

Pendeteksian Deadlock dengan Algoritma Runut-balik

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

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

Penggunaan Algoritma Runut-balik Pada Pencarian Solusi dalam Persoalan Magic Square

Penerapan Algoritma Greedy dan Backtrackng Dalam Penyelesaian Masalah Rubik s Cube

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

PERMAINAN KNIGHT S TOUR DENGAN ALGORITMA BACKTRACKING DAN ATURAN WARNSDORFF

PENGGUNAAN ALGORITMA BACKTRACKING DALAM PENCARIAN KOEFISIEN ROOK POLYNOMIAL

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

Mekanisme Penanganan Deadlock Dalam Pemrosesan Transaksi Oleh DBMS Menggunakan Algoritma Backtracking

PENCARIAN SOLUSI TTS ANGKA DENGAN ALGORITMA RUNUT BALIK BESERTA PENGEMBANGANNYA

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

Pemanfaatan Algoritma Runut-balik dalam Penentuan Golongan Suara pada Dunia Paduan Suara

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

Penggunaan Algoritma Greedy untuk menyelesaikan Permainan Othello

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

ANALISIS PENYELESAIAN PUZZLE SUDOKU DENGAN MENERAPKAN ALGORITMA BACKTRACKING MEMANFAATKAN BAHASA PEMROGRAMAN VISUAL BASIC 6.0

PERBANDINGAN ALGORITMA GREEDY DAN BRUTE FORCE DALAM SIMULASI PENCARIAN KOIN

Penerapan Algoritma Runut-Balik untuk Menyelesaikan Zebra Puzzle

Penggabungan Algoritma Brute Force dan Backtracking dalam Travelling Thief Problem

Penerapan Algoritma DFS pada Permainan Sudoku dengan Backtracking

Oleh Lukman Hariadi

Penerapan Algoritma Backtracking dalam Permainan Futoshiki Puzzle

Penyelesaian Permainan Pacman yang disederhanakan dengan Algoritma Backtracking

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

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

Algoritma Runut-Balik pada Robot Pemadam Api

backtracking Backtracking

Implementasi Algoritma Backtracking dalam Pencarian Solusi Flash Game Web-Based Maze

BAB 2 LANDASAN TEORI

Penerapan Algoritma Backtracking pada Knight s Tour Problem

AlgoritmaBrute Force. Desain dan Analisis Algoritma (CS3024)

Menyelesaikan Permainan Wordament Menggunakan Algoritma Backtracking

ALGORITMA MENCARI LINTASAN TERPENDEK

Algoritma Puzzle Pencarian Kata

Penerapan Algoritma Backtracking untuk Menyelesaikan Permainan Hashiwokakero

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

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir

PENYELESAIAN PERMAINAN SUDOKU DENGAN ALGORITMA BRUTEFORCE,BACKTRACKING,dan BACKTRACKING DENGAN OPTIMASI

Penerapan Algoritma Brute Force dan Backtracking pada Permainan Skycraper

Penerapan Algoritma Brute-Force serta Backtracking dalam Penyelesaian Cryptarithmetic

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

Pencarian Solusi Permainan Flow Free Menggunakan Brute Force dan Pruning

IMPLEMENTASI ALGORITMA GREEDY PADA PERMAINAN OTHELLO

APLIKASI ALGORITMA PENCOCOKAN STRING KNUTH-MORRIS-PRATT (KPM) DALAM PENGENALAN SIDIK JARI

Pemecahan Masalah Knapsack dengan Menggunakan Algoritma Branch and Bound

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

Penerapan Algoritma Backtracking pada Pencarian Solusi Fill-in Crossnumber

Penerapan Algoritma Runut-Balik dan Graf dalam Pemecahan Knight s Tour

Algoritma Brute Force

ANALISIS TEKNIK PENGISIAN KATA DALAM PERMAINAN TEKA-TEKI SILANG

Penyelesaian Berbagai Permasalahan Algoritma dengan Kombinasi Algoritma Brute Force dan Greedy

ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

Eksplorasi Algoritma Brute Force, Greedy, dan Dynamic Programming untuk Persoalan Integer Knapsack

Analisa dan Perancangan Algoritma. Ahmad Sabri, Dr Sesi 2: 16 Mei 2016

PERBANDINGAN KOMPLEKSITAS ALGORITMA PENCARIAN BINER DAN ALGORITMA PENCARIAN BERUNTUN

Penggunaan Strategi Algoritma Backtracking pada Pencarian Solusi Puzzle Pentomino

Permasalahan Clique dalam Graf

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

PENGGUNAAN ALGORITMA BACKTRACKING DALAM PENYELESAIAN PERMAINAN SUDOKU

Algoritma Pencarian String Knuth-Morris-Pratt Dalam Pengenalan Tulisan Tangan

Perbandingan Algoritma Brute Force dan Breadth First Search dalam Permainan Onet

PENGGUNAAN EXHAUSTIVE SEARCH SEBAGAI SOLUSI PERMAINAN SCRAMBLE

ALGORITMA BACKTRACKING SEBAGAI SOLUSI GAME WORD SEARCH PUZZLE BERBASIS JAVA MOBILE

Transkripsi:

ALGORITMA RUNUT-BALIK UNTUK MENGGANTIKAN ALGORITMA BRUTE FORCE DALAM PERSOALAN N-RATU Nur Cahya Pribadi-NIM: 13505062 Program Studi Teknik Informatika, Institut Teknologi Bandung Jl. Ganesha 10, Bandung E-mail: if15062@students.if.itb.ac.id ABSTRAK Dalam kehidupan seringkali menemui banyak masalah. Kadang-kadang masalah tersebut kita selesaikan dengan cara yang paling cepat,tetapi belum tentu tepat. Hal ini juga dapat terjadi di dunia komputer yaitu pemograman. Seringkali untuk menyelesaikan suatu masalah pemograman dengan cepat digunakan algoritma Brute Force, tetapi sayangnya algoritma ini kurang begitu mangkus. Dalam aplikasi yang kecil mungkin algoritma ini mungkin bisa digunakan, tetapi dalam aplikasi yang besar algoritma ini tidak tepat digunakan karena dapat membuat kompleksitas waktu dan kompleksitas ruang aplikasi menjadi besar. Oleh karena itu untuk menggantikan algoritma Brute Force dalam beberapa masalah digunakan algoritma runut-balik atau sering disebut backtracking. Algoritma Brute Force adalah sebuah pendekatan yang lempang untuk memecahkan suatu masalah, biasanya didasarkan langsung pada pernyataan masalah dan definisi konsep yang dilibatkan. Algoritma runut-balik adalah algoritma yang berbasis DFS untuk mencari solusui persoalan yang lebih mangkus. Kompleksitas waktu adalah jumlah operasi yang dilakukan untuk menjalankan sebuah algoritma sebagai fungsi dari ukuran masukan n. Sedangkan kompleksitas ruang adalah ruang memori yang dibutuhkan algoritma sebagai fungsi dari ukuran masukan n. Kata kunci: Algoritma Brute Force, Algoritma runutbalik, Kompleksitas waktu. 1. PENDAHULUAN Ada banyak algoritma alternatif untuk menggantikan algoritma brute force yaitu algoritma greedy dalam pemecahan persoalan penukaran uang, algoritma Divide and Conquer dalam persoalan pencarian minimum dan maksimum, dan algoritma Knuth-Morris-Pratt pada persoalan pencarian string. Tapi dalam persoalan N-Ratu algoritma yang cocok untuk menggantikan algoritma Brute Force adalah algoritma runut-balik. Tentu saja dengan menggunakan algoritma runut-balik sebagai alternatif pengganti algoritma Brute Force pada persoalan N-Ratu membuat kompleksitas waktu menjadi semakin kecil. 2. METODE Dalam persoalan N-Ratu ini digunakan algoritma runutbalik untuk menggantikan algoritma Brute Force. Istilah runut-balik pertama kali diperkenalkan onleh D.H Lehmer pada tahun 1950. Uraian umum dan penerapannya pada berbagai persoalan selanjutnya disajikan oleh R.J. Walker, Golomb, dan Baumert. Algoritma runut-balik merupakan perbaikan dari algoritma Brute Force, secara sistematis mencari solusi persoalan diantara semua kemungkinan solusi yang ada. Dengan metode ini, kita tidak perlu memeriksa semua kemungkinan solusi yang ada. Hanya pencarian mengarah ke solusi saja yang selalu dipertimbangkan. Akibatnya kompleksitas wak tu menjadi semakin kecil. 2.1 Properti Umum Untuk menerapkan metode runut-balik, properti berikut didefinisikan: 1. Solusi persoalan. Solusi dinyatakan sebagai vektor n-tuple: X=(x1, x2, x3,...,xn) x1 himpunan berhingga S1. Mungkin saja S1=S2=...=Sn. Contoh Si={0,1} Xi= 0 atau 1 2. Fungsi Pembangkit nilai xk Dinyatakan sebagai: T(k) T(k) membangkitkan nilai untuk xk, yang merupakan komponen vektor solusi. ALGORITMA RUNUT-BALIK UNTUK MENGGANTIKAN ALGORITMA BRUTE FORCE DALAM PERSOALAN N-RATU 1

3. Fungsi kriteria Dinyatakan sebagai B(x1, x2,...,xk) 2.2 Prinsip Pencarian Solusi Pencarian solusi ditinjau pada pohon ruang status yang dibangun secara dinamis. Langkah-langkah pencarian solusi adalah sebagai berikut: 1. Solusi dicari dengan membentuk lintasan dari akar ke daun. Aturan pembentukan yang dipakai adalah mengikuti metode pencarian mendalam (DFS). Simpul-simpul yang sudah dilahirkan dinamakan simpul hidup. Simpul hidup yang sedang diperluas dinamakan simpul-e. Simpul dinomori dari atas ke bawah sesuai dengan urutan kelahirannya. 2. Tiap kali simpul-e diperluas, lintasan yang dibangun olehnya bertambah panjang. Jika lintasan yang sedang dibentuk tidak mengarah ke solusi, maka simpul-e tersebut dibunuh sehingga menjadi simpul mati. Fungsi yang digunakan untuk membunuh simpul-e adalah dengan menerapkan fungsi pembatas. Simpul yang sudah mati tidak akan pernah diperluas lagi. 3. Jika pembentukan lintasan berakhir dengan simpul mati, maka proses pencarian diteruskan dengan membangkitkan simpul anak yang lainnya. Bila tidak ada lagi simpul anak yang dapat dibangkitkan, maka pencarian solusi dilanjutkan dengan melakukan runut-balik ke simpul hidup terdekat. Selanjutnya simpul ini menjadi simpul-e yang baru. Lintasan baru dibangun kembali sampai lintasan tersebut membentuk solusi. 4. Pencarian dihentikan bila kita telah menemukan solusi atau tidak ada lagi simpul hidup untuk runut-balik. 2.3 Skema Umum ( x[k] T[k]) and B(x[1], x[2],...,x[k])=true do If (x[1], x[2],..., x[k]) adalah lintasan dari akar ke daun then CetakSolusi(x) RunutBalikR(k+1) 2. Versi iteratif Procedure RunutBalikI(input n:integer) K:integer; k 1 while k>0 do if(x[k] belum dicoba sedemikian sehingga x[k] T[k]) and (B(x[1], x[2]..., x[k])=true)then If (x[1], x[2],..., x[k]) adalah lintasan dari akar ke daun then CetakSolusi(x) 3. PERSOALAN N-RATU Diberikan sebuah papan catur berukuran NxN dan delapan buah ratu. Bagaimanakah menempatkan N buah ratu itu terletak pada papan catur sedemikian sehingga tidak ada dua ratu atau lebih yang terletak pada satu baris yang sama, atau pada satu kolom yang sama, atau pada suatu diagonal yang sama? Contoh solusi persoalan 8-ratu ditunjukan oleh gambar berikut: Dibawah ini disajikan skema umum algoritma runut-balik dalam dua versi yaitu versi rekursif dan versi iteratif. 1.Versi Rekursif Procedure RunutBalikR(input k:integer) For tiap x[k] yang belum dicoba sedemikian sehingga ALGORITMA RUNUT-BALIK UNTUK MENGGANTIKAN ALGORITMA BRUTE FORCE DALAM PERSOALAN N-RATU 2

Gambar 1. Salah satu contoh solusi dari persoalan n-ratu. 3.1 Penyelesaian dengan Algoritma Brute Force Masalah persoalan ini dapat diselesaikan dengan algoritma Brute Force : a) Brute Force 1 Mencoba semua kemungkinan solusi penempatan 8 buah ratu pada petak-petak catur. Jika dimisalkan solusinya dijadikan pohon ruang maka algoritma ini seperti pohon ruang status statis. Taruh 8 buah ratu pada setiap petak sembarang, dan diperiksa apakah posisi semua ratu merupakan sebuah solusi. Ketidakmangkusan pada metode ini pada pencarian yang sudah tidak mungkin mendapatkan solusi lagi masih diteruskan. Banyaknya kemungkinan solusi adalah C(64, 8)= 4.426.165.368 64 merupakan banyaknya petak pada papan catur dan 8 merupakan 8 buah ratu. b) Brute Force 2 Pada metode ini lebih maju satu langkah dari metode Brute Force sebelumnya yaitu meletakkan satu ratu pada setiap baris yang berbeda. Kemudian diperiksa posisi raturatu tersebut merupakan sebuah solusi. procedure Ratu1 i1, i2, i3, i4, i5,i6,i7,i8 : integer; for i1 1 to 8 do for i2 1 to 8 do for i3 1 to 8 do for i4 1 to 8 do for i5 1 to 8 do for i6 1 to 8 do for i7 1 to 8 do for i8 1 to 8 do if Solusi(i1, i2, i3, i4, i5,i6,i7,i8) then CetakSolusi(); Dengan algoritma Brute Force ini, jumlah kemungkinan solusi yang diperiksa semakin berkurang menjadi 8x8x8x8x8x8x8x8=16.777.216 Kelemahan pada algoritma ini adalah tidak memperhatikan penempatan n-ratu pada kolom yang sama dan diagonal yang sama serta terus melanjutkan penempatan n-ratu padahal solusi sudah jelas tidak mungkin ditemukan. c) Brute Force 3 Metode Brute Force kali ini hampir sama dengan metode Brute Force sebelumnya hanya pada metode Brute Force kali ini kita menempatkan ratu pada baris dan kolom yang berbeda. Misalkan solusinya dinyatakan delam vektor 8- tupple : X=(x1, x2,..., x8) Dalam hal ini x menyatakan kolom kedudukan ratu pada baris ke-i. Dengan mengamati bahwa vektor solusi merupakan permutasi dari bilangan 1 sampai 8. maka banyak kemungkinan solusi adalah P(8,8)=8!=40.230. procedure Ratu1 X:vektor solusi n, i: integer n 40320 i 1 repeat X Permutasi(8) if Solusi(X) then CetakSolusi(X); i i+1 until i> n ALGORITMA RUNUT-BALIK UNTUK MENGGANTIKAN ALGORITMA BRUTE FORCE DALAM PERSOALAN N-RATU 3

Kelemahan pada Brute Force ini adalah tidak memperhatikan penempatan ratu pada posisi diagonal dan masih meneruskan penempatan ratu ketika solusi tidak mungkin ditemukan. 3.2 Penyelesaian dengan Algoritma Runut- Balik Dalam algoritma runut-balik ini hanya memperbaiki algoritma Brute Force 3. Dimana algoritma Brute Force 3 hanya mempermutasi n-ratu pada baris dan kolom berbeda dan juga penempatannya tidak memperhatikan persyaratan diagonal (hanya ada fungsi solusi). Dan pada algoritma Brute Force 3 meneruskan penempatan n-ratu ketika solusi sudah jelas tidak ditemukan lagi. Berbeda dengan algoritma runut-balik. Algoritma ini memperhatikan penempatan n-ratu pada posisi diagonal dan tidak meneruskan penempatan n-ratu ketika solusi sudah jelas tidak dapat ditemukan. Karena itu algoritma ini lebih lebih mangkus dan mempunyai kompleksitas waktu yang lebih kecil dari algoritma Brute Force pada persoalan n-ratu. (a) Versi Iteratif Dua buah ratu terletak pada baris yang sama, berarti i=k Dua buah ratu terletak pada kolom yang sama, berarti j=l Dua buah ratu terletak pada diagonal yang sama, berarti untuk diagonal kanan bawah: i-j=k-l. (1) untuk diagonal kiri bawah: i+j=k+l (2) dari (1) dan (2) kita dapat jadikan i-k=j-l atau k-i=j-l j-l = i-k Algoritma pemecahan persoalan n-ratu dengan versi iteratif procedure N_RATU_I(input N:integer) k:integer; x:array[1..n]of integer k 1 x[1] 0 while k >0 do while(x[k]<=n)and(not TEMPAT(k))do if(x[k]<=n)then if k=n then CetakSolusi(x,N) x[k] 0 Fungsi TEMPAT mengembalikan true jika penempatan ratu tepat sesuai persyaratan yaitu ratu ditempatkan pada baris, kolom, dan diagonal yang berbeda. Pertama-tama ratu ditempatkan pada baris kesatu (k 1) dan pada kolom ke-0(x[1] 0). terus terjadi looping selama solusi belum ditemukan(while k >0 do). Ratu ditempatkan pada kolom selanjutnya(). Ketika ratu tidak bisa ditempatkan pada kolom yang sedang berlangsung(tidak sesuai dengan persyaratan baris, kolom, diagonal) maka ratu akan ditempatkan pada kolom selanjutnya dan ini terjadi looping sampai kolom yang ratu tempatkan tidak melanggar persyaratan baris, kolom, dan diagonal. Ketika kolom penempatan ratu ditemukan maka dicek lagi apakah semua ratu pada setiap baris sudah ditempatkan. jika semua ratu sudah ditempatkan maka solusi dicetak. jika tidak maka pergi ke baris berikutnya dan kolom diinisialisasikan menjadi nol kembali. Dan ketika penempatan ratu pada kolom tidak ditemukan maka dilakukan backtracking ke baris sebelumnya. (b) Versi Rekursif procedure N_RATU_R(input k,n:integer) x:array[1..n]of integer stop:boolean stop false while not stop do while(x[k]<=n)and(not TEMPAT(k))do if x[k]<=n then if k=n then CetakSolusi(x,N) N_RATU_R(k+1,N) stop true ALGORITMA RUNUT-BALIK UNTUK MENGGANTIKAN ALGORITMA BRUTE FORCE DALAM PERSOALAN N-RATU 4

x[k] 0 Pada skema rekursif ini tidak banyak berubah dari skema iteratif perbedaannya hanya ada pada penempatan ratu pada baris berikutnya dilakukan dengan cara rekursif. IV. KESIMPULAN Kesimpulan yang dapat diambil adalah: 1. Algoritma Brute Force adalah sebuah pendekatan yang lempang untuk memecahkan suatu masalah, biasanya didasarkan langsung pada pernyataan masalah dan definisi konsep yang dilibatkan. Algoritma runutbalik adalah algoritma yang berbasis DFS untuk mencari solusui persoalan yang lebih mangkus. Kompleksitas waktu adalah jumlah operasi yang dilakukan untuk menjalankan sebuah algoritma sebagai fungsi dari ukuran masukan n. 2. Ada beberapa persoalan yang dapat menggantikan algoritma Brute Force seperti algoritma greedy dalam pemecahan persoalan penukaran uang, algoritma Divide and Conquer dalam persoalan pencarian minimum dan maksimum, algoritma Knuth-Morris-Pratt, dan algoritma runut-balik pada persoalan n-ratu. 3. Pada persoalan n-ratu algoritma runut-balik memperhatikan penempatan n-ratu pada posisi diagonal dan tidak meneruskan penempatan n-ratu ketika solusi sudah jelas tidak dapat ditemukan. Sedangkan pada algoritma Brute Force 3, 2 hal ini tidak diimplementasikan. Karena itu algoritma runut-balik lebih lebih mangkus dan mempunyai kompleksitas waktu yang lebih kecil dari algoritma Brute Force. REFERENSI [1] Munir, Rinaldi, Strategi Algoritmik, ITB, 2007. ALGORITMA RUNUT-BALIK UNTUK MENGGANTIKAN ALGORITMA BRUTE FORCE DALAM PERSOALAN N-RATU 5