23

Click here to load reader

Algoritma Bruteforce · function faktorial(input n : integer) ... waktu untuk menghitung bobot setiap sirkuit ... kompleksitas waktu algoritma exhaustive search untuk persoalan TSP

Embed Size (px)

Citation preview

Page 1: Algoritma Bruteforce · function faktorial(input n : integer) ... waktu untuk menghitung bobot setiap sirkuit ... kompleksitas waktu algoritma exhaustive search untuk persoalan TSP

Algoritma Bruteforce(disarikan dari diktat Strategi Algoritma, Rinaldi Munir)

wijanarto

Page 2: Algoritma Bruteforce · function faktorial(input n : integer) ... waktu untuk menghitung bobot setiap sirkuit ... kompleksitas waktu algoritma exhaustive search untuk persoalan TSP

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

Page 3: Algoritma Bruteforce · function faktorial(input n : integer) ... waktu untuk menghitung bobot setiap sirkuit ... kompleksitas waktu algoritma exhaustive search untuk persoalan TSP

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)

Page 4: Algoritma Bruteforce · function faktorial(input n : integer) ... waktu untuk menghitung bobot setiap sirkuit ... kompleksitas waktu algoritma exhaustive search untuk persoalan TSP

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

Page 5: Algoritma Bruteforce · function faktorial(input n : integer) ... waktu untuk menghitung bobot setiap sirkuit ... kompleksitas waktu algoritma exhaustive search untuk persoalan TSP

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)

Page 6: Algoritma Bruteforce · function faktorial(input n : integer) ... waktu untuk menghitung bobot setiap sirkuit ... kompleksitas waktu algoritma exhaustive search untuk persoalan TSP

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

Page 7: Algoritma Bruteforce · function faktorial(input n : integer) ... waktu untuk menghitung bobot setiap sirkuit ... kompleksitas waktu algoritma exhaustive search untuk persoalan TSP

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

Page 8: Algoritma Bruteforce · function faktorial(input n : integer) ... waktu untuk menghitung bobot setiap sirkuit ... kompleksitas waktu algoritma exhaustive search untuk persoalan TSP

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

Page 9: Algoritma Bruteforce · function faktorial(input n : integer) ... waktu untuk menghitung bobot setiap sirkuit ... kompleksitas waktu algoritma exhaustive search untuk persoalan TSP

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.

Page 10: Algoritma Bruteforce · function faktorial(input n : integer) ... waktu untuk menghitung bobot setiap sirkuit ... kompleksitas waktu algoritma exhaustive search untuk persoalan TSP

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

Page 11: Algoritma Bruteforce · function faktorial(input n : integer) ... waktu untuk menghitung bobot setiap sirkuit ... kompleksitas waktu algoritma exhaustive search untuk persoalan TSP

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

Page 12: Algoritma Bruteforce · function faktorial(input n : integer) ... waktu untuk menghitung bobot setiap sirkuit ... kompleksitas waktu algoritma exhaustive search untuk persoalan TSP

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)

Page 13: Algoritma Bruteforce · function faktorial(input n : integer) ... waktu untuk menghitung bobot setiap sirkuit ... kompleksitas waktu algoritma exhaustive search untuk persoalan TSP

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

Page 14: Algoritma Bruteforce · function faktorial(input n : integer) ... waktu untuk menghitung bobot setiap sirkuit ... kompleksitas waktu algoritma exhaustive search untuk persoalan TSP

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)

Page 15: Algoritma Bruteforce · function faktorial(input n : integer) ... waktu untuk menghitung bobot setiap sirkuit ... kompleksitas waktu algoritma exhaustive search untuk persoalan TSP

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

Page 16: Algoritma Bruteforce · function faktorial(input n : integer) ... waktu untuk menghitung bobot setiap sirkuit ... kompleksitas waktu algoritma exhaustive search untuk persoalan TSP

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

Page 17: Algoritma Bruteforce · function faktorial(input n : integer) ... waktu untuk menghitung bobot setiap sirkuit ... kompleksitas waktu algoritma exhaustive search untuk persoalan TSP

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.

Page 18: Algoritma Bruteforce · function faktorial(input n : integer) ... waktu untuk menghitung bobot setiap sirkuit ... kompleksitas waktu algoritma exhaustive search untuk persoalan TSP

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

Page 19: Algoritma Bruteforce · function faktorial(input n : integer) ... waktu untuk menghitung bobot setiap sirkuit ... kompleksitas waktu algoritma exhaustive search untuk persoalan TSP

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.

Page 20: Algoritma Bruteforce · function faktorial(input n : integer) ... waktu untuk menghitung bobot setiap sirkuit ... kompleksitas waktu algoritma exhaustive search untuk persoalan TSP

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

Page 21: Algoritma Bruteforce · function faktorial(input n : integer) ... waktu untuk menghitung bobot setiap sirkuit ... kompleksitas waktu algoritma exhaustive search untuk persoalan TSP

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!).

Page 22: Algoritma Bruteforce · function faktorial(input n : integer) ... waktu untuk menghitung bobot setiap sirkuit ... kompleksitas waktu algoritma exhaustive search untuk persoalan TSP

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

Page 23: Algoritma Bruteforce · function faktorial(input n : integer) ... waktu untuk menghitung bobot setiap sirkuit ... kompleksitas waktu algoritma exhaustive search untuk persoalan TSP

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