Algoritma Brute Force (lanjutan)

dokumen-dokumen yang mirip
Algoritma Brute Force (lanjutan)

Algoritma Brute Force (Bagian 2) Oleh: Rinaldi Munir Bahan Kuliah IF2251 Strategi Algoritmik

Algoritma Brute Force(lanjutan) Lecture 6 CS3024

Algoritma Brute Force Oleh: Rinaldi Munir

Design and Analysis Algorithm. Ahmad Afif Supianto, S.Si., M.Kom. Pertemuan 05

Algoritma Brute Force

Algoritma Brute Force

Algoritma Brute Force

Design and Analysis of Algorithm

Design and Analysis of Algorithms CNH2G3- Week 7 Brute Force Algorithm Part 2: Exhaustive Search

Design and Analysis Algorithm

Implementasi Algoritma Greedy dalam Pembagian kerja pada Mesin yang Identik

Strategi Algoritma Penyelesaian Puzzle Hanjie

Penerapan Algoritma Brute Force pada Permainan Kartu 24 (24 game)

Penerapan Algoritma Brute Force di Permainan Nonogram

BAB II LANDASAN TEORI

Pendahuluan. Algoritma greedy merupakan metode yang paling populer untuk memecahkan persoalan optimasi.

Penerapan Algoritma Brute Force pada permainan Countdown Number

IF5110 Teori Komputasi. Teori Kompleksitas. (Bagian 1) Oleh: Rinaldi Munir. Program Studi Magister Informatika STEI-ITB

Algoritma Greedy (lanjutan)

Algoritma Divide and Conquer (Bagian 1)

Pendahuluan. Sebuah algoritma tidak saja harus benar, tetapi juga harus efisien. Algoritma yang bagus adalah algoritma yang efektif dan efisien.

Algoritma Brute Force

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 Brute Force pada Teka-teki Magic Square 3 x 3

Penerapan Algoritma Runut-balik pada Permainan Math Maze

Perbandingan Algoritma Brute Force dan Backtracking dalam Permainan Word Search Puzzle

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir

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

PERENCANAAN RUTE PENGIRIMAN MENGGUNAKAN METODE PARALLEL INSERTION DAN EXHAUSTIVE SEARCH PADA PT. STARMASS LOGISTICS

Design and Analysis Algorithm

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

Design and Analysis of Algorithms CNH2G3- Week 8 Greedy Algorithm

Penerapan Algoritma Brute Force dalam mencari Faktor Prima pada suatu Bilangan

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

Algoritma greedy merupakan metode yang paling populer untuk memecahkan persoalan optimasi.

Algoritma Brute Force pada Fluid Particle Engine

AlgoritmaBrute Force. Desain dan Analisis Algoritma (CS3024)

BAB II LANDASAN TEORI

PENERAPAN ALGORITMA GENETIKA PADA PERSOALAN PEDAGANG KELILING (TSP)

Kompleksitas Algoritma

Algoritma Greedy (lanjutan)

Penggabungan Algoritma Brute Force dan Backtracking dalam Travelling Thief Problem

Pengantar Strategi Algoritmik. Oleh: Rinaldi Munir

Penggunaan Algoritma Greedy dalam Membangun Pohon Merentang Minimum

Algoritma Exhaustive Search Dalam Permainan Congklak

What Is Greedy Technique

PROGRAM STUDI S1 SISTEM KOMPUTER UNIVERSITAS DIPONEGORO. Oky Dwi Nurhayati, ST, MT

ALGORITMA MENCARI LINTASAN TERPENDEK

Penyelesaian Sum of Subset Problem dengan Dynamic Programming

UNIVERSITAS GUNADARMA

Algoritma Brute Force dalam Pattern Matching pada Aplikasi Pendeteksian Potongan Citra

BAB 2 LANDASAN TEORI

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

Penerapan Algoritma Brute-Force serta Backtracking dalam Penyelesaian Cryptarithmetic

Implementasi Algoritma Greedy pada Permainan Ludo

Penggunaan Metode Branch And Bound With Search Tree

Kompleksitas Algoritma

PENGGUNAAN EXHAUSTIVE SEARCH SEBAGAI SOLUSI PERMAINAN SCRAMBLE

Matematika Diskrit Kompleksitas Algoritma. Instruktur : Ferry Wahyu Wibowo, S.Si., M.Cs.

Aplikasi Graf dalam Rute Pengiriman Barang

