AlgoritmaBrute Force. Desain dan Analisis Algoritma (CS3024)

dokumen-dokumen yang mirip
Algoritma Brute Force

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir

Algoritma Brute Force

Algoritma Brute Force Oleh: Rinaldi Munir

Algoritma Brute Force

Algoritma Brute Force

Kompleksitas Algoritma

Algoritma Divide and Conquer (Bagian 2)

Algoritma Divide and Conquer. (Bagian 2)

Kompleksitas Algoritma

Perbandingan Kecepatan/Waktu Komputasi Beberapa Algoritma Pengurutan (Sorting)

AnalisisFramework. Mengukur ukuran atau jumlah input Mengukur waktu eksekusi Tingkat pertumbuhan Efiesiensi worst-case, best-case dan average-case

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

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

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

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

Kompleksitas Algoritma (1)

Perbandingan Algoritma Brute Force dan Backtracking dalam Permainan Word Search Puzzle

Kompleksitas Algoritma

Yaitu proses pengaturan sekumpulan objek menurut urutan atau susunan tertentu Acuan pengurutan dibedakan menjadi :

Kompleksitas Algoritma

Penerapan Algoritma Brute Force dalam mencari Faktor Prima pada suatu Bilangan

Kuliah ke : 4 Algoritma & Stuktur Data. Pengurutan (Sorting)

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

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

Decrease and Conquer

MODUL IV PENCARIAN DAN PENGURUTAN

Pengurutan (Sorting) Algoritma Pemrograman

PENGURUTAN (SORTING) 1. Introduction 2. Bubble Sort 3. Selection Sort 4. Insertion Sort

Algoritma Brute Force (lanjutan)

PENGGUNAAN BRUTE FORCE UNTUK MERETAS PASSWORD FILE RAR

Algoritma Divide and Conquer (Bagian 1)

Algoritma Brute Force(lanjutan) Lecture 6 CS3024

PERBANDINGAN KOMPLEKSITAS ALGORITMA PENCARIAN BINER DAN ALGORITMA PENCARIAN BERUNTUN

Penerapan Algoritma Greedy dalam Pencarian Rantai Penjumlahan Terpendek

ANTIMAGIC PUZZLE. Alwi Afiansyah Ramdan

Pengurutan (Sorting) Keuntungan Data Terurut. Pengurutan Terbagi Dua Kelompok:

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

Algoritma dan Struktur Data

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

Algoritma Runut-balik (Backtracking)

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

Strategi Algoritma Penyelesaian Puzzle Hanjie

Algoritma Runut-balik (Backtracking) Bagian 1

LOOPING. Brigida Arie Minartiningtyas, M.Kom

Kompleksitas Algoritma

Algoritma Brute Force pada Fluid Particle Engine

MODUL PRAKTIKUM PERCABANGAN DAN PENGULANGAN

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

Searching [pencarian] Algoritma Pemrograman

Algoritma Pemrograman

Pencarian pada Array. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang

Algoritma dan Kompleksitas Algoritma

ALGORITMA PENGURUTAN & PENCARIAN

Algoritma Pemrograman

BAB VI SEARCHING (PENCARIAN)

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.

BAB II LANDASAN TEORI

*** SELAMAT MENGERJAKAN

Design and Analysis Algorithm

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

Algoritma Pencarian String dalam Pemilihan Anggota Sebuah Organisasi

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

SEQUENTIAL SEARCH 11/11/2010. Sequential Search (Tanpa Variabel Logika) untuk kondisi data tidak terurut

Algoritma Brute Force (lanjutan)

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

Algoritma Pemrograman

STRUKTUR DASAR ALGORITMA

PERBANDINGAN ALGORITMA GREEDY DAN BRUTE FORCE DALAM SIMULASI PENCARIAN KOIN

Penerapan Algoritma Brute Force pada Teka-teki Magic Square 3 x 3

Sieve of Eratosthenes, Algoritma Bilangan Prima

Penerapan Algoritma Brute Force pada permainan Countdown Number

Penerapan Algoritma Runut-Balik (Backtracking) pada Permainan Nurikabe

Penerapan Algoritma Backtracking pada Pewarnaan Graf

Algoritma Pemrograman

Design and Analysis of Algorithm

Algoritma Pemrograman

Pencarian. 1. Memahami konsep pencarian 2. Mengenal beberapa algoritma pencarian 3. Menerapkan algoritma pencarian dalam program

Algoritma Exhaustive Search Dalam Permainan Congklak

Bubble Sort (Pengurutan Gelembung / Pemberatan)

FUNGSI MINGGU KE: 4 TUJUAN: Mahasiswa dapat memahami definisi fungsi. Mahasiswa dapat mendefinisikan fungsi. Mahasiswa dapat menggunakan fungsi.

ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

Penerapan Algoritma Brute Force di Permainan Nonogram

Teknik Pengurutan Kartu Remi

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

