• Tidak ada hasil yang ditemukan

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
9
0
0

Teks penuh

(1)

Design and Analysis of Algorithms CNH2G3- Week 6

Brute Force Algorithm Part 1: Design Strategy

Dr. Putu Harry Gunawan (PHN)

Daftar Isi

1 Introduction and Definitions . . . 2

2 Contoh-contoh algoritma brute force . . . 3

3 Karakteristik algoritma brute force . . . 7

4 Advantages and Disadvantages of brute force Algorithm . . . 8

5 Homework. . . 9

Review

Tentukanlah kompleksitas waktu asimtotik untuk permasalahan di bawah ini 1. Exercise: diberikan relasi rekursi dari masalah Barisan Fibonacci berikut

T(n) =      0, n= 0 1, n= 1 T(n−1) +T(n−2), n≥2 (0.1)

2. Exercise: diberikan relasi rekursi berikut

T(n) =            0, n= 0 1, n= 1 2, n= 2 7T(n−1)−15T(n−2) + 9T(n−3), n≥3 (0.2)

3. Exercise: diberikan relasi rekursi berikut (QUIZ II semester lalu)

T(n) =      0, n= 0 1 10, n= 1 49T n7− 1 100n, n≥2 (0.3) 1

(2)

Theorem 0.1 (Master) Untuk suatu general Divide and Conquer recurrence: T(n) =aT n b +f(n) (0.4)

Jikaf(n)∈ O(nd) dengan d≥0, dalam persamaan general Divide and Conquer recurrence di atas, maka

T(n)∈      O(nd) a < bd O(ndlogn) a=bd O(nbloga) a > bd (0.5) Exercise

Gunakan Teorema Master untuk mencari kompleksitas waktu asimtotik pada relasi rekursi untuk masalah Minimum dan Maksimum di bawah ini:

T(n) =      0, n= 1 1, n= 2 2T n2+ 2, n >2 (0.6)

1

Introduction and Definitions

Setelah pemaparan analisi algoritma, maka akan dilanjutkan dengan strategi mendesa-in sutau algoritma. Bab mendesa-ini ditujukan untuk berbagai macam strategi yang ada pada algoritma tipeBrute Force. Berikut adalah definisi dariBrute Force:

Definition 1.1 (Levitin) Brute forceis a straightforward approach to solving a problem, usually directly based on the problem statement and definitions of the concepts involved.

Definition 1.2 (Levitin) Brute forceadalah pendekatan yang langsung/lem-peng untuk menyelesaikan suatu masalah, biasanya secara langusng sesuai de-ngan pernyataan masalah dan definisi dari konsep yang ada.

Kata ”force” mempengaruhi definisi strategi yaitu suatu mesin/robot/komputer buk-an sesutu ybuk-ang berbau pintar( intelligent). ” Just do it!” dapat merupakan cara lain untuk mendeskripsikan pengertian dari brute force. dan tentu saja strategi brute-force

merupakan strategi yang paling mudah diaplikasikan.

Sebagai contoh, misalkan masalah eksponensial: Hitung an untuk a ∈ R− {0} dan

n∈ Z+. Meskipun masalah ini terlihat trivial, akana tetapi masalah ini dapat digunakan

sebagai ilustrasi dari mendesain strategi suatu algoritma, dalam hal ini bisa dalambrute force. Secara definisi

an=a×a× · · · ×a

| {z }

nkali

(3)

Dari definisi diatas, maka agoritma brute force akan mengalikan a sebanyak n kali. Dan, tentu saja dengan cara ini akan mendapatkanO(n). Jika tidak menggunakanbrute force, maka waktu asimtotiknya dapat diperkecil seperti pada contoh -contoh berikut berikut:

Example 1.3 Bilangan n dapat direpresentasikan menjadi bilangan 2 pangkat

n= 2k1+ 2k2 +· · ·+ 2km

sehingga

an=a2k1 +a2k2 +· · ·+a2km

