Algoritma Brute Force

dokumen-dokumen yang mirip
AlgoritmaBrute Force. Desain dan Analisis Algoritma (CS3024)

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir

Algoritma Brute Force

Algoritma Brute Force Oleh: Rinaldi Munir

Algoritma Brute Force

Kompleksitas Algoritma

Algoritma Brute Force

Algoritma Divide and Conquer (Bagian 2)

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

Algoritma Divide and Conquer. (Bagian 2)

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.

Kompleksitas Algoritma

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

Perbandingan Kecepatan/Waktu Komputasi Beberapa Algoritma Pengurutan (Sorting)

Kompleksitas Algoritma (1)

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

Kompleksitas Algoritma

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

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

MODUL IV PENCARIAN DAN PENGURUTAN

Kompleksitas Algoritma

Perbandingan Algoritma Brute Force dan Backtracking dalam Permainan Word Search Puzzle

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

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

Algoritma Brute Force (lanjutan)

Design and Analysis Algorithm

Pengurutan (Sorting) Algoritma Pemrograman

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

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

Penerapan Algoritma Brute Force dalam mencari Faktor Prima pada suatu Bilangan

Algoritma dan Struktur Data

Strategi Algoritma Penyelesaian Puzzle Hanjie

Algoritma Runut-balik (Backtracking) Bagian 1

Algoritma Brute Force(lanjutan) Lecture 6 CS3024

Kompleksitas Algoritma

Algoritma Divide and Conquer (Bagian 1)

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

Decrease and Conquer

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

LOOPING. Brigida Arie Minartiningtyas, M.Kom

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

BAB II LANDASAN TEORI

Searching [pencarian] Algoritma Pemrograman

PENGGUNAAN BRUTE FORCE UNTUK MERETAS PASSWORD FILE RAR

PERBANDINGAN KOMPLEKSITAS ALGORITMA PENCARIAN BINER DAN ALGORITMA PENCARIAN BERUNTUN

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

ANTIMAGIC PUZZLE. Alwi Afiansyah Ramdan

Algoritma Pemrograman

BAB VI SEARCHING (PENCARIAN)

*** SELAMAT MENGERJAKAN

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

Algoritma Brute Force (lanjutan)

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

Algoritma Runut-balik (Backtracking)

Algoritma dan Kompleksitas Algoritma

ALGORITMA PENGURUTAN & PENCARIAN

STRUKTUR DASAR ALGORITMA

Penerapan Algoritma Brute Force di Permainan Nonogram

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

Algoritma Pemrograman

Design and Analysis of Algorithm

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

Struktur Pengulangan

Bubble Sort (Pengurutan Gelembung / Pemberatan)

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

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

Penerapan Algoritma Backtracking pada Pewarnaan Graf

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

PENGULANGAN. pencacah harus bertipe integer atau karakter pernyataan adalah satu atau lebih instruksi yang. Pernyataan

ANALISIS PERBANDINGAN ALGORITMA SELECTION SORT DENGAN MERGE SORT

MODUL PRAKTIKUM PERCABANGAN DAN PENGULANGAN

ALGORITMA DIVIDE AND CONQUER

STRUKTUR DASAR ALGORITMA DAN PEMROGRAMAN STMIK AMIKOM YOGYAKARTA

BAB V SORTING (PENGURUTAN) INTERNAL

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

c. Hasil pencarian berupa nilai Boolean yang menyatakan status hasil pencarian. Versi 1 (Pembandingan elemen dilakukan sebagai kondisi pengulangan)

Algoritma Pemrograman

MAKALAH ALGORITMA DIVIDE AND CONQUER

Algoritma Pemrograman

Penerapan Algoritma Greedy dalam Pencarian Rantai Penjumlahan Terpendek

Soal dan Jawaban Materi Graf, Pohon, dan Kompleksitas Algoritma

ALGORITMA DAN PEMROGRAMAN 2. 3 SKS By : Sri Rezeki Candra Nursari

Sieve of Eratosthenes, Algoritma Bilangan Prima

Algoritma Brute Force pada Fluid Particle Engine

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

Array. Teknik Informatika Politeknik Negeri Batam

Algoritma Pencarian String dalam Pemilihan Anggota Sebuah Organisasi

Algoritma dan Pemrograman Searching/Pencarian

Algoritma dan Pemrograman 2 PENGURUTAN

CCH1A4 / Dasar Algoritma & Pemrogramanan

Algoritma Shell Sort Ascending Dan Binary Sequential Search Menggunakan C

CCH1A4 / Dasar Algoritma & Pemrogramanan

STRUKTUR DASAR ALGORITMA

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

Algoritma dan Pemrograman 2 PENCARIAN

Algoritma & Pemrograman

Penerapan Algoritma Runut-balik pada Permainan Math Maze

SEARCHING. Pusat Pengembangan Pendidikan Universitas Gadjah Mada 1

Design and Analysis of Algorithms CNH2G3- Week 6 Brute Force Algorithm Part 1: Design Strategy

Transkripsi:

Algoritma Brute Force

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

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

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

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

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 Adakah algoritma perkalian matriks yang lebih mangkus daripada brute force?

4. Menemukan semua faktor dari bilangan bulat n selain dari 1 dan n itu sendiri. Definisi: Bilangan bulat a adalah faktor dari bilangan bulat b jika a habis 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 Adakah algoritma pemfaktoran yang lebih baik daripada brute force?

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

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).

6. Sequential Search Persoalan: Diberikan n buah bilangan bulat yang dinyatakan sebagai a 1, a 2,, a n. Carilah apakah x terdapat di dalam himpunan bilangan bulat tersebut. Jika x ditemukan, maka lokasi (indeks) elemen yang bernilai x disimpan di dalam peubah idx. Jika x tidak terdapat di dalam himpunan tersebut, maka idx diisi dengan nilai 0.

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 Kompleksitas algoritma ini adalah O(n). Adakah algoritma pencarian elemen yang lebih mangkus daripada brute force?

7. Bubble Sort Apa metode yang paling lempang dalam memecahkan masalah pengurutan? Jawabnya adalah algoritma pengurutan bubble sort. Algoritma bubble sort mengimplementasikan teknik brute force dengan jelas sekali.

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?

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

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 Adakah algoritma pengujian bilangan prima yang lebih mangkus daripada brute force?

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

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 ).

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). Adakah algoritma perhitungan nilai polinom yang lebih mangkus daripada brute force?

Karakteristik Algoritma Brute Force 1. Algoritma brute force umumnya tidak cerdas dan tidak mangkus, karena ia membutuhkan jumlah langkah yang besar dalam penyelesaiannya. Kadang- kadang algoritma brute force disebut 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.

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

4. Algoritma brute force seringkali lebih mudah diimplementasikan daripada algoritma yang lebih canggih, dan karena kesederhanaannya, kadang-kadang algoritma brute force dapat lebih mangkus (ditinjau dari segi implementasi).