Perbandingan algoritma brute force , divide and conquer

Post on 28-Nov-2014

4.660 views 25 download

description

comparing brute force algorithms, divide and conquer algorithm, and decrease and conquer algorithms.advantage and weakness each algorithm indonesian version.

Transcript of Perbandingan algoritma brute force , divide and conquer

Perbandingan algoritma brute force , divide and conquer dan decrease and conquer

Ervin yohannes (0910680055)

Brute force

Penjelasan

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

Contoh

• Contoh algoritma yang menggunakan brute force antara lain : buble sort, convex hull, closest pair, travelling salesman problem, knapsack, string matching, dan selection sort.

• Contoh-contoh masalah yang dipecahkan secara brute force:

• Menghitung an (a > 0, n adalah bilangan bulat tak-negatif)•  • an = a × a × … × a (sebanyak n kali) , jika n > 0• = 1 , jika n = 0•  • Algoritma: kalikan 1 dengan a sebanyak n kali

Pseudocode • function pangkat(input a, n : integer)integer• { Menghitung an, a > 0 dan n bilangan bulat tak-negatif• Masukan: a, n• Keluaran: nilai perpangkatan.• }• Deklarasi• k, hasil : integer•  • Algoritma:• hasil1• for k1 to n do• hasilhasil * a• endfor• return hasil•  

Cara kerja

• Secara konseptual, brute force bekerja sebagai berikut:• Mula-mula pattern dicocokkan pada awal teks.• Dengan bergerak dari kiri ke kanan, bandingkan setiap

karakter di dalam pattern dengan karakter yang bersesuaian di dalam teks sampai:

• semua karakter yang dibandingkan cocok atau sama (pencarian berhasil), atau

• dijumpai sebuah ketidakcocokan karakter (pencarian belum berhasil)

• Bila pattern belum ditemukan kecocokannya dan teks belum habis, geser pattern satu karakter ke kanan dan ulangi langkah 2.

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

Kompleksitas dan running time

• Kompleksitas algoritma ini adalah O(n).• Running time brute force adalah : n-1

multiplications

Divide and Conquer

Penjelasan

• Strategi Divide dan Conquer memecah masalah menjadi submasalah-submasalah independen yang lebih kecil sehingga solusi submasalah-submasalah dapat diperoleh secara mudah, solusi submasalah-submasalah digabung menjadi solusi seluruh masalah. Contoh algoritma yang menggunakan divide and conquer antara lain : merge sort, quick sort, binary tree transversals, multiplication of large integers, dan matrix multiplication : strassen’s algorithm.

Skema umum algoritma divide and conquer

• Procedure DNC ( i,j : integer )• Var K : integer ;• If SMALL (i,j) then SOLVE (i,j)• Else begin• K : = DIVIDE (i,j)

Cara kerja

• SMALL adalah fungsi yang mengirim BOOLEAN, menentukan apakah ukuran telah cukup kecil sehingga solusi dapat diperoleh. Ukuran dinyatakan sebagai telah berukuran kecil bergantung masalah.

• DIVIDE adalah fungsi membagi menjadi 2 bagian pada posisi K. Biasanya bagian berukuran sama.

• COMBINE adalah fungsi menggabungkan solusi X dan Y submasalah. Solusi diperoleh dengan memanggil prosedur rekursif DNC.

Teknik divide and conquer

Keunggulan dan kelemahan

• keunggulan:• -Umumnya meningkatkan pada Brute Force dengan satu

basis efisiensi kelas• -Mudah untuk menganalisis menggunakan Recurrence

Templates• -Idealnya cocok untuk perhitungan paralel

• kelemahan:• -Sering membutuhkan rekursi, yang menyebabkan

overhead• -Dapat diterapkan dan inferior untuk solusi algoritmik yang

lebih sederhana

Kompleksitas dan running time

• kompleksitas algoritma O(n ²log n).• Running time algoritma divide and

conquer

T(n) = 2*T(n/2) + 1

= n-1

Decrease and conquer

Penjelasan

• metode desain algoritma dengan mereduksi persoalan menjadi beberapa sub-persoalan yang lebih kecil, tetapi selanjutnya hanya memproses satu sub-persoalan saja. Berbeda dengan divide and conquer yang memproses semua sub-persoalan dan menggabung semua solusi setiap sub-persoalan.

Jenis – jenis decrease and conquer

• Decrease by a constant

Ukuran dari sebuah instansi dikurangi oleh ketetapan yang sama (biasanya satu) pada masing-masing algoritma.

• Decrease by a constant factor

Ukuran dari sebuah masalah instansi dikurangi oleh factor ketetapan yang sama (biasanya 2) pada masing-masing iterasi dari algoritma.

• Variable size decrease

Sebuah ukuran pola pengurangan yang berbeda dari satu iterasi ke iterasi lainnya.

Cara kerja

• Decrease: mereduksi persoalan menjadi beberapa persoalan yang lebih kecil (biasanya dua sub-persoalan).

• Conquer: memproses satu sub-persoalan secara rekursif. Tidak ada tahap combine dalam decrease and conquer.

Decrease by one and decrease by half

Kompleksitas dan running time

• Kompleksitas algoritma decrease and conquer adalah O(n2)

• Running time algoritma decrease and conquer• Decrease by one• T(n) = T(n-1) + 1 = n-1• Decrease by constant factor• T(n) = T(n/a) + a-1• = (a-1) n• = when a = 2

Kelemahan dan kelebihan

• -Dapat diimplementasikan baik top down• (rekursif) atau bawah ke atas (tanpa rekursi)• -Seringkali sangat efisien ( O (log n))• -Mengarah ke suatu bentuk kuat dari grafik traversal• (Breadth and Depth First Search)

• kelemahan:• -Kurang berlaku secara luas (terutama penurunan

oleh• faktor konstan)

Terima kasih