dengan kompleksitas waktu yang digunakan adalah O(logn). Sebagai contoh hi-tung a25, maka

(25)10= (11001)2

yang dapat direpresentasikan menjadi bilangan biner sehingga:

a25=a4+a3+ 0 + 0 +a0.

Example 1.4 Contoh lain dengan kompleksitas waktu O(logn) adalah

f(x) =an= ( (an/2)(an/2) (n mod 2 = 0), a(an−12 )(a n−1 2 ) otherwise,

Example 1.5 Contoh lain bentuk rekursif dengan kompleksitas waktu O(logn)

adalah

f(x) =an=

(

a(a2)n−12 if n ganjil,

(a2)n2 if n genap,

Dari contoh di atas dapat kita simpulkan bahwa, brute force, memecahkan masalah dengan sangat sederhana, langsung, dan dengan cara yang jelas (obvious way).

2

Contoh-contoh algoritma

brute force

Selain contoh menghitung pangkat eksponensial pada subbab sebelumnya, maka pada bab ini kana diberikan beberapa contoh lain dari pengguanaanbrute force:

1. Menghitungn! untukn∈ Z++{0}. Algoritma untuk menghitung faktorial adalah

n! =

(

1, n= 0

(4)

2. Menghitung perkalian dua buah matrix yang berukurann×n.

• Misalkan C =AB dan elemen-elemen matrik dinyatakan sebagai cij, aij, dan

bij cij =ai1b1j+ai2b2j+· · ·+ainbnj = n X k=1 aikbkj

• Algoritma: hitung setiap elemen hasil perkalian satu persatu, dengan cara mengalikan dua vektor yang panjangnya n.

3. Menemukan semua faktor dari bilangan bulatn selain 1 dannitu sendiri.

int t a g ; int∗ f a c t o r s (int n ) { int a [ 1 0 0 0 0 0 0 ] ; for(int i =1; i<=n / 2 ; i ++) if( n%i ==0) a[++ t a g ]= i ; a[++ t a g ]=n ; return( a ) ; }

4. Mencari elemen terbesar atau terkecil. struct p a i r getMinMax (int a r r [ ] , int n ) {

struct p a i r minmax ;

int i ;

/* If there is only one element then return it as min and max both */

if ( n == 1 ) { minmax . max = a r r [ 0 ] ; minmax . min = a r r [ 0 ] ; return minmax ; }

/* If there are more than one elements , then i nit ial ize min and max */ if ( a r r [ 0 ] > a r r [ 1 ] ) { minmax . max = a r r [ 0 ] ; minmax . min = a r r [ 1 ] ; } else { minmax . max = a r r [ 1 ] ; minmax . min = a r r [ 0 ] ; } for ( i = 2 ; i<n ; i ++) { if ( a r r [ i ] > minmax . max ) minmax . max = a r r [ i ] ;

else if ( a r r [ i ] < minmax . min ) minmax . min = a r r [ i ] ;

(5)

}

return minmax ; }

5. Sequential Search:

Diberikan nbuah bilangan bulat yang dinyatakan sebagai{a1, a2,· · ·, an}. Carilah

apakah x terdapat di dalam himpunan bilangan bulat tersebut. Jika x ditemukan, maka lokasi index elemen yang bernilai x disimpan di dalam peubah idx. Jika x

tidak terdapat di dalam himpunan tersebut, maka idxdiisi dengan nilai 0.

Sequential/Linear Search ( Array A, Value x) Step 1: Set i to 1

Step 2: if i > n then go to step 7 Step 3: if A[i] = x then go to step 6 Step 4: Set i to i + 1

Step 5: Go to Step 2

Step 6: Print Element x Found at index i and go to step 8 Step 7: Print element not found

Step 8: Exit

6. Bubble Sort:

• Apa metode yang paling lempeng dalam memecahkan masalah pengurutan? Jawabannya adalah algoritma bubble sort.

• Algoritma bubble sort mengimplementasikan teknik brute force dengan jelas sekali b e g i n B u b b l e S o r t ( l i s t ) for a l l e l e m e n t s o f l i s t if l i s t [ i ] > l i s t [ i +1] swap ( l i s t [ i ] , l i s t [ i + 1 ] ) end if end for return l i s t end B u b b l e S o r t

Bubble sort sendiri merupakan algoritma pengurutan data yang paling sederhana. Algoritma ini membandingkan elemen bertetanggan dan menukarkannya jika tidak dalam urutan yang benar. Algoritma ini tidak cocok digunakan untuk data set yang besar karena memiliki waktu terburuk (worst case complexity) O(n2).

7. Uji keprimaan:

Persoalan: Diberikan sebuah bilangan bulat positif. Ujilah apakah bilangan terse-but merupakan bilangan prima atau bukan.

(6)

function is_prime(n) if n 1

return false else if n 3

return true

else if n mod 2 = 0 or n mod 3 = 0 return false let i 5 while i * i n if n mod i = 0 or n mod (i + 2) = 0 return false i i + 6 return true

8. Menghitung nilai polinom secarabrute force

Persolana: Hitung nilai polinom:

p(x) =anxn+an−1xn−1+· · ·+a1x+a0

pada titik x=x0.

9. Pencocokan string:

Persoalan : Diberikan teks ( text ), yaitu ( long ) string yang panjangnyankarakter. (a) pattern, yaitu string dengan panjangm karakter (m < n) yang akan dicari di

dalam teks.

(b) Kemudian, carilah lokasi pertama di dalam teks yang bersesuaian dengan pat-tern.

Example 2.1 (String) Example Pattern : NOT

Teks : NOBODY NOTICED HIM

(a) NOBODY NOTICED HIM

(b) NOT (c) NOT (d) NOT (e) NOT (f ) NOT (g) NOT (h) NOT (i) NOT

(7)

10. Mencari pasangan titik terdekat: Diberikan sembarang titik dalam 2D atau 3D, lalu carilah dua pasang titik yang memiliki jarak terkecil. Contoh dalam 2D lihat pada gambar berikut:

Gambar 1: Contoh sebaran 6 titik pada domain kartesian.

• Jarak dua buah titik di bidang 2-D dengan P1 = (x1, y1) dan P2 = (x2, y2)

dapat dicari menggunakan rumus Euclidian:

d(P1, P2) =||P1−P2||= p

(x1−x2)2+ (y1−y2)2

• Algoritma brute force:

1. Hitung jarak setiap pasang titik.

2. Pasangan titik yang memepunyai jarak terpendek itulah jawabnnya.

• Algortma brute force akan menghitung sebanyak C(n,2) = n(n−21) pasangan titik dan memeilih pasangan titik yang mempunyai jarak terkecil.

Kompleksitas waktu algoritma ini adalah O(n2).

3

Karakteristik algoritma

brute force

Berikut adalah karakteristik algoritma brute force:

1. Algoritma brute force umumnya tidak ”cerdas” dan tidak mangkus, karena mem-butuhkan jumlah langkah yang besar dalam penyelesaiannya. Kadang - kadang algoritma brute force disebut juga algoritma naif ( naive algorithm ).

2. Algoritma brute force seringkali merupakan pilihan yang kurang disukai karena ke-tidakmangkusannya itu, tetapi dengan mencari pola -pola yang mendasar, ketera-turan, 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 di-perhitungkan dari pada ketidakmangkusannya.

Algoritma brute force sering digunakan sebagai basis bila membandingkan dengan beberapa alternatif algoritma yang mangkus.

(8)

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

4

Advantages and Disadvantages of

brute force

Algorithm

Berikut akan diberikan beberapa kekuatan dan kelemahan dari menggunakan algoritma

brute force. Kekuatan:

1. Metodebrute force dapat digunakan untuk memecahkan hampir sebagian besar ma-salah ( wide applicability ).

2. Metodebrute 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/perkaliannbuah bilangan, menentukan elemen mi-nimum atau maksimum di dalam tabel ( list ).

Sedangkan Kelemhan:

1. Metodebrute force jarang menghasilkan algoritma yang mangkus. 2. Beberapa algoritmabrute force lambat sehingga tidak dapat diterima. 3. Tidak sekontruktif/sekreatif teknik pemecahan masalah lainnya.

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

References

1. Anany, L. (2003). Introduction to the design and analysis of algorithms. Villanova University.

2. https://www.quora.com/What-are-some-fast-algorithms-for-computing-the-nth-power-of-a-number

3. http://www.geeksforgeeks.org/maximum-and-minimum-in-an-array/

(9)

5

Homework

1. Diberikann titik pada daerah 2-D Euclidean, yaitu{p1, p2,· · ·pn}. Buatlah

algori-tma brute force untuk menentukan titik paling bawah dalam daerah 2-D Euclidean. 2. Consider the problem of counting, in a given text, the number of substrings that start with an A and end with a B. For example, there are four such substrings in CABAAXBYA.

(a) Design a brute-force algorithm for this problem and determine its effi- ciency class.

(b) Design a more efficient algorithm for this problem.

3. Word Find A popular diversion in the United States, word find (or word search) puzzles ask the player to find each of a given set of words in a square table filled with single letters. A word can read horizontally (left or right), vertically (up or down), or along a 45 degree diagonal (in any of the four directions) formed by consecutively adjacent cells of the table; it may wrap around the tables boundaries, but it must read in the same direction with no zigzagging. The same cell of the table may be used in different words, but, in a given word, the same cell may be used no more than once. Write a computer program for solving this puzzle. (See http://thewordsearch.com/ for more detail).

4. (a) Design a brute-force algorithm for computing the value of a polynomial

p(x) =anxn+an−1xn−1+· · ·+a1x+a0

at a given point x0 and determine its worst-case efficiency class.

(b) If the algorithm you designed is in Θ(n2), design a linear algorithm for this problem.

(c) Is it possible to design an algorithm with a better-than-linear efficiency for this problem?

5. Alternating disks You have a row of 2ndisks of two colors, ndark andnlight. They alternate: dark, light, dark, light, and so on. You want to get all the dark disks to the right-hand end, and all the light disks to the left-hand end. The only moves you are allowed to make are those that interchange the positions of two neighboring disks.

Design an algorithm for solving this puzzle and determine the number of moves it takes.

Gambar

Gambar 1: Contoh sebaran 6 titik pada domain kartesian.

Referensi

Dokumen terkait

`Setelah dilakukan penelitian tentang tingkat ketergantungan pada gadget dengan perilaku siswa SMPN 36 Bulukumba dapat disimpulkan bahwa tingkat ketergantungan pada

Qatthan yang terpenting untuk dipelajari ulama dalam pembahasan ini ialah; (1) yang diturunkan di Makah; (2) yang diturunkan di Madinah; (3) yang diperselisihkan; (4) ayat-

Barang galian adalah unsur kimia, mineral dan segala macam batuan yang merupakan endapan alam (tidak termasuk logam, batubara, minyak dan gas bumi dan bahan radioaktif). Bahan

(2) Bupati menetapkan 5 (Lima) orang dari unsur masyarakat yang diusulkan oleh tim seleksi sebagaimana dimaksud dalam pasal 11 ayat (1) menjadi calon pimpinan

Dengan demikian ditinjau dari aspek kadar air, kalium klorida dapat digunakan sebagai pengendap dalam proses produksi karaginan dari rumput laut Eucheuma

Skripsi ini merupakan hasil penelitian yang dilaksanakan penulis mengenai pengaruh tingkat hutang dan kesulitan keuangan terhadap konservatisme akuntansi pada

Penyampaian materi yang kreatif sangat diperlukan dalam proses pembelajaran, selain menggunakan buku paket, pepak dan Lembar Kerja Peserta Didik (LKPD) yang