Algoritma Brute Force.

Slides:



Advertisements
Presentasi serupa
STRUKTUR DASAR ALGORITMA
Advertisements

Sorting (Pengurutan).
PENGURUTAN (SORTING).
Algoritma Divide and Conquer
Bahan Kuliah IF3051 Strategi Algoritma Oleh: Rinaldi Munir
Searching Alpro-2.
PENCARIAN (SEARCHING)
Chapter 9 SEARCHING ALGORITHM Program Studi Ekstensi DTE FTUI Slides © 2007.
Algoritma Runut-balik (Backtracking)
Algoritma Brute Force Oleh: Rinaldi Munir
Function(2).
Desain dan Analisis Algoritma
Design and Analysis Algorithm
Algoritma Brute Force Oleh: Rinaldi Munir
Design and Analysis Algorithm
Algoritma Divide and Conquer
ALGORITMA DAN BILANGAN BULAT
Algoritma Brute Force (lanjutan)
Algoritma Brute Force Oleh: Rinaldi Munir
Notasi Algoritma.
1 Nama Kelompok : Doddy Setiawan Moh. Abdul Latief Yosep Pangky ALGORITMA MERGE SORT.
Pertemuan-2 Kriteria kebaikan suatu algoritme Correctness
Algoritma Divide and Conquer (Bagian 1) Wahyul Wahidah Maulida, ST., M.Eng.
12-CRS-0106 REVISED 8 FEB 2013 CSG523/ Desain dan Analisis Algoritma Divide and Conquer Intelligence, Computing, Multimedia (ICM)
Algoritma Brute Force Oleh: Muhammad Musta’in ( )
TEL 2112 Dasar Komputer & Pemograman Contoh Pemecahan Masalah
TEL 2112 Dasar Komputer & Pemograman Contoh Pemecahan Masalah
Algoritma dan Pemrograman Subrutin
Algoritma dan Pemrograman – Pertemuan 3 & 4 Sorting (Pengurutan)
MATERI PERKULIAHAN ANALISIS ALGORITMA
MATERI PERKULIAHAN ANALISIS ALGORITMA
Algoritma Brute Force.
MATERI PERKULIAHAN ANALISIS ALGORITMA
Algoritma Pencarian (searching)
Algoritma Bruteforce Team Fasilkom.
KUG1A3 Algoritma& Pemrograman
CSG3F3/ Desain dan Analisis Algoritma
CSG523/ Desain dan Analisis Algoritma
Bahan Kuliah IF2211 Strategi Algoritma Oleh: Rinaldi Munir
Algoritma rekursif dan relasi rekurensi
Bubble Sort Metode pengurutan gelembung diinspirasikan oleh gelembung sabun yang berada dipermukaan air. Karena berat jenis gelembung sabun lebih ringan.
MATERI PERKULIAHAN ANALISIS ALGORITMA
Algoritma Divide and Conquer
MATERI PERKULIAHAN ANALISIS ALGORITMA
PENGURUTAN (SORTING).
Algoritma Bruteforce (disarikan dari diktat Strategi Algoritma, Rinaldi Munir) Team Fasilkom.
MATERI PERKULIAHAN ANALISIS ALGORITMA
Exhaustive Search.
Algoritma Runut-balik (Backtracking)
Array 1.
TEL 2112 Dasar Komputer & Pemograman Contoh Pemecahan Masalah
Modul 6 : Analisis Algoritma dan Struktur Data
Teknik Informatika Politeknik Negeri Batam
MATERI PERKULIAHAN ANALISIS ALGORITMA
BINARY SEARCH Tim Algoritma Pemrograman Teknik Informatika
Pertemuan ke 9.
Nama : Siti Hajar Unit : B Nim : No.Hp : 0852 – 2000 – 3786.
Desain dan Analisis Algoritma
ALGORITMA BRUTE FORCE Pertemuan 3.
Kompleksitas Algoritma
Algoritma Divide and Conquer
Algoritma Divide and Conquer
Algoritma Divide and Conquer
Algoritma Divide and Conquer
Pencarian (searching)
Algoritma Divide and Conquer
Algoritma Brute Force.
Algoritma Runut-balik (Backtracking)
Dr. Mufid Nilmada, SSi., MMSI
Desain dan Analisis Algoritma
Transcript presentasi:

Algoritma Brute Force

Deskripsi Materi ini membahas tentang algoritma brute force dengan berbagai studi kasus

Tujuan Instruksional Khusus (TIK)‏ Menjelaskan algoritma brute force dengan berbagai studi kasus Studi kasus Menghitung an,faktorial, perkalian matriks, mencari faktor, mencari elemen terbesar/terkecil, sequential search, bubble sort, polinom Menjelaskan karakteristik algoritma brute force

Definisi Brute Force Brute force adalah sebuah pendekatan yang lempang (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). Teknik algoritma Brute-force merupakan suatu teknik yang biasa digunakan bila si penyusun algoritma lebih mempertimbangkan memperoleh solusi dari problem secara langsung/apa adanya, tanpa mempertimbangkan efisiensi dengan meminimumkan jumlah operasi yang dapat dilakukan untuk mencapai solusi tersebut.

