29
1 DESAIN & ANALISIS ALGORITMA PERTEMUAN 12 24 June 2008

Daa Pertemuan 12

Embed Size (px)

Citation preview

Page 1: Daa Pertemuan 12

1

DESAIN & ANALISISALGORITMA

PERTEMUAN 1224 June 2008

Page 2: Daa Pertemuan 12

2

3. Metode Decrease-and-Conquer

Teknik ini didasarkan pada ekploitasi hubungan antarasolusi dari cuplikan sebuah permasalahan dengan solusi daricuplikan yang lebih kecil dari permasalahan yang sama.

Jika hubungan tersebut telah dibuat, maka dapatdieksploitasi dengan cara top-down (rekursif) atau bottom-up (non-rekursif). Ada 3 variasi utama dari teknik ini:

24 June 2008

up (non-rekursif). Ada 3 variasi utama dari teknik ini: Decrease by a constant (ukuran berkurang dengan konstanta yang

sama untuk tiap iterasi, biasanya berkurang 1) Decrease by a constant factor (berkurang dengan faktor konstan

yg sama, biasanya 2 sehingga permasalahan mengecil hinggaseparuhnya)

Variable size decrease (berkurang dengan nilai yang bervariasi,tiap iterasinya)

Page 3: Daa Pertemuan 12

3

3.1. Decrease by a Constant

Ukuran dari cuplikan permasalahan berkurang dengan konstanta yangsama pada tiap iterasi. Biasanya konstanta ini = 1.

Contoh: masalah perhitungan eksponensial an untuk n bilangan integerpositif. Hubungan antara solusi untuk permasalahan berukuran ndengan yg berukuran n-1 didapat dengan rumus: an = an-1. a

24 June 2008

Sehingga fungsi f(n)=an dapat dihitung dengan cara “top-down”rekursif:

f(n-1) . a jika n >1

f(n) =

a jika n = 1

atau dengan cara “bottom-up”, yakni dengan mengalikan a dengandirinya sendiri sebanyak n-1 kali

Page 4: Daa Pertemuan 12

4

Decrease by a Constant (lanjutan)

Problem of size n

Subproblem of size n-1

24 June 2008

Solution tothe subproblem

Solution tothe original problem

Page 5: Daa Pertemuan 12

5

3.1.1. Insertion Sort

Merupakan algoritma sorting yang telah dibahas pada pertemuanke-6 untuk mengurutkan array A[0…n-1].

Teknik ini mengasumsikan bahwa permasalahan yg berukuran lebihkecil (A[0…n-2]) sudah terurut, sehingga untuk mengurutkan seluruhelemen (A[0…n-1]) dilakukan dengan menyisipkan elemen A[n-1] keposisi yang benar dengan menggunakan salah satu dari 3 caraberikut:

24 June 2008

berikut: Mencari dari kiri ke kanan sampai ditemukan elemen yg ≥ A[n-1]

dan memasukkan elemen A[n-1] di sisi kiri elemen tersebut. Mencari dari kanan ke kiri sampai ditemukan elemen yg ≤ A[n-1]

dan memasukkan elemen A[n-1] di sisi kanan elemen tersebut. Menggunakan teknik binary search untuk mendapatkan posisi

yang tepat untuk memasukkan elemen A[n-1].

Page 6: Daa Pertemuan 12

6

Insertion Sort (lanjutan)

Contoh:

24 June 2008

Contoh sorting dengan Insertion Sort. Garis tebalmemisahkan bagian yang sudah terurut dari elemenyang lain; elemen yang akan di-insert-kan adalahangka yg ditebalkan (bold)

Page 7: Daa Pertemuan 12

7

3.1.2. Depth-First Search (DFS) danBreadth-First Search (BFS)

Depth-First Search Merupakan salah satu metode pencarian buta (blind search) terhadap

vertex-vertex pada sebuah graph.

DFS dimulai dengan memilih sebuah vertex sembarang dan menandaivertex tersebut sebagai “visited vertex” (vertex yg sudah dikunjungi). Padasetiap iterasi, DFS akan mengunjungi vertex yg “unvisited” (blm dikunjungi)yg ber-adjacent dengan vertex yg sekarang sedang dikunjungi.

24 June 2008

yg ber-adjacent dengan vertex yg sekarang sedang dikunjungi.