IMPLEMENTASI ALGORITMA GREEDY UNTUK MENYELESAIKAN MASALAH KNAPSACK PROBLEM

EKSPLORASI ALGORITMA BRUTE FORCE, GREEDY DAN PEMROGRAMAN DINAMIS PADA PENYELESAIAN MASALAH 0/1 KNAPSACK

PENGUNAAN DUA VERSI ALGORITMA BACKTRACK DALAM MENCARI SOLUSI PERMAINAN SUDOKU

PERBANDINGAN KOMPLEKSITAS PENERAPAN ALGORITMA GREEDY UNTUK BEBERAPA MASALAH

Divide and Conqueradalah strategi militer yang dikenal dengan nama divide ut imperes.

Teori Kompleksitas (Bagian 2)

Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus (efisien). Algoritma yang bagus adalah algoritma yang mangkus.

Penyelesaian Berbagai Permasalahan Algoritma dengan Kombinasi Algoritma Brute Force dan Greedy

Kompleksitas Algoritma

Algoritma Branch & Bound

Algoritma Runut-balik (Backtracking)

Decrease and Conquer

BAB II KAJIAN TEORI 2.1 Kajian Penelitian Sebelumnya

ALGORITMA DIVIDE AND CONQUER

Kompleksitas Algoritma

Algoritma Runut-balik (Backtracking) Bagian 1

Review Teori P dan NP

ANALISIS ALGORITMA. Disusun Oleh: Analisis Masalah dan Running Time. Adam Mukharil Bachtiar Teknik Informatika UNIKOM

Kompleksitas Algoritma

Pengantar Strategi Algoritma

MAKALAH ALGORITMA DIVIDE AND CONQUER

IMPLEMENTASI GRAF DENGAN MENGGUNAKAN STRATEGI GREEDY

IMPLEMENTASI GRAF DENGAN MENGGUNAKAN STRATEGI GREEDY

PENERAPAN ALGORITMA BRANCH AND BOUND DALAM MENENTUKAN RUTE TERPENDEK UNTUK PERJALANAN ANTARKOTA DI JAWA BARAT

Aplikasi Algoritma Branch and Bound dalam Pencarian Solusi Optimum Job Assignment Problem

Aplikasi Divide and Conquer pada Perkalian Large Integer untuk Menghitung Jumlah Rute TSP Brute Force

Pemecahan Masalah Knapsack dengan Menggunakan Algoritma Branch and Bound

Solusi UTS Stima. Alternatif 1 strategi:

BAB 2 LANDASAN TEORI

MEMBANDINGKAN KEMANGKUSAN ALGORITMA PRIM DAN ALGORITMA KRUSKAL DALAM PEMECAHAN MASALAH POHON MERENTANG MINIMUM

ALGORITMA RUTE FUZZY TERPENDEK UNTUK KONEKSI SALURAN TELEPON

Pencarian Solusi Permainan Flow Free Menggunakan Brute Force dan Pruning

Branch & Bound. Bahan Kuliah IF2211 Strategi Algoritma Rinaldi Munir & Masayu Leylia Khodra

Aplikasi Algoritma Runut Balik dalam Pembangkitan Elemen Awal Permainan Sudoku

Menebak Password RAR Menggunakan RAR Password Recovery Magic dengan Algoritma Brute Force

Journal of Informatics and Technology, Vol 1, No 1, Tahun 2012, p

Penerapan Algoritma Brute Force pada Password Recovery

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

Penerapan Algoritma Greedy dalam Pencarian Rantai Penjumlahan Terpendek

Transkripsi:

Algoritma Brute Force (lanjutan)

Contoh lain Mencari Pasangan Titik yang Jaraknya Terdekat Persoalan: Diberikan n buah titik (2-D atau 3- D), tentukan dua buah titik yang terdekat satu sama lain. y p 5 p 2 p 4 p 3 p 6 p 1 p 8 p 7 x

Jarak dua buah titik di bidang 2-D, p 1 = (x 1, y 1 ) dan p 2 = (x 2, y 2 ) adalah (rumus Euclidean): Algoritma brute force: d ( x y 2 2 x ) ( y ) 1 2 1 2 1. Hitung jarak setiap pasang titik. 2. Pasangan titik yang mempunyai jarak terpendek itulah jawabannya. Algoritma brute force akan menghitung sebanyak C(n, 2) = n(n 1)/2 pasangan titik dan memilih pasangan titik yang mempunyai jarak terkecil. Kompleksitas algoritma adalah O(n 2 ).