CCH1A4 / Dasar Algoritma & Pemrogramanan

Penggunaaan Algoritma Greedy Dalam Aplikasi Vending Machine

Penerapan Algoritma Backtracking untuk Menyelesaikan Permainan Hashiwokakero

IMPLEMENTASI ALGORITMA GREEDY PADA PERMAINAN OTHELLO

Analisis Algoritma Knuth Morris Pratt dan Algoritma Boyer Moore dalam Proses Pencarian String

CCH1A4 / Dasar Algoritma & Pemrogramanan

KOMPLEKSITAS ALGORITMA PENGURUTAN (SORTING ALGORITHM)

MAKALAH ALGORITMA DIVIDE AND CONQUER

SOLUSI ALGORITMA BACKTRACKING DALAM PERMAINAN KSATRIA MENYEBRANG KASTIL

Array. Teknik Informatika Politeknik Negeri Batam

Implementasi Algoritma Greedy dalam Pembagian kerja pada Mesin yang Identik

PENGGUNAAN ALGORITMA BRUTE FORCE DALAM PERMAINAN PERMAINAN THE LEGEND OF DRUNKEN MAN

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

Penerapan Algoritma Runut-balik pada Permainan Math Maze

MENENTUKAN PRIMALITAS SEMUA BILANGAN YANG TERDAPAT PADA SELANG TERTENTU SECARA BRUTE FORCE

Transkripsi:

AlgoritmaBrute Force Desain dan Analisis Algoritma (CS3024)

Definisi Brute Force Brute forceadalah sebuah pendekatan yang lempang (straightforward) untuk memecahkan suatu masalah, biasanya didasarkan pada pernyataan masalah (problem statement) dan definisi konsep yang dilibatkan. Algoritma brute forcememecahkan masalah dengan sangat sederhana, langsung dan dengan cara yang jelas (obvious way). 2

Contoh-contoh Brute Force 1. Menghitung a n (a> 0, nadalah bilangan bulat tak-negatif) a n = ax ax x a (nkali), jika n> 0 = 1, jika n= 0 Algoritma: kalikan 1 dengan a sebanyak n kali 3

2. Menghitung n! (n bilangan bulat tak-negatif) n! = 1 2 3 n, jika n> 0 = 1, jika n= 0 Algoritma: kalikan nbuah bilangan, yaitu 1, 2, 3,, n 4

3. Mengalikan dua buah matrik n n. Misalkan C= A Bdan elemen-elemen matrik dinyatakan sebagai c ij, a ij, dan b ij c = a b + a b + + a b = ij L i1 1 j i 2 2 j in nj n k= 1 a ik b kj Algoritma: hitung setiap elemen hasil perkalian satu per satu, dengan cara mengalikan dua vektor yang panjangnya n. 5

procedure PerkalianMatriks(input A, B : Matriks, input n : integer, output C : Matriks) { Mengalikan matriks A dan B yang berukuran n n, menghasilkan matriks C yang juga berukuran n n Masukan: matriks integer A dan B, ukuran matriks n Keluaran: matriks C } Deklarasi i, j, k : integer Algoritma for i 1 to n do for j 1 to n do C[i,j] 0 { inisialisasi penjumlah } for k 1 to n do C[i,j] C[i,j] + A[i,k]*B[k,j] endfor endfor endfor 6

4. Menemukan semua faktor dari bilangan bulat nselain dari 1 dan nitu sendiri. Definisi: Bilangan bulat a adalah faktor dari bilangan bulat b jika ahabis membagi b. procedure CariFaktor(input n : integer) { Mencari faktor dari bilangan bulat n selain 1 dan n itu sendiri. Masukan: n Keluaran: setiap bilangan yang menjadi faktor n dicetak. } Deklarasi k : integer Algoritma: k 1 ketemu false for k 2 to n - 1 do if n mod k = 0 then write(k) endif endfor 7

5. Mencari elemen terbesar (atau terkecil) Persoalan: Diberikan sebuah himpunan yang beranggotakan n buah bilangan bulat. Bilanganbilangan bulat tersebut dinyatakan sebagai a 1, a 2,, a n. Carilah elemen terbesar di dalam himpunan tersebut. 8

procedure CariElemenTerbesar(input a 1, a 2,..., a n : integer, output maks : integer) { Mencari elemen terbesar di antara elemen a 1, a 2,..., a n. Elemen terbesar akan disimpan di dalam maks. Masukan: a 1, a 2,..., a n Keluaran: maks } Deklarasi k : integer Algoritma: maks a 1 for k 2 to n do if a k > maks then maks a k endif endfor Kompleksitas algoritma ini adalah O(n). 9

6. Sequential Search Persoalan: Diberikan nbuah bilangan bulat yang dinyatakan sebagai a 1, a 2,, a n. Carilah apakah x terdapat di dalam himpunan bilangan bulat tersebut. Jika xditemukan, maka lokasi (indeks) elemen yang bernilai xdisimpan di dalam peubah idx. Jika xtidak terdapat di dalam himpunan tersebut, maka idxdiisi dengan nilai 0. 10