Lanjutkan proses sampai ditemui “dead end” (vertex dimana tidak ditemuilagi vertex lain yang beradjacent dan unvisited). Saat ini terjadi, maka ygdilakukan adalah mundur ke vertex sebelumnya dan mencoba melanjutkanmengunjungi vertex yg “unvisited” lain.

Algoritma berhenti ketika sudah kembali lagi ke vertex awal setelahsebelumnya menemui “dead end”.

Gunakan stack untuk mempermudah penelusuran operasi DFS. PUSH vertexketika vertex tersebut pertama kali dikunjungi dan POP vertex ketika padavertex tersebut menemui “dead end”.

Page 8: Daa Pertemuan 12

8

Depth-First Search (lanjutan)

Berikut pseudocode untuk DFS:ALGORITHM DFS(G)

//Input: Graph G = (V, E) Vertex dan Edge

//Output: Graph G dengan vertex yg sudah dinomori sesuai urutan

//penemuannya dengan penelusuran DFS

Tandai tiap vertex pada V dengan 0 (berarti “unvisited”)

count 0

24 June 2008

for setiap vertex pada V do

if v ditandai dengan 0

dfs(v)

dfs(v)

//mengunjungi scr rekursif semua vertex yg “unvisited” yg terhubung dgn

// vertex v & menomorinya sesuai urutan kunjungan

count count + 1; beri nomor vertex v dgn count

for tiap vertex w dalam V yg beradjacent dgn v do

if w bernomor 0

dfs(w)

Page 9: Daa Pertemuan 12

9

24 June 2008

PENELUSURAN DENGAN DFS

Page 10: Daa Pertemuan 12

Breadth-First Search (BFS)

Jika DFS bisa dianggap sebagai penelusuran bagisi “petualang pemberani” yang pergi sejauhmungkin dari kampung halamannya, maka BFSdapat dianggap sebagai penelusuran bagi si“petualang yang berhati-hati”.

10

“petualang yang berhati-hati”.

BFS menelusuri graph dengan cara mengunjungisemua vertex yang beradjacent dengan vertex awal,lalu melanjutkan penelusuran ke vertex “unvisited”lain yg berjarak 2 edge dari vertex yg sudahdikunjungi, dan seterusnya.

24 June 2008

Page 11: Daa Pertemuan 12

Breadth-First Search (BFS)

Berikut pseudocode BFS:

ALGORITHM BFS(G)

//Input: Graph G = (V, E)

//Output: Graph G dengan vertex yg sudah dinomori sesuai urutan penemuannya dgn BFS

Tandai tiap vertex pada V dengan 0 (berarti “unvisited”)

count 0

for setiap vertex pada V do

11

for setiap vertex pada V do

if v ditandai dengan 0

bfs(v)

bfs(v)

//mengunjungi semua vertex yg “unvisited” yg terhubung dgn vertex v & menomorinyasesuai

//urutan kunjungan

count count + 1; tandai v dengan nilai count dan inisialisasi queue dg v

while queue tidak empty do

for tiap vertex w dalam V yg beradjacent dg vertex awal do

if w bernomor 0

count count + 1; nomori w dengan count

tambahkan vertex w ke queue

hapus vertex awal dari queue

Page 12: Daa Pertemuan 12

24 June 200812

Penelusuran Graph dengan BFS. Nomor vertex menunjukkanurutan penelusuran graph dimulai dari root (1)

Page 13: Daa Pertemuan 12

13

Latihan

Telusuri graph berikut dengan metode DFS dan BFS

24 June 2008

Page 14: Daa Pertemuan 12

3.2. Decrease-by-a-Constant-Factor

Merupakan teknik yang mengurangipermasalahan dengan faktor konstanta ygsama pada tiap iterasi, pada umumnya faktorkonstanta ini = 2.

14

BinarySearch juga termasuk dalam algoritmaDecrease-by-a-Constant-Factor, karenaBinarySearch mengurangi (sekaligusmembagi) permasalahan menjadisetengahnya.

24 June 2008

Page 15: Daa Pertemuan 12

Problem of size n

Subproblemof size n/2

24 June 200815

Solution tothe subproblem

Solution tothe original problem

Decrease-by-a-constant-factor

Page 16: Daa Pertemuan 12

3.2.1. Permasalahan KoinPalsu (Fake-Coin Problem) Terdapat n buah koin, diketahui salah satunya adalah

koin palsu. Dengan menggunakan timbangan, dapatdibandingkan berat koin (misal koin yg palsu akan lebihringan dari koin asli). Bagaimana algoritma untukmenentukan koin yang palsu tersebut?

16