procedure CariDuaTitikTerdekat(input P : SetOfPoint, n : integer, output P1, P2 : Point) { Mencari dua buah titik di dalam himpunan P yang jaraknya terdekat. Masukan: P = himpunan titik, dengan struktur data sebagai berikut type Point = record(x : real, y : real) type SetOfPoint = array [1..n] of Point Keluaran: dua buah titik, P1 dan P2 yang jaraknya terdekat. } Deklarasi d, dmin : real i, j : integer Algoritma: dmin 9999 for i 1 to n-1 do for j i+1 to n do d ((P i.x-p j.x) 2 + ((P i.y-p j.y) 2 ) if d < dmin then { perbarui jarak terdekat } dmin d P1 P i P2 P j endif endfor endfor Kompleksitas algoritma: O(n 2 ).

Kekuatan: Kekuatan dan Kelemahan Metode Brute Force 1. Metode brute force dapat digunakan untuk memecahkan hampir sebagian besar masalah (wide applicability). 2. Metode brute force sederhana dan mudah dimengerti. 3. Metode brute force menghasilkan algoritma yang layak untuk beberapa masalah penting seperti pencarian, pengurutan, pencocokan string, perkalian matriks. 4. Metode brute force menghasilkan algoritma baku (standard) untuk tugas-tugas komputasi seperti penjumlahan/perkalian n buah bilangan, menentukan elemen minimum atau maksimum di dalam tabel (list).

Kelemahan: 1. Metode brute force jarang menghasilkan algoritma yang mangkus. 2. Beberapa algoritma brute force lambat sehingga tidak dapat diterima. 3. Tidak sekontruktif/sekreatif teknik pemecahan masalah lainnya. Ken Thompson (salah seorang penemu Unix) mengatakan: When in doubt, use brute force, faktanya kernel Unix yang asli lebih menyukai algoritma yang sederhana dan kuat (robust) daripada algoritma yang cerdas tapi rapuh.

Exhaustive Search Exhaustive search adalah teknik pencarian solusi secara solusi brute force untuk masalah yang melibatkan pencarian elemen dengan sifat khusus; biasanya di antara objek-objek kombinatorik seperti permutasi, kombinasi, atau himpunan bagian dari sebuah himpunan.

Langkah-langkah metode exhaustive search: 1. Enumerasi (list) setiap solusi yang mungkin dengan cara yang sistematis. 2. Evaluasi setiap kemungkinan solusi satu per satu, mungkin saja beberapa kemungkinan solusi yang tidak layak dikeluarkan, dan simpan solusi terbaik yang ditemukan sampai sejauh ini (the best solusi found so far). 3. Bila pencarian berakhir, umumkan solusi terbaik (the winner) Meskipun algoritma exhaustive secara teoritis menghasilkan solusi, namun waktu atau sumberdaya yang dibutuhkan dalam pencarian solusinya sangat besar.

Contoh-contoh exhaustive search 1. Travelling Salesperson Problem (TSP) Persoalan: Diberikan n buah kota serta diketahui jarak antara setiap kota satu sama lain. Temukan perjalanan (tour) terpendek yang melalui setiap kota lainnya hanya sekali dan kembali lagi ke kota asal keberangkatan. Persoalan TSP tidak lain adalah menemukan sirkuit Hamilton dengan bobot minimum.

Algoritma exhaustive search untuk persoalan TSP: 1. Enumerasikan (list) semua sirkuit Hamilton dari graf lengkap dengan n buah simpul. 2. Hitung (evaluasi) bobot setiap sirkuit Hamilton yang ditemukan pada langkah 1. 3. Pilih sirkuit Hamilton yang mempunyai bobot terkecil.

Contoh 4: TSP dengan n = 4, simpul awal = a 10 d a 5 12 15 9 b c 8 No. Rute perjalanan (tour) Bobot a b c d a a b d c a a c b d a a c d b a a d b c a a d c b a 1. 2. 3. 4. 5. 6 10+12+8+15 = 45 12+5+9+15 = 41 10+5+9+8 = 32 12+5+9+15 = 41 10+5+9+8 = 32 10+12+8+15 = 45 Rute perjalananan terpendek adalah a c b d a a d b c a dengan bobot = 32.

Untuk n buah simpul semua rute perjalanan yang mungkin dibangkitkan dengan permutasi dari n 1 buah simpul. Permutasi dari n 1 buah simpul adalah (n 1)! Pada contoh di atas, untuk n = 6 akan terdapat (4 1)! = 3! = 6 buah rute perjalanan.

Jika diselesaikan dengan metode exhaustive search, maka kita harus mengenumerasi sebanyak (n 1)! buah sirkuit Hamilton, menghitung setiap bobotnya, dan memilih sirkuit Hamilton dengan bobot terkecil. Kompleksitas waktu algoritma exhaustive search untuk persoalan TSP sebanding dengan (n 1)! dikali dengan waktu untuk menghitung bobot setiap sirkuit Hamilton. Menghitung bobot setiap sirkuit Hamilton membutuhkan waktu O(n), sehingga kompleksitas waktu algoritma exhaustive search untuk persoalan TSP adalah O(n n!).

Perbaikan: setengah dari rute perjalanan adalah hasil pencerminan dari setengah rute yang lain, yakni dengan mengubah arah rute perjalanan 1 dan 6 2 dan 4 3 dan 5

maka dapat dihilangkan setengah dari jumlah permutasi (dari 6 menjadi 3). Ketiga buah sirkuit Hamilton yang dihasilkan adalah seperti gambar di bawah ini: a 12 b a 12 b a b 10 8 5 9 10 5 9 8 d 15 c d 15 c d c

Dengan demikian, untuk graf dengan n buah simpul, kita hanya perlu mengevaluasi sirkuit Hamilton sebanyak (n 1)!/2 buah. Untuk ukuran masukan yang besar, algoritma exhaustive search menjadi sangat tidak mangkus. Pada persoalan TSP misalnya, untuk jumlah simpul n = 20 akan terdapat (19!)/2 = 6 1016 sirkuit Hamilton yang harus dievaluasi satu per satu.

Sayangnya, untuk persoalan TSP tidak ada algoritma lain yang lebih baik daripada algoritma exhaustive search. Jika anda dapat menemukan algoritma yang mangkus untuk TSP, anda akan menjadi terkenal dan kaya! Algoritma yang mangkus selalu mempunyai kompleksitas waktu dalam orde polinomial.

2. 1/0 Knapsack Persoalan: Diberikan n buah objek dan sebuah knapsack dengan kapasitas bobot K. Setiap objek memiliki properti bobot (weigth) w i dan keuntungan(profit) p i. Bagaimana memilih memilih objek-objek yang dimasukkan ke dalam knapsack sedemikian sehingga memaksimumkan keuntungan. Total bobot objek yang dimasukkan ke dalam knapsack tidak boleh melebihi kapasitas knapsack. Persoalan 0/1 Knapsack dapat kita pandang sebagai mencari himpunan bagian (subset) dari keseluruhan objek yang muat ke dalam knapsack dan memberikan total keuntungan terbesar.

Solusi persoalan dinyatakan sebagai vektor n-tupel: X = {x 1, x 2,, x n } x i = 1 jika objek ke-i dimasukkan ke dalam knapsack, x i = 0 jika objek ke-i tidak dimasukkan.

Formulasi secara matematis: Maksimasi F = px i i n i 1 dengan kendala (constraint) n wx i 1 i i K yang dalam hal ini, x i = 0 atau 1, i = 1, 2,, n

Algoritma exhaustive search untuk persoalan 0/1 Knapsack: 1. Enumerasikan (list) semua himpunan bagian dari himpunan dengan n objek. 2. Hitung (evaluasi) total keuntungan dari setiap himpunan bagian dari langkah 1. 3. Pilih himpunan bagian yang memberikan total keuntungan terbesar.

Contoh: n = 4. w 1 = 2; p 1 = 20 w 2 = 5; p 2 = 30 w 3 = 10; p 3 = 50 w 4 = 5; p 4 = 10 Kapasitas knapsack K = 16 Langkah-langkah pencarian solusi 0/1 Knapsack secara exhaustive search dirangkum dalam tabel di bawah ini:

Himpunan Bagian Total Bobot Total keuntungan {} {1} {2} {3} {4} {1, 2} {1, 3} {1, 4} {2, 3} {2, 4} {3, 4} {1, 2, 3} {1, 2, 4} {1, 3, 4} {2, 3, 4} {1, 2, 3, 4} 0 2 5 10 5 7 12 7 15 10 15 17 12 17 20 22 0 20 30 50 10 50 70 30 80 40 60 tidak layak 60 tidak layak tidak layak tidak layak Himpunan bagian objek yang memberikan keuntungan maksimum adalah {2, 3} dengan total keuntungan adalah 80. Solusi: X = {0, 1, 1, 0}