algoritma bruteforce · function faktorial(input n : integer) ... waktu untuk menghitung bobot...
TRANSCRIPT
Algoritma Bruteforce(disarikan dari diktat Strategi Algoritma, Rinaldi Munir)
wijanarto
Definisi
• Dikenal juga sebagai exhaustive search, hanyaberbeda pada masalah yang akan di pecahkan
• Disebut juga naïve algorithm• Suatu pendekatan langsung (straightfoward)
untuk memecahkan masalah, yang di dasarkanpada pernyataan masalahnya dan konsep yangterlibat di dalamnya
• Sederhana, langsung dan jelas
• Dikenal juga sebagai exhaustive search, hanyaberbeda pada masalah yang akan di pecahkan
• Disebut juga naïve algorithm• Suatu pendekatan langsung (straightfoward)
untuk memecahkan masalah, yang di dasarkanpada pernyataan masalahnya dan konsep yangterlibat di dalamnya
• Sederhana, langsung dan jelas
Contoh
• Menghitung an (a > 0, n adalah bilangan bulattak-negatif)
• an = a × a × … × a (sebanyak n kali),– jika n > 0
• an = 1,– jika n = 0
• Kompleksitas O(n)
• Menghitung an (a > 0, n adalah bilangan bulattak-negatif)
• an = a × a × … × a (sebanyak n kali),– jika n > 0
• an = 1,– jika n = 0
• Kompleksitas O(n)
Algoritma
• kalikan 1 dengan a sebanyak n kali
function pangkat(input a, n : integer)integer{ Menghitung an, a > 0 dan n bilangan bulat tak-negatifMasukan: a, nKeluaran: nilai perpangkatan.
}Deklarasik, hasil : integer
Algoritma:hasil1for k1 to n do
hasilhasil * aendforreturn hasil
function pangkat(input a, n : integer)integer{ Menghitung an, a > 0 dan n bilangan bulat tak-negatifMasukan: a, nKeluaran: nilai perpangkatan.
}Deklarasik, hasil : integer
Algoritma:hasil1for k1 to n do
hasilhasil * aendforreturn hasil
contoh
• Menghitung n! (n bilangan bulat tak-negatif)• n! = 1 × 2 × 3 × … × n , jika n > 0• = 1 , jika n = 0• Kompleksitas O(n)
• Menghitung n! (n bilangan bulat tak-negatif)• n! = 1 × 2 × 3 × … × n , jika n > 0• = 1 , jika n = 0• Kompleksitas O(n)
Algoritma
• kalikan n buah bilangan, yaitu 1, 2, 3, …, n,bersama-sama
function faktorial(input n : integer)integer{ Menghitung n!, n bilangan bulat tak-negatifMasukan: nKeluaran: nilai faktorial dari n.
}Deklarasik, fak : integer
Algoritma:fak1for k1 to n do
fakfak * kendforreturn fak
• kalikan n buah bilangan, yaitu 1, 2, 3, …, n,bersama-sama
function faktorial(input n : integer)integer{ Menghitung n!, n bilangan bulat tak-negatifMasukan: nKeluaran: nilai faktorial dari n.
}Deklarasik, fak : integer
Algoritma:fak1for k1 to n do
fakfak * kendforreturn fak
Contoh
• Mengalikan dua buah matrik yang berukuran n× n
• Misalkan C = A × B dan elemen-elemen matrikdinyatakan sebagai cij, aij, dan bij
• Kompleksitas O(n2)
• Mengalikan dua buah matrik yang berukuran n× n
• Misalkan C = A × B dan elemen-elemen matrikdinyatakan sebagai cij, aij, dan bij
• Kompleksitas O(n2)
n
kkjiknjinjijiij babababac
12211
Algoritma
• hitung setiap elemen hasil perkalian satu per satu, dengancara mengalikan dua vektor yang panjangnya n.procedure PerkalianMatriks(input A, B : Matriks,
input n : integer,output C : Matriks)
{ Mengalikan matriks A dan B yang berukuran n × n, menghasilkan matriks Cyang juga berukuran n × nMasukan: matriks integer A dan B, ukuran matriks nKeluaran: matriks C
}
procedure PerkalianMatriks(input A, B : Matriks,input n : integer,output C : Matriks)
{ Mengalikan matriks A dan B yang berukuran n × n, menghasilkan matriks Cyang juga berukuran n × nMasukan: matriks integer A dan B, ukuran matriks nKeluaran: matriks C
}
Deklarasii, j, k : integer
Algoritmafor i1 to n dofor j1 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
endforendfor
Contoh
• Menemukan semua faktor dari bilangan bulat nselain dari 1 dan n itu sendiri. Definisi faktor darisebuah bilangan adalah sebagai berikut:
• Definisi: Bilangan bulat a adalah faktor dari bilanganbulat b jika a habis membagi b.
• Menemukan semua faktor dari bilangan bulat nselain dari 1 dan n itu sendiri. Definisi faktor darisebuah bilangan adalah sebagai berikut:
• Definisi: Bilangan bulat a adalah faktor dari bilanganbulat b jika a habis membagi b.
Algoritma
• Tentukan kompleksitasnya ???
procedure CariFaktor(input n : integer){ Mencari faktor dari bilangan bulat n selain 1 dan n itu sendiri.Masukan: nKeluaran: setiap bilangan yang menjadi faktor n dicetak.
}Deklarasik : integer
Algoritma:k1ketemu falsefor k2 to n - 1 doif n mod k = 0 thenwrite(k)
endifendfor
procedure CariFaktor(input n : integer){ Mencari faktor dari bilangan bulat n selain 1 dan n itu sendiri.Masukan: nKeluaran: setiap bilangan yang menjadi faktor n dicetak.
}Deklarasik : integer
Algoritma:k1ketemu falsefor k2 to n - 1 doif n mod k = 0 thenwrite(k)
endifendfor
Karakteristik
• Tidak Cerdas dan Boros, buktinya adalahkompleksitas algoritmanya, yaitu membutuhkanjumlah langkah yang besar dalam penyelesainnyakhususnya untuk data berukuran besar
• Mudah di terapkan pada sebagian masalah yangada, jadi di lihat dari kemudahan dia lebih efisien.
• Beberapa pekerjaan mendasar pada komputerhanya dapat di selesaikan dengan metode ini,misal menghitung jumlah data, mencari min danmax dan seabagainya
• Tidak Cerdas dan Boros, buktinya adalahkompleksitas algoritmanya, yaitu membutuhkanjumlah langkah yang besar dalam penyelesainnyakhususnya untuk data berukuran besar
• Mudah di terapkan pada sebagian masalah yangada, jadi di lihat dari kemudahan dia lebih efisien.
• Beberapa pekerjaan mendasar pada komputerhanya dapat di selesaikan dengan metode ini,misal menghitung jumlah data, mencari min danmax dan seabagainya
Latihan dan Tugas
• Carilah kompleksitas algoritma dalam :– menentukan nilai min dan max– Pengurutan secara sekensial– Uji Keprimaan– Menghitung nilai polinom
• Buat implementasi Algoritma String Matchingdan Closest Pair (Jarak titik terdekat)
• Carilah kompleksitas algoritma dalam :– menentukan nilai min dan max– Pengurutan secara sekensial– Uji Keprimaan– Menghitung nilai polinom
• Buat implementasi Algoritma String Matchingdan Closest Pair (Jarak titik terdekat)
Strength and Weakness
• Kekuatan– Wide applicable– Sederhana dan mudah– Layak untuk sebagian masalah (sorting,matrik,string
matching)– Menjadi standar untuk tugas komputasi (menentkan
min max, penjumlahan n bilangan)• Kelemahan– Tidak efisien– Lamban– Tidak kreatif
• Kekuatan– Wide applicable– Sederhana dan mudah– Layak untuk sebagian masalah (sorting,matrik,string
matching)– Menjadi standar untuk tugas komputasi (menentkan
min max, penjumlahan n bilangan)• Kelemahan– Tidak efisien– Lamban– Tidak kreatif
Exhaustive Search
• Problem Solving dengan brute force untukmasalah yang melibatkan pencarian elemendengan sifat khusus(kombinatorikpermutasi, kombinasi,himpunan)
• Problem Solving dengan brute force untukmasalah yang melibatkan pencarian elemendengan sifat khusus(kombinatorikpermutasi, kombinasi,himpunan)
Langkah dalam ES
• Enumerasi– Mendaftar setiap solusi yang mungkin secara
sistematis
• Evaluasi– Mengevaluasi setiap kemungkinan solusi, yang
layak di simpan dan yang tidak di buang
• Solusi umum tercapai bila langkah berakhir
• Enumerasi– Mendaftar setiap solusi yang mungkin secara
sistematis
• Evaluasi– Mengevaluasi setiap kemungkinan solusi, yang
layak di simpan dan yang tidak di buang
• Solusi umum tercapai bila langkah berakhir
Travelling Salesperson Problem
• Diberikan n buah kota serta diketahui jarakantara setiap kota satu sama lain. Temukanperjalanan (tour) terpendek yang melaluisetiap kota lainnya hanya sekali dan kembalilagi ke kota asal keberangkatan
• Diberikan n buah kota serta diketahui jarakantara setiap kota satu sama lain. Temukanperjalanan (tour) terpendek yang melaluisetiap kota lainnya hanya sekali dan kembalilagi ke kota asal keberangkatan
Algo TSP dengan ES
• Enumerasikan (list) semua sirkuit Hamiltondari graf lengkap dengan n buah simpul.
• Hitung (evaluasi) bobot setiap sirkuit Hamiltonyang ditemukan pada langkah 1.
• Pilih sirkuit Hamilton yang mempunyai bobotterkecil.
• Enumerasikan (list) semua sirkuit Hamiltondari graf lengkap dengan n buah simpul.
• Hitung (evaluasi) bobot setiap sirkuit Hamiltonyang ditemukan pada langkah 1.
• Pilih sirkuit Hamilton yang mempunyai bobotterkecil.
Contoh untuk n=4
• Misalkan simpul a adalah kota tempatdimulainya perjalanan (starting city).
•
a b
cd
12
8
15
1095
Rute perjalanan (tour) Bobotabcdaabdcaacbdaacdbaadbcaadcba
10+12+8+15 = 4512+5+9+15 = 4110+5+9+8 = 3212+5+9+15 = 4110+5+9+8 = 3210+12+8+15 = 45
• Misalkan simpul a adalah kota tempatdimulainya perjalanan (starting city).
•
a b
cd
12
8
15
1095
abcdaabdcaacbdaacdbaadbcaadcba
10+12+8+15 = 4512+5+9+15 = 4110+5+9+8 = 3212+5+9+15 = 4110+5+9+8 = 3210+12+8+15 = 45
TSP
• Untuk 4 kota, terdapat 6 buah kemungkinanrute perjalanan (atau sirkuit Hamilton). Ruteperjalananan terpendek adalahacbda atau adbca denganbobot = 32.
• Untuk 4 kota, terdapat 6 buah kemungkinanrute perjalanan (atau sirkuit Hamilton). Ruteperjalananan terpendek adalahacbda atau adbca denganbobot = 32.
TSP
• Karena perjalanan berawal dan berakhir padasimpul yang sama, maka untuk n buah simpulsemua rute perjalanan yang mungkindibangkitkan dengan permutasi dari n – 1buah simpul. Permutasi dari n – 1 buah simpuladalah (n – 1)!. Pada contoh di atas, untuk n =6 akan terdapat
(4 – 1)! = 3! = 6buah rute perjalanan
• Karena perjalanan berawal dan berakhir padasimpul yang sama, maka untuk n buah simpulsemua rute perjalanan yang mungkindibangkitkan dengan permutasi dari n – 1buah simpul. Permutasi dari n – 1 buah simpuladalah (n – 1)!. Pada contoh di atas, untuk n =6 akan terdapat
(4 – 1)! = 3! = 6buah rute perjalanan
Analisa
• Jika persoalan TSP diselesaikan dengan metode exhaustivesearch, maka kita harus mengenumerasi sebanyak (n – 1)!buah sirkuit Hamilton, menghitung setiap bobotnya, danmemilih sirkuit Hamilton dengan bobot terkecil. Untukmenghitung bobot setiap sirkuit Hamilton dibutuhkan waktuO(n), maka kompleksitas waktu algoritma exhaustive searchuntuk persoalan TSP sebanding dengan (n – 1)! dikali denganwaktu untuk menghitung bobot setiap sirkuit Hamilton.Dengan kata lain, kompleksitas waktu algoritma exhaustivesearch untuk persoalan TSP adalah O(n n!).
• Jika persoalan TSP diselesaikan dengan metode exhaustivesearch, maka kita harus mengenumerasi sebanyak (n – 1)!buah sirkuit Hamilton, menghitung setiap bobotnya, danmemilih sirkuit Hamilton dengan bobot terkecil. Untukmenghitung bobot setiap sirkuit Hamilton dibutuhkan waktuO(n), maka kompleksitas waktu algoritma exhaustive searchuntuk persoalan TSP sebanding dengan (n – 1)! dikali denganwaktu untuk menghitung bobot setiap sirkuit Hamilton.Dengan kata lain, kompleksitas waktu algoritma exhaustivesearch untuk persoalan TSP adalah O(n n!).
Analisa
• Kita dapat menghemat jumlah komputasidengan mengamati bahwa setengah dari ruteperjalanan adalah hasil pencerminan darisetengah rute yang lain, yakni denganmengubah arah rute perjalanan
• 1 dan 6• 2 dan 4• 3 dan 5
• Kita dapat menghemat jumlah komputasidengan mengamati bahwa setengah dari ruteperjalanan adalah hasil pencerminan darisetengah rute yang lain, yakni denganmengubah arah rute perjalanan
• 1 dan 6• 2 dan 4• 3 dan 5
Analisa
• maka dapat dihilangkan setengah dari jumlahpermutasi (dari 6 menjadi 3). Ketiga buahsirkuit Hamilton yang dihasilkan adalah sepertigambar di bawah ini:
• Dengan demikian, untuk graf dengan n buahsimpul, kita hanya perlu mengevaluasi sirkuitHamilton sebanyak (n – 1)!/2.
• maka dapat dihilangkan setengah dari jumlahpermutasi (dari 6 menjadi 3). Ketiga buahsirkuit Hamilton yang dihasilkan adalah sepertigambar di bawah ini:
• Dengan demikian, untuk graf dengan n buahsimpul, kita hanya perlu mengevaluasi sirkuitHamilton sebanyak (n – 1)!/2.
a b
cd
12
8
15
10
a b
cd
12
15
95
a b
cd
81095