menentukan koin yang palsu tersebut?

Cara yg paling natural adalah dengan membagi koinmenjadi 2 tumpukan, masing2 berisi koin,menyisakan 1 koin, jika n ganjil.

Timbang kedua tumpukan, perhatikan hasilnya:

Jika seimbang, berarti koin yg blm ditimbang adalah palsu.

Jika tidak, lanjutkan penimbangan pada tumpukan yg lebih

ringan24 June 2008

2/n

Page 17: Daa Pertemuan 12

Fake-Coin Problem

Walaupun kita membagi koin dalam 2 bagian,tetapi setelah satu penimbangan, kitadihadapkan pada problem yang berukuransetengah dari ukuran asal, sehingga ini

17

termasuk teknik decrease-and-conquer.

Relasi rekurensi untuk jumlah penimbangan ygdibutuhkan pada kasus worst case adalah:

untuk n>1, W(1)=0

24 June 2008

1)2/()( nWnW

Page 18: Daa Pertemuan 12

3.2.2. Josephus Problem

Berasal dari nama sejarawan Yahudi, Flavius Josephus yang terlibat dalamrevolusi Yahudi terhadap kerajaan Romawi (66-70). Sebagai jenderal, iadapat menguasai kota Jotapata selama 47 hari, tetapi setelah kejatuhankota tersebut, ia lari menyelamatkan diri bersama 40 pengikutnya kesebuah gua. Disana, mereka bertekad untuk lebih baik mati daripadamenyerah. Josephus menyarankan bahwa setiap orang, secarabergantian, harus membunuh rekan disebelahnya dengan menggunakan

18

bergantian, harus membunuh rekan disebelahnya dengan menggunakansebuah kapak dan menyerahkan kapak kepada rekan di sebelahnya lagiyang masih hidup, kemudian orang tsb juga membunuh rekan disebelahnya, dan begitu seterusnya sampai semua orang terbunuh danorang terakhir yang masih hidup harus bunuh diri. Josephus mendapatgiliran terakhir, dan sebagai salah satu dari dua orang terakhir yang masihhidup, ia membunuh orang tersebut dan kemudian menyerahkan dirikepada bangsa Romawi.

Bagaimana strategi Josephus agar ia menjadi orang yg terakhir danmenjadi satu-satunya yg selamat?

24 June 2008

Page 19: Daa Pertemuan 12

Josephus Problem (lanjutan)19

24 June 2008

Page 20: Daa Pertemuan 12

Josephus Problem (lanjutan)

Permasalahannya adalah menentukan nomor urut yg “aman”, yaituJ(n). Misal: Jika n=6, maka yg tereliminasi pada putaran pertamaadalah posisi 2, 4, dan 6. Sedangkan posisi 3 dan 1 akantereliminasi pada putaran kedua, sehingga posisi yg selamatadalah 5, sehingga J(n) = 5.

Jika n=7, maka orang pada posisi 2, 4, 6, dan 1 tereliminasi pada

20

Jika n=7, maka orang pada posisi 2, 4, 6, dan 1 tereliminasi padaputaran pertama. Pada putaran kedua, yg tereliminasi adalahposisi 5 dan 3, sehingga J(7) = 7.

Jika n genap (misal n=2k), maka iterasi pertama akan mengurangiukuran permasalahan menjadi setengahnya. Perbedaannya hanyapada penomoran posisi; misal, orang pada nomor posisi awal 3akan menjadi nomor 2 pada iterasi kedua, orang pada nomor posisiawal 5 akan menjadi nomor 3, dan seterusnya. (Perhatikan gambarberikut ini).

24 June 2008

Page 21: Daa Pertemuan 12

Josephus Problem (lanjutan)21

3

21

12

5

61

11

21

36

7

24 June 2008

32

41

5

(a) (b)

32

4152

61

Contoh Josephus problem untuk (a) n=6 dan (b) n=7. Nilai subskripmenunjukkan iterasi dimana orang pada posisi tsb dieliminasi.

Solusinya adalah J(6)=5 dan J(7)=7.

Page 22: Daa Pertemuan 12

Josephus Problem (lanjutan)

Untuk n genap:

Untuk mendapatkan posisi awal seseorang,kalikan posisi baru dengan 2 dan kurangi dengan1, sehingga: J(2k) = 2J(k) – 1

22

Untuk n ganjil:

Jika n ganjil, maka n = 2k + 1. Iterasi pertamamengeliminasi semua orang pada posisi genap.

Untuk mendapatkan posisi awal seseorang,kalikan posisi baru dengan 2 dan tambahkandengan 1, sehingga: J(2k+1) = 2J(k) + 1.

24 June 2008

Page 23: Daa Pertemuan 12

Josephus Problem

Kembali permasalahan asal, berapakah J(41)?

23

24 June 2008

Page 24: Daa Pertemuan 12

3.3. Variable-Size-Decrease

Pada tipe ini, pengurangan pola bervariasi dari satu iterasi ke iterasilain.

Contoh paling sederhana: algoritma Euclid untuk mencari FaktorPersekutuan Terbesar (FPB) dengan rumus: FPB(m, n) = FPB(n, mmod n).

Contoh lain: The Game of Nim (Nim’s Game):

24

Contoh lain: The Game of Nim (Nim’s Game):

Permainan yang dimainkan oleh 2 orang. Ada setumpuk n kepingandan 2 orang tersebut secara bergantian mengambil kepingan(minimal 1 dan maksimal m). Jumlah kepingan yg dapat diambilboleh bervariasi dalam tiap langkah pengambilannya, tetapi batasminimal & maksimalnya tetap. Pemenangnya adalah orang ygmengambil kepingan terakhir, sehingga lawannya tidak dapatmelanjutkan permainan (kalah).

Bagaimana strategi untuk memenangkan permainan ini? Yaitudengan mengambil n mod (m+1) kepingan pada tiap langkahnya.

Page 25: Daa Pertemuan 12

Tugas Presentasi

1. Pilih salah satu dari topik berikut:

Strategi Brute-Force:

String Matching Problem (1)

Knapsack Problem (2)

Stable Marriage Problem (3)

Strategi Divide-and-Conquer:

25

Strategi Divide-and-Conquer:

Merge Sort (4)

Quick Sort (5)

Binary Search (6)

Strategi Decrease-and-Conquer:

Depth-First Search (7)

Breadth-First Search (8)

Josephus Problem (9)

The Game of Nim (10)

Fake-Coin Problem (11)24 June 2008

Page 26: Daa Pertemuan 12

Deskripsi Tugas

2. Tiap kelompok membuat:

Simulasi dari topik permasalahan dan penyelesaiannya (file dapatberupa animasi, film, flash movie, program, dll) dikumpulkan

Makalah mengenai topik yang dipilih (format lihat di contoh makalah)dikumpulkan

3. Presentasikan makalah yang sudah kelompok Anda buat dan

26

3. Presentasikan makalah yang sudah kelompok Anda buat dandemokan simulasinya

4. Print lembar daftar kelompok, kontribusi masing2 anggotakelompok, progress pengerjaan tugas, dan form penilaian (contohform) dan diserahkan pada saat presentasi.

5. Urutan presentasi kelompok akan ditentukan kemudian. Masing2kelompok harap mempersiapkan diri.

24 June 2008

Page 27: Daa Pertemuan 12

24 June 200827

Selamat Bekerja

Page 28: Daa Pertemuan 12

Stable Marriage Problem (PermasalahanPernikahan yang Stabil)

Terdapat n pria dan m wanita.

Input:

Tiap pria menuliskan daftar wanita pilihannya, sesuai urutanprioritas.

Tiap wanita menuliskan daftar pria pilihannya, sesuai urutan

28

Tiap wanita menuliskan daftar pria pilihannya, sesuai urutanprioritas.

Tujuan:

Mencari pasangan2 pria dan wanita yang stabil, yakni tidakada pria dan wanita yang ingin meninggalkan pasangannyasekarang dan lari dengan orang lain.

24 June 2008

Page 29: Daa Pertemuan 12

Stable Marriage Problem (PermasalahanPernikahan yg Stabil) dengan Brute-Force

Contoh:

Berikut daftar prioritas pasangan masing-masing orang (secaradecreasing/menurun):

Pria Wanita

A bcad a CBAD

B dcab b DABC

29

B dcab b DABC

C bcad c CABD

D dbac d ADBC

Jika Ac dan Bb dipasangkan, maka ini termasuk kategori tidak stabil,karena Ab tidak puas dan ingin lari bersama, karena A lebih memilih bdaripada c dan b lebih memilih A daripada B

Untuk 8 orang di atas, carilah kombinasi pasangan yang stabil denganmenuliskan seluruh kemungkinan pasangan. Beri keterangan pasanganmana yg stabil dan mana yg tidak stabil.

BACK