620 likes | 1.06k Views
Design and Analysis of Algorithm Brute Force and Exhaustive Search Algorithm. Aryo Pinandito, ST, M.MT - PTIIK UB. Brute Force Algorithm. Definisi Brute Force.
E N D
Design and Analysis of AlgorithmBrute Force and Exhaustive Search Algorithm Aryo Pinandito, ST, M.MT - PTIIK UB
Definisi Brute Force • Brute force adalahsebuahpendekatan yang lempang (straightforward) untukmemecahkansuatumasalah, biasanyadidasarkanpadapernyataanmasalah (problem statement) dandefinisikonsep yang dilibatkan. • Algoritmabrute force memecahkanmasalahdengansangatsederhana, langsungdandengancara yang jelas (obvious way).
Contoh-contoh Brute Force • Menghitung an (a > 0, n adalahbilanganbulattak-negatif) an = a × a × … × a (n kali) , jika n > 0 = 1 , jika n = 0 • Algoritma: kalikan 1 dengan a sebanyak n kali
Contoh-contoh Brute Force (2) • Menghitung n! (n bilanganbulattak-negatif) n! = 1 × 2 × 3 × … × n , jika n > 0 = 1 , jika n = 0 • Algoritma: kalikan n buahbilangan, yaitu 1, 2, 3, …, n, bersama-sama
3. Mengalikanduabuahmatrik yang berukurann×n. Misalkan C = A × B danelemen-elemenmatrikdinyatakansebagaicij, aij, danbij Algoritma: hitungsetiapelemenhasilperkaliansatu per satu, dengancaramengalikanduavektor yang panjangnya n. Contoh-contoh Brute Force (3)
PerkalianMatriks Adakah algoritma perkalian matriks yang lebih mangkus daripada brute force?
PencarianNilaiFaktordariBilangan • Menemukansemuafaktordaribilanganbulat n selaindari 1 dan n itusendiri. • Definisi: Bilanganbulat a adalahfaktordaribilanganbulat b jika a habismembagi b.
PencarianNilaiFaktordariBilangan Adakahalgoritmapemfaktoran yang lebihbaikdaripadabrute force?
MencariElemenTerbesar(atauTerkecil) • Persoalan: Diberikansebuahhimpunan yang beranggotakan n buahbilanganbulat. • Bilangan-bilanganbulattersebutdinyatakansebagai a1, a2, …, an. • Carilahelementerbesar di dalamhimpunantersebut!
MencariElemenTerbesar Kompleksitasalgoritmainiadalah O(n).
Sequential Search • Persoalan: Diberikan n buahbilanganbulat yang dinyatakansebagai a1, a2, …, an. • Carilahapakah x terdapat di dalamhimpunanbilanganbulattersebut! • Jika x ditemukan, makalokasi (indeks) elemen yang bernilai x disimpan di dalamvariabelidx. Jika x tidakterdapat di dalamhimpunantersebut, makaidxdiisidengannilai 0.
Sequential Search Kompleksitasalgoritmainiadalah O(n).
Bubble Sort • Apametode yang paling lempang (to the point) dalammemecahkanmasalahpengurutan? • Jawabnyaadalahalgoritmapengurutan bubble sort. • Algoritma bubble sort mengimplementasikanteknik brute force denganjelassekali.
Bubble Sort Kompleksitasalgoritmainiadalah O(n2). Adakahalgoritmapengurutanelemenelemen yang lebihmangkusdaripadabrute force?
UjiKeprimaan • Persoalan: • Diberikansebuahbilanganbilanganbulatpositif. Ujilahapakahbilangantersebutmerupakanbilangan prima ataubukan.
UjiKeprimaan Adakahalgoritmapengujianbilangan prima yang lebihmangkusdaripadabrute force?
KarakteristikAlgoritmaBrute Force • Algoritmabrute forceumumnyatidak"cerdas"dantidakmangkus, karenaiamembutuhkanjumlahlangkah yang besardalampenyelesaiannya. Kadang-kadangalgoritmabrute force disebutjugaalgoritmanaif (naïve algorithm). • Algoritmabrute force seringkalimerupakanpilihan yang kurangdisukaikarenaketidakmangkusannyaitu, tetapidenganmencaripola-pola yang mendasar, keteraturan, atautrik-trikkhusus, biasanyaakanmembantukitamenemukanalgoritma yang lebihcerdasdanlebihmangkus.
Karakteristik Algoritma Brute Force (2) • Untukmasalah yang ukurannyakecil, kesederhanaanbrute force biasanyalebihdiperhitungkandaripadaketidakmangkusannya • Algoritmabrute force seringdigunakansebagai basis bilamembandingkanbeberapaalternatifalgoritma yang mangkus. • Algoritmabrute force seringkalilebihmudahdiimplementasikandaripadaalgoritma yang lebihcanggih, dankarenakesederhanaannya, kadang-kadangalgoritmabrute force dapatlebihmangkus (ditinjaudarisegiimplementasi).
Contoh-contoh lain • 1. Pencocokan String (String Matching) Diberikan: • teks (text), yaitu(long) string yang panjangnya n karakter • pattern, yaitustringdenganpanjang m karakter (m < n) yang akandicari di dalamteks. Carilahlokasipertama di dalamteks yang bersesuaiandenganpattern!
Algoritma Brute Force • Mula-mula pattern dicocokkanpadaawalteks. • Denganbergerakdarikirikekanan, bandingkansetiapkarakter di dalam pattern dengankarakter yang bersesuaian di dalamtekssampai: • semuakarakter yang dibandingkancocokatausama (pencarianberhasil), atau • dijumpaisebuahketidakcocokankarakter (pencarianbelumberhasil) • Bila pattern belumditemukankecocokannyadanteksbelumhabis, geser pattern satukarakterkekanandanulangilangkah 2.
Contoh Pattern: NOT Teks: NOBODY NOTICED HIM NOBODY NOTICED HIM 1 NOT 2 NOT 3 NOT 4 NOT 5 NOT 6 NOT 7 NOT 8 NOT
Contoh 2: Pattern: 001011 Teks: 10010101001011110101010001 10010101001011110101010001 1 001011 2 001011 3 001011 4 001011 5 001011 6 001011 7 001011 8 001011 9 001011
Pencocokan String Kompleksitasalgoritma: O(nm) padakasusterburuk O(n) padakasus rata-rata.
MencariPasanganTitikDenganJarakTerdekat Persoalan: Diberikannbuahtitik (2-D atau 3-D), tentukanduabuahtitik yang terdekatsatusama lain.
Euclidean Formula • Jarakduabuahtitik di bidang 2-D, p1 = (x1, y1) danp2 = (x2, y2) adalah (rumus Euclidean): • Algoritmabrute force: • Hitungjaraksetiappasangtitik. • Pasangantitik yang mempunyaijarakterpendekitulahjawabannya. • Algoritmabrute forceakanmenghitungsebanyakC(n, 2) = n(n – 1)/2 pasangantitikdanmemilihpasangantitik yang mempunyaijarakterkecil. KompleksitasalgoritmaadalahO(n2).
MencariJarakDuaTitikTerdekat Kompleksitasalgoritma: O(n2).
KekuatanMetode Brute Force • Metodebrute force dapatdigunakanuntukmemecahkanhampirsebagianbesarmasalah (wide applicability). • Metodebrute force sederhanadanmudahdimengerti. • Metodebrute forcemenghasilkanalgoritma yang layakuntukbeberapamasalahpentingsepertipencarian, pengurutan, pencocokan string, perkalianmatriks. • Metodebrute forcemenghasilkanalgoritmabaku (standar) untuktugas-tugaskomputasisepertipenjumlahan/perkalian n buahbilangan, menentukanelemen minimum ataumaksimum di dalamtabel (list).
Kelemahan Metode Brute Force • Metodebrute force jarangmenghasilkanalgoritma yang mangkus. • Beberapaalgoritmabrute force lambatsehinggatidakdapatditerima. • Tidaksekonstruktif/sekreatifteknikpemecahanmasalahlainnya. • Ken Thompson (salahseorangpenemu Unix) mengatakan: • "When in doubt, use brute force" • Faktanya kernel Unix yang aslilebihmenyukaialgoritma yang sederhanadankuat (robust) daripadaalgoritma yang cerdastapirapuh.
Exhaustive Search • Exhaustive search adalah: teknikpencariansolusisecarabrute force untukmasalah yang melibatkanpencarianelemendengansifatkhusus. • Biasanya di antaraobjek-objekkombinatoriksepertipermutasi, kombinasi, atauhimpunanbagiandarisebuahhimpunan.
Langkah-langkah Metode Exhaustive Search • Enumerasi (list) setiapsolusi yang mungkindengancara yang sistematis. • Evaluasisetiapkemungkinansolusisatu per satu, mungkinsajabeberapakemungkinansolusi yang tidaklayakdikeluarkan, dansimpansolusiterbaik yang ditemukansampaisejauhini. • the best solution found so far • Bilapencarianberakhir, umumkansolusiterbaik (the winner) • Meskipunalgoritma exhaustive secarateoritismenghasilkansolusi, namunwaktuatausumberdaya yang dibutuhkandalampencariansolusinyasangatbesar.
Contoh-contohExhaustive search • 1. Travelling Salesperson Problem (TSP) • Persoalan: Diberikan n buahkotasertadiketahuijarakantarasetiapkotasatusama lain. Temukanperjalanan (tour) terpendek yang melaluisetiapkotalainnyahanyasekalidankembalilagikekotaasalkeberangkatan. • Persoalan TSP tidak lain adalahmenemukansirkuit Hamilton denganbobot minimum.
Travelling Salesperson Problem • Algoritma exhaustive search untukpersoalan TSP: • Enumerasikan (list) semuasirkuit Hamilton darigraflengkapdengan n buahsimpul. • Hitung (evaluasi) bobotsetiapsirkuit Hamilton yang ditemukanpadalangkah 1. • Pilihsirkuit Hamilton yang mempunyaibobotterkecil.
TSP dengan n = 4, simpul awal = a Ruteperjalanananterpendekadalah acbda adbca denganbobot = 32.
Travelling Salesperson Problem • Untuk n buahsimpulsemuaruteperjalanan yang mungkindibangkitkandenganpermutasidari n – 1 buahsimpul. • Permutasidari n – 1 buahsimpuladalah (n – 1)! • Padacontoh di atas, untuk n = 6 akanterdapat (4 – 1)! = 3! = 6 • buahruteperjalanan.
Travelling Salesperson Problem • Jikadiselesaikandenganmetode exhaustive search, makakitaharusmengenumerasisebanyak (n – 1)! buahsirkuit Hamilton, menghitungsetiapbobotnya, danmemilihsirkuit Hamilton denganbobotterkecil. • Kompleksitaswaktualgoritma exhaustive search untukpersoalan TSP sebandingdengan (n – 1)! dikalidenganwaktuuntukmenghitungbobotsetiapsirkuit Hamilton. • Menghitungbobotsetiapsirkuit Hamilton membutuhkanwaktu O(n), sehinggakompleksitaswaktualgoritma exhaustive search untukpersoalan TSP adalah O(n n!).
Travelling Salesperson Problem • Perbaikan: Setengahdariruteperjalananadalahhasilpencerminandarisetengahrute yang lain, yaknidenganmengubaharahruteperjalanan • 1 dan 6 • 2 dan 4 • 3 dan 5
Travelling Salesperson Problem • makadapatdihilangkansetengahdarijumlahpermutasi (dari 6 menjadi 3). • Ketigabuahsirkuit Hamilton yang dihasilkanadalahsepertigambar di bawahini:
Travelling Salesperson Problem • Dengandemikian, untukgrafdengan n buahsimpul, kitahanyaperlumengevaluasisirkuit Hamilton sebanyak: (n – 1)!/2 buah. • Untukukuranmasukan yang besar, algoritma exhaustive search menjadisangattidakmangkus. • Padapersoalan TSP misalnya, untukjumlahsimpul n = 20 akanterdapat (19!)/2 = 6 1016 sirkuit Hamilton yang harusdievaluasisatu per satu.
Travelling Salesperson Problem • Sayangnya, untukpersoalan TSP tidakadaalgoritma lain yang lebihbaikdaripadaalgoritma exhaustive search. • Jikaandadapatmenemukanalgoritma yang mangkusuntuk TSP, Andaakanmenjaditerkenaldan kaya! Algoritma yang mangkusselalumempunyaikompleksitaswaktudalamordepolinomial.
1/0 Knapsack • Persoalan: Diberikan n buahobjekdansebuah knapsack dengankapasitasbobot K. Setiapobjekmemilikipropertibobot (weight) widankeuntungan (profit) pi. • Bagaimanamemilihmemilihobjek-objek yang dimasukkankedalam knapsack sedemikiansehinggamemaksimumkankeuntungan. Total bobotobjek yang dimasukkankedalam knapsack tidakbolehmelebihikapasitas knapsack. • Persoalan 0/1 Knapsack dapatkitapandangsebagaimencarihimpunanbagian (subset) darikeseluruhanobjek yang muatkedalam knapsack danmemberikan total keuntunganterbesar.
1/0 Knapsack • Solusipersoalandinyatakansebagaivektor n-tupel: X = {x1, x2, …, xn} xi = 1 jikaobjekke-idimasukkankedalam knapsack, xi = 0 jikaobjekke-itidakdimasukkan.
FormulasiMatematis 0/1 Knapsack • Maksimasikan • Dengankendala (constraint) • Dalamhalini, xi = 0 atau 1, i = 1, 2, 3, … , n
0/1 Knapsack • Algoritma exhaustive search untukpersoalan 0/1 Knapsack: • Enumerasikan (list) semuahimpunanbagiandarihimpunandengan n objek. • Hitung (evaluasi) total keuntungandarisetiaphimpunanbagiandarilangkah 1. • Pilihhimpunanbagian yang memberikantotal keuntunganterbesar.
0/1 Knapsack, n = 4 w1 = 2; p1 = 20 w2 = 5; p2 = 30 w3 = 10; p3 = 50 w4 = 5; p4 = 10 Kapasitas knapsack K = 16 • Langkah-langkahpencariansolusi 0/1 Knapsack secara exhaustive search dirangkumdalamtabel di bawahini:
0/1 Knapsack • Himpunanbagianobjek yang memberikankeuntunganmaksimum • adalah {2, 3} dengan total keuntunganadalah 80. • Solusi: X = {0, 1, 1, 0}
0/1 Knapsack • Berapabanyakhimpunanbagiandarisebuahhimpunandengan n elemen? Jawabnyaadalah 2n. • Waktuuntukmenghitung total bobotobjek yang dipilih= O(n) • Sehingga, Kompleksitasalgoritmaexhaustive search untukpersoalan 0/1 Knapsack = O(n. 2n). • TSP dan 0/1 Knapsack, adalahcontohpersoalaneksponensial. Keduanyadigolongkansebagaipersoalan NP (Non-deterministic Polynomial), karenatidakmungkindapatditemukanalgoritmapolinomialuntukmemecahkannya.
Exhaustive Search dalamBidangKriptografi • Di dalambidangkriptografi, exhaustive search merupakanteknik yang digunakanpenyeranguntukmenemukankuncienkripsidengancaramencobasemuakemungkinankunci. • Serangansemacaminidikenaldengannamaexhaustive key search attack ataubrute force attack.
EnkripsidalamBidangKriptografi • Contoh: Panjangkuncienkripsipadaalgoritma DES (Data Encryption Standard) = 64 bit. • Dari 64 bit tersebut, hanya 56 bit yang digunakan (8 bit paritaslainnyatidakdipakai). • Jumlahkombinasikunci yang harusdievaluasiolehpihaklawanadalahsebanyak (2)(2)(2) … (2)(2) = 256 = 720.575.940.379.279 x 1016 • Jikauntukpercobaandengansatukuncimemerlukanwaktu 1 detik, makauntukjumlahkuncisebanyakitudiperlukanwaktukomputasikuranglebihselama 2.284.931.317,79325025367834 tahun!