procedure PencarianBeruntun(input a 1, a 2,..., a n : integer, x : integer, output idx : integer) { Mencari x di dalam elemen a 1, a 2,..., a n. Lokasi (indeks elemen) tempat x ditemukan diisi ke dalam idx. Jika x tidak ditemukan, maka idx diisi dengan 0. Masukan: a 1, a 2,..., a n Keluaran: idx } Deklarasi k : integer Algoritma: k 1 while (k < n) and (a k x) do k k + 1 endwhile { k = n or a k = x } if a k = x then { x ditemukan } idx k else idx 0 { x tidak ditemukan } endif 11

7. Bubble Sort Apa metode yang paling lempang dalam memecahkan masalah pengurutan? Algoritma bubble sortmengimplementasikan teknik brute forcedengan jelas sekali. 12

procedure BubbleSort (input/output L : TabelInt, input n : integer) { Mengurutkan tabel L[1..N] sehingga terurut menaik dengan metode pengurutan bubble sort. Masukan : Tabel L yang sudah terdefenisi nilai-nilainya. Keluaran: Tabel L yang terurut menaik sedemikian sehingga L[1] L[2] L[N]. } Deklarasi i : integer { pencacah untuk jumlah langkah } k : integer { pencacah,untuk pengapungan pada setiap langkah } temp : integer { peubah bantu untuk pertukaran } Algoritma: for i 1 to n - 1 do for k n downto i + 1 do if L[k] < L[k-1] then {pertukarkan L[k] dengan L[k-1]} temp L[k] L[k] L[k-1] L[k-1] temp endif endfor endfor Kompleksitas algoritma ini adalah O(n 2 ). Adakah algoritma pengurutan elemen elemen yang lebih mangkus daripada brute force? 13

8. Uji keprimaan Persoalan: Diberikan sebuah bilangan bilangan bulat positif. Ujilah apakah bilangan tersebut merupakan bilangan prima atau bukan. 14

function Prima(input x : integer) boolean { Menguji apakah x bilangan prima atau bukan. Masukan: x Keluaran: true jika x prima, atau false jika x tidak prima. } Deklarasi k, y : integer test : boolean Algoritma: if x < 2 then { 1 bukan prima } return false else if x = 2 then { 2 adalah prima, kasus khusus } return true else y x test true while (test) and (y 2) do if x mod y = 0 then test false else y y - 1 endif endwhile { not test or y < 2 } return test endif endif 15

9. Menghitung nilai polinomsecarabrute force Persoalan: Hitung nilai polinom p(x) = a x n + a x n-1 n n-1 + + a 1 x + a 0 pada titik x= x 0. 16

function polinom(input x0 : real) real { Menghitung nilai p(x) pada x = x0. Koefisien-koefisein polinom sudah disimpan di dalam tabel a. Derajat polinom (n) juga sudah terdefinisi. Masukan: x0 Keluaran: nilai polinom pada x = x0. } Deklarasi i, j : integer p, pangkat : real Algoritma: p 0 for i n downto 0 do pangkat 1 for j 1 to i do {hitung x i } pangkat pangkat * x0 endfor p p + a i * pangkat endfor return p Kompleksitas algoritma ini adalah O(n 2 ). 17

Perbaikan (improve): function polinom2(input x0 : real) real { Menghitung nilai p(x) pada x = x0. Koefisien-koefisein polinom sudah disimpan di dalam tabel a. Derajat polinom (n) juga sudah terdefinisi. Masukan: x0 Keluaran: nilai polinom pada x = x0. } Deklarasi i, j : integer p, pangkat : real Algoritma: p a 0 pangkat 1 for i 1 to n do pangkat pangkat * x0 p p + a i * pangkat endfor return p Kompleksitas algoritma ini adalah O(n). 18

Karakteristik Algoritma Brute Force 1. Algoritma brute forceumumnya tidak cerdas dan tidak mangkus, karena ia membutuhkan jumlah langkah yang besar dalam penyelesaiannya. Kadang-kadang algoritma brute forcedisebut juga algoritma naif (naïve algorithm). 2. Algoritma brute force seringkali merupakan pilihan yang kurang disukai karena ketidakmangkusannya itu, tetapi dengan mencari pola-pola yang mendasar, keteraturan, atau trik-trik khusus, biasanya akan membantu kita menemukan algoritma yang lebih cerdas dan lebih mangkus. 19

3. Untuk masalah yang ukurannya kecil, kesederhanaan brute forcebiasanya lebih diperhitungkan daripada ketidakmangkusannya. Algoritma brute forcesering digunakan sebagai basis bila membandingkan beberapa alternatif algoritma yang mangkus. 20

Referensi Diktat Kuliah Strategi Algoritma ITB, Rinaldi Munir 21

Berikutnya.. Brute Force 22