Contoh-contoh Brute Force Menghitung an (a > 0, n adalah bilangan bulat tak-negatif) an = 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 Berapakah kompleksitasnya ?

3. Mengalikan dua buah matrik yang berukuran n × n. Misalkan C = A × B dan elemen-elemen matrik dinyatakan sebagai cij, aij, dan bij Algoritma: hitung setiap elemen hasil perkalian satu per satu, dengan cara mengalikan dua vektor yang panjangnya n.

Algoritma Perkalian Matriks procedure PerkalianMatriks(input A, B : Matriks, input n : integer, output C : Matriks) 1 for i1 to n do 2 for j1 to n do 3 C[i,j]0 { inisialisasi penjumlah } 4 for k  1 to n do 5 C[i,j]C[i,j] + A[i,k]*B[k,j] 6 endfor 7 8 Berapakah kompleksitas dari algoritma ini ? Adakah yang lebih baik?

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.

Algoritma Pencarian Faktor procedure CariFaktor(input n : integer) 1 k1 2 ketemu  false 4 for k2 to n - 1 do 5 if n mod k = 0 then 6 write(k) 7 endif 8 endfor Berapakah kompleksitasnya ?

Mencari elemen terbesar (atau terkecil) Persoalan: Diberikan sebuah himpunan yang beranggotakan n buah bilangan bulat. Bilangan-bilangan bulat tersebut dinyatakan sebagai a1, a2, …, an. Carilah elemen terbesar di dalam himpunan tersebut.

Algoritma Cari Elemen Terbesar procedure CariElemenTerbesar (input a1, a2, ..., an : integer, output maks : integer) 1 maksa1 2 for k2 to n do 3 if ak > maks then 4 maksak 5 endif 6 endfor Berapakah kompleksitas algoritmanya ?

Sequential Search Persoalan: Diberikan n buah bilangan bulat yang dinyatakan sebagai a1, a2, …, an. 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.

Algoritma Pencarian Beruntun procedure PencarianBeruntun (input a1, a2, ..., an : integer, x : integer, output idx : integer) 1 k1 2 while (k < n) and (ak  x) do 3 k  k + 1 4 endwhile 5 { k = n or ak = x } 6 if ak = x then { x ditemukan } 7 idxk 8 else 9 idx 0 { x tidak ditemukan } 10 endif Berapakah kompleksitas algoritmanya ?

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.

Algoritma Bubble Sort procedure BubbleSort (input/output L : TabelInt, input n : integer) 1 for i  1 to n - 1 do 2 for k  n downto i + 1 do 3 if L[k] < L[k-1] then 4 {pertukarkan L[k] dengan L[k-1]} 5 temp  L[k] 6 L[k]  L[k-1] 7 L[k-1]  temp 8 endif 9 endfor 10 Kompleksitas algoritma ini adalah O(n2). Adakah algoritma pengurutan elemen elemen yang lebih mangkus daripada brute force?

Menghitung nilai polinom secara brute force Persoalan: Hitung nilai polinom p(x) = anxn + an-1xn-1 + … + a1x + a0 pada titik x = x0.

Algoritma Polinom 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. function polinom2(input x0 : real)real 1 p0 2 for in downto 0 do 3 pangkat1 4 for j1 to i do {hitung xi } 5 pangkatpangkat * x0 6 endfor 7 pp + ai * pangkat 8 9 return p Berapakah kompleksitasnya? Adakah algoritma pengurutan elemen elemen yang lebih mangkus daripada brute force?

Algoritma Polinom2 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. function polinom2(input x0 : real)real 1 pa0 2 pangkat1 3 for i1 to n do 4 pangkatpangkat * x0 5 pp + ai * pangkat 6 endfor 7 return p Berapakah kompleksitasnya ?

Karakteristik Algoritma Brute Force 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). Kata “force” mengindikasikan “tenaga” ketimbang “otak” 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.

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. 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). Meskipun bukan metode yang mangkus, hampir semua masalah dapat diselesaikan dengan algoritma brute force. Sukar menunjukkan masalah yang tidak dapat diselesaikan dengan metode brute force. Bahkan, ada masalah yang hanya dapat diselesaikan dengan metode brute force. Contoh: mencari elemen terbesar di dalam senarai. Contoh lainnya?

Kekuatan Metode Brute Force Metode brute force dapat digunakan untuk memecahkan hampir sebagian besar masalah (wide applicability). Metode brute force sederhana dan mudah dimengerti. Metode brute force menghasilkan algoritma yang layak untuk beberapa masalah penting seperti pencarian, pengurutan, pencocokan string, perkalian matriks. 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 Metode Brute Force Metode brute force jarang menghasilkan algoritma yang mangkus. Beberapa algoritma brute force lambat sehingga tidak dapat diterima. 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.

Latihan Buatlah suatu algoritma brute force untuk pencocokan string. Persoalan: Diberikan a. teks (text), yaitu (long) string yang panjangnya n karakter b. pattern, yaitu string dengan panjang m karakter (m < n) yang akan dicari di dalam teks. Carilah lokasi pertama di dalam teks yang bersesuaian dengan pattern. Jika pattern/sub-string ditemukan maka return valuenya berupa posisi substring tersebut. Jika sub-string tidak ditemukan maka return valuenya bernilai -1