Design and Analysis of Algorithm Week 4: Kompleksitas waktu algoritma rekursif part 1
Dr. Putu Harry Gunawan1 1 Department
of Computational Science School of Computing Telkom University
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
1 / 48
Outline Quiz I Quiz I 2 Review 3 Pendahuluan Pendahuluan Dikatkan bentuk rekursif: Tujuan dibuat rekursif: Syarat bentuk rekursif: 4 Relasi Rekurens Faktorial Relasi Rekurens Faktorial 5 Relasi Rekurens Hanoi Tower Relasi Rekurens Hanoi Tower 6 Relasi Rekursi Min Max Relasi Rekursi Min Max 7 Tambahan Tambahan Cara coba-coba 8 Dr. PutuReferences Harry Gunawan (Telkom University) Design and Analysis of Algorithm 1
2 / 48
Outline Quiz I Quiz I 2 Review 3 Pendahuluan Pendahuluan Dikatkan bentuk rekursif: Tujuan dibuat rekursif: Syarat bentuk rekursif: 4 Relasi Rekurens Faktorial Relasi Rekurens Faktorial 5 Relasi Rekurens Hanoi Tower Relasi Rekurens Hanoi Tower 6 Relasi Rekursi Min Max Relasi Rekursi Min Max 7 Tambahan Tambahan Cara coba-coba 8 Dr. PutuReferences Harry Gunawan (Telkom University) Design and Analysis of Algorithm 1
3 / 48
Exercise 1
Quiz I Kuis I dimulai selama 45 menit.
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
4 / 48
Exercise 1
Buatlah algoritma rekursif untuk menghitung faktorial! Contoh 10! = 10 × 9 × · · · × 2 × 1
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
(2.1)
5 / 48
Exercise 2
Buatlah algoritma rekursif untuk menentukan nilai baris fibonanci ke-n Contoh: Baris fibonanci ke 6 1, 1, 2, 3, 5, 8
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
(2.2)
6 / 48
Outline Quiz I Quiz I 2 Review 3 Pendahuluan Pendahuluan Dikatkan bentuk rekursif: Tujuan dibuat rekursif: Syarat bentuk rekursif: 4 Relasi Rekurens Faktorial Relasi Rekurens Faktorial 5 Relasi Rekurens Hanoi Tower Relasi Rekurens Hanoi Tower 6 Relasi Rekursi Min Max Relasi Rekursi Min Max 7 Tambahan Tambahan Cara coba-coba 8 Dr. PutuReferences Harry Gunawan (Telkom University) Design and Analysis of Algorithm 1
7 / 48
Pendahuluan
Pada bab ini, akan dibahas mengenai menghitung waktu asismtotik untuk algoritma rekursif. Kita mulai dengan definisi-definisi algoritma rekursif:
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
8 / 48
Outline Quiz I Quiz I 2 Review 3 Pendahuluan Pendahuluan Dikatkan bentuk rekursif: Tujuan dibuat rekursif: Syarat bentuk rekursif: 4 Relasi Rekurens Faktorial Relasi Rekurens Faktorial 5 Relasi Rekurens Hanoi Tower Relasi Rekurens Hanoi Tower 6 Relasi Rekursi Min Max Relasi Rekursi Min Max 7 Tambahan Tambahan Cara coba-coba 8 Dr. PutuReferences Harry Gunawan (Telkom University) Design and Analysis of Algorithm 1
9 / 48
Rekursif
Dikatkan bentuk rekursif:
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
10 / 48
Rekursif
Dikatkan bentuk rekursif: 1
suatu subrutin atau fungsi/ prosedur yang memanggil dirinya sendiri.
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
10 / 48
Rekursif
Dikatkan bentuk rekursif: 1
suatu subrutin atau fungsi/ prosedur yang memanggil dirinya sendiri.
2
bentuk dimana pemanggilan subrutin terdapat di dalam body subrutin
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
10 / 48
Rekursif
Dikatkan bentuk rekursif: 1
suatu subrutin atau fungsi/ prosedur yang memanggil dirinya sendiri.
2
bentuk dimana pemanggilan subrutin terdapat di dalam body subrutin
3
dengan rekursi, program akan lebih mudah dilihat.
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
10 / 48
Outline Quiz I Quiz I 2 Review 3 Pendahuluan Pendahuluan Dikatkan bentuk rekursif: Tujuan dibuat rekursif: Syarat bentuk rekursif: 4 Relasi Rekurens Faktorial Relasi Rekurens Faktorial 5 Relasi Rekurens Hanoi Tower Relasi Rekurens Hanoi Tower 6 Relasi Rekursi Min Max Relasi Rekursi Min Max 7 Tambahan Tambahan Cara coba-coba 8 Dr. PutuReferences Harry Gunawan (Telkom University) Design and Analysis of Algorithm 1
11 / 48
Rekursif
Tujuan dibuat rekursif:
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
12 / 48
Rekursif
Tujuan dibuat rekursif: 1
menyederhanakan penulisan program
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
12 / 48
Rekursif
Tujuan dibuat rekursif: 1
menyederhanakan penulisan program
2
menggantikan bentuk iterasi
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
12 / 48
Outline Quiz I Quiz I 2 Review 3 Pendahuluan Pendahuluan Dikatkan bentuk rekursif: Tujuan dibuat rekursif: Syarat bentuk rekursif: 4 Relasi Rekurens Faktorial Relasi Rekurens Faktorial 5 Relasi Rekurens Hanoi Tower Relasi Rekurens Hanoi Tower 6 Relasi Rekursi Min Max Relasi Rekursi Min Max 7 Tambahan Tambahan Cara coba-coba 8 Dr. PutuReferences Harry Gunawan (Telkom University) Design and Analysis of Algorithm 1
13 / 48
Rekursif
Syarat bentuk rekursif:
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
14 / 48
Rekursif
Syarat bentuk rekursif: 1
ada kondisi terminal
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
14 / 48
Rekursif
Syarat bentuk rekursif: 1
ada kondisi terminal
2
ada subroutine call yang melibatkan parameter yang nilainya menuju kondisi terminal
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
14 / 48
Rekursif
Syarat bentuk rekursif: 1
ada kondisi terminal
2
ada subroutine call yang melibatkan parameter yang nilainya menuju kondisi terminal
Sehingga untuk menghitung kompleksitas bentuk rekursif, maka digunakan teknik perhitungan kompleksitas dengan relasi rekurens.
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
14 / 48
Outline Quiz I Quiz I 2 Review 3 Pendahuluan Pendahuluan Dikatkan bentuk rekursif: Tujuan dibuat rekursif: Syarat bentuk rekursif: 4 Relasi Rekurens Faktorial Relasi Rekurens Faktorial 5 Relasi Rekurens Hanoi Tower Relasi Rekurens Hanoi Tower 6 Relasi Rekursi Min Max Relasi Rekursi Min Max 7 Tambahan Tambahan Cara coba-coba 8 Dr. PutuReferences Harry Gunawan (Telkom University) Design and Analysis of Algorithm 1
15 / 48
Faktorial
Perhatikan algoritma berikut: Function Factorial(input n: integer) -> integer Algoritma if n=0 then return 1 else return (n * Factorial(n-1)) endif
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
16 / 48
Faktorial
Kompleksitas waktu: untuk kasus basis, tidak ada operasi perkalian → 0 untuk kasus rekurens, kompleksitas waktu diukur dari jumlah perkalian (1) ditambah kompleksitas wasktu untuk faktorial (n-1).
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
17 / 48
Faktorial
Sehingga relasi rekursinya dapat dibentuk menjadi: ( 0, n = 0, T (n) = T (n − 1) + 1, n > 0.
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
(4.1)
18 / 48
Faktorial
Jadi menghitung waktunya adalah T (n) = 1 + T (n − 1) = 1 + 1 + T (n − 2) = 2 + T (n − 2) = 2 + 1 + T (n − 3) = 3 + T (n − 3) = ··· = n + T (0) =n+0 Jadi T (n) = n → O(n).
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
19 / 48
Generally
Secara umum, untuk menganalisis waktu efisiensi dari algoritma rekursif: 1
Putuskan dalam parameter, yang mengindikasikan ukuran inputan.
2
Identifikasi operasi dasar algoritma
3
Cek apakah jumlah operasi dasar akan berbeda jika ukuran masukan berbeda?, kalau iya maka dapat dihitung, waktu terbaik, terburuk, dan rata-rata secara terpisah.
4
Buat relasi rekursi dengan kondisi awal yang sesuai, untuk jumlah operasi dasar yang dijalankan.
5
Selesaikan relasi rekursi, atau paling tidak tentukan orde kenaikannya.
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
20 / 48
Outline Quiz I Quiz I 2 Review 3 Pendahuluan Pendahuluan Dikatkan bentuk rekursif: Tujuan dibuat rekursif: Syarat bentuk rekursif: 4 Relasi Rekurens Faktorial Relasi Rekurens Faktorial 5 Relasi Rekurens Hanoi Tower Relasi Rekurens Hanoi Tower 6 Relasi Rekursi Min Max Relasi Rekursi Min Max 7 Tambahan Tambahan Cara coba-coba 8 Dr. PutuReferences Harry Gunawan (Telkom University) Design and Analysis of Algorithm 1
21 / 48
Hanoi Tower
Selanjutnya adalah contoh masalah yang dikenal sebagai the Tower of Hanoi puzzle. Dalam permainan ini, pemain diberikan tiga buah batu yang memiliki ukuran berbeda. Batu-batu tersebut selanjutnya disusun berdasarakan ukuran, yakni ukuran terbesar berada paling bawah.
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
22 / 48
Hanoi Tower
Selanjutnya adalah contoh masalah yang dikenal sebagai the Tower of Hanoi puzzle. Dalam permainan ini, pemain diberikan tiga buah batu yang memiliki ukuran berbeda. Batu-batu tersebut selanjutnya disusun berdasarakan ukuran, yakni ukuran terbesar berada paling bawah. Tujuan dari permainan ini adalah, memindahkan tumpukan batu di tiang A ke B tanpa mengubah posisi batu besar paling bawah. Disediakan tiang C sebagai perantara.
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
22 / 48
Hanoi Tower
Figure : Solusi rekursif untuk masalah Menara Hanoi.
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
23 / 48
Hanoi Tower
Procedure Hanoi (input n, A, B, C:integer) Algoritma If n=1 then Write (Pindahkan piringan dari,A,ke,B) Else Hanoi(n-1,A,C,B) Writeln(Pindahkan piringan dari,A,ke,B) Hanoi(n-1,C,B,A) Endif
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
24 / 48
Hanoi Tower
Operasi dasar dari algoritma Hanoi adalah ’Writeln()’, sehingga dengan jelas bahwa pergerakan T (n) bergantung pada n yang relasi rekursinya berupa: T (n) = T (n − 1) + 1 + T (n − 1) ∀n > 1 (5.1) Dengan kondisi awal T (1) = 1, maka relasi rekursinya ditulis ulang dalam bentuk: ( 1, n=1 T (n) = (5.2) 2T (n − 1) + 1, n > 1
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
25 / 48
Hanoi Tower Maka kompleksitas waktunya dapat dihitung sebagai berikut: T (n) = 2T (n − 1) + 1 = 2(2T (n − 2) + 1) + 1 = 22 T (n − 2) + 2 + 1 = 22 (2T (n − 3) + 1) + 2 + 1 = 23 T (n − 3) + 22 + 2 + 1 = ··· = 2n−2 (2T (n − (n − 1)) + 1) + 2n−3 + · · · + 22 + 2 + 1 = 2n−2 · 2T (1) + 2n−2 + 2n−3 + · · · + 22 + 2 + 1 = 2n−1 + 2n−2 + 2n−3 + · · · + 22 + 2 + 1 = 2n − 1 Sehingga T (n) = 2n − 1 → O(2n ).
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
26 / 48
Outline Quiz I Quiz I 2 Review 3 Pendahuluan Pendahuluan Dikatkan bentuk rekursif: Tujuan dibuat rekursif: Syarat bentuk rekursif: 4 Relasi Rekurens Faktorial Relasi Rekurens Faktorial 5 Relasi Rekurens Hanoi Tower Relasi Rekurens Hanoi Tower 6 Relasi Rekursi Min Max Relasi Rekursi Min Max 7 Tambahan Tambahan Cara coba-coba 8 Dr. PutuReferences Harry Gunawan (Telkom University) Design and Analysis of Algorithm 1
27 / 48
Min Max Perhatikan algoritma mencari data maksimum dan minimum dari suatu tabel berikut procedure MinMaks2(input A : TabelInt, i, j : integer, output { Mencari nilai maksimum dan minimum di dalam tabel A yang berukuran n elemen secara Divide and Conquer. Masukan: tabel A yang sudah terdefinisi elemen- elemennya Keluaran: nilai maksimum dan nilai minimum tabel } Deklarasi min1, min2, maks1, maks2 : integer if i=j then min <-- A[i] maks <-- A[i] else Dr. Putu Harry Gunawan (Telkom University)
{Jika satu elemen}
Design and Analysis of Algorithm
28 / 48
Min Max
else if (i = j-1) then if A[i] < A[j] then maks <-- A[j] min <-- A[i] else maks <-- A[i] min <-- A[j] endif
Dr. Putu Harry Gunawan (Telkom University)
{Jika dua elemen}
Design and Analysis of Algorithm
29 / 48
Min Max else k=(i+j) div 2 { bagidua tabel pada posisi k } MinMaks2(A, i, k, min1, maks1) MinMaks2(A, k+1, j, min2, maks2) if min1 < min2 then min <-- min1 else min <-- min2 endif if maks1<maks2 then maks <-- maks2 else maks <-- maks2 endif endif endif Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
30 / 48
Min Max
Dari algoritma tersebut dapat dibuat relasi rekursi sebagai berikut: n=1 0, T (n) = 1, n=2 2T (n/2) + 2, n > 2
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
(6.1)
31 / 48
Min Max Sehingga waktu asismtotiknya bisa dicari yaitu: Misal n = 2k , sehingga T (n) = 2T (n/2) + 2 = 2(2T (n/4) + 2) + 2 = 4T (n/4) + 4 + 2 = 4(2T (n/8) + 2) + 4 + 2 = 8T (n/8) + 8 + 4 + 2 = 23 T (2k /23 ) + 8 + 4 + 2 = 23 T (2k−3 ) + 23 + 22 + 21 ,
n = 2k
= ··· = 2k−1 T (2) + 2k−1 + · · · + 22 + 21 = 2k−1 +
k−1 X
2i
i=1
= 2k−1 + 2k − 2 Selanjutnya bawa ke bentuk n atau k =2 log n, Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
32 / 48
Min Max
T (n) = 2k−1 + 2k − 2 2
2
= 2 log n−1 + 2 log n − 2 n = +n−2 2 3n = − 2 ∈ O(n) 2
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
33 / 48
Outline Quiz I Quiz I 2 Review 3 Pendahuluan Pendahuluan Dikatkan bentuk rekursif: Tujuan dibuat rekursif: Syarat bentuk rekursif: 4 Relasi Rekurens Faktorial Relasi Rekurens Faktorial 5 Relasi Rekurens Hanoi Tower Relasi Rekurens Hanoi Tower 6 Relasi Rekursi Min Max Relasi Rekursi Min Max 7 Tambahan Tambahan Cara coba-coba 8 Dr. PutuReferences Harry Gunawan (Telkom University) Design and Analysis of Algorithm 1
34 / 48
Tambahan
Untuk mengetahui kompleksitas bentuk rekursif, maka T (n) harus diubah dalam bentuk yang bukan rekursif. Bagaimana mengubah bentuk rekursif ke non rekursif ? Ada dua macam cara untuk menyelesaikan masalah ini, yaitu cara coba-coba dan dengan persamaan karakteristik : 1
Cara coba-coba (deret).
2
Metode dengan persamaan karakteristik
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
35 / 48
Outline Quiz I Quiz I 2 Review 3 Pendahuluan Pendahuluan Dikatkan bentuk rekursif: Tujuan dibuat rekursif: Syarat bentuk rekursif: 4 Relasi Rekurens Faktorial Relasi Rekurens Faktorial 5 Relasi Rekurens Hanoi Tower Relasi Rekurens Hanoi Tower 6 Relasi Rekursi Min Max Relasi Rekursi Min Max 7 Tambahan Tambahan Cara coba-coba 8 Dr. PutuReferences Harry Gunawan (Telkom University) Design and Analysis of Algorithm 1
36 / 48
Metode Coba-Coba
Cara ini dilakukan dengan menentukan pola deret yang terbentuk (cara deret). Contoh untuk cara ini telah ditunjukkan dalam mencari kompleksitas waktu untuk beberapa bentuk rekursif sebelumnya. Cara ini agak sulit dan perlu pengalaman.
Example Tentukan waktu rekursi berikut: ( a, n = 1, 2 T (n) = T (n − 1) + T (n − 2) + b,
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
n≥3
(7.1)
37 / 48
Metode Coba-Coba Solusi dari contoh diatas dengan cara coba coba adalah sebagi berikut: T (1) = T (2) = a T (3) = T (2) + T (1) + b = a + a + b = 2a + b T (4) = T (3) + T (2) + b = (2a + b) + a + b = 3a + 2b T (5) = T (4) + T (3) + b = (3a + 2b) + (2a + b) + b = 5a + 4b T (6) = T (5) + T (4) + b = (5a + 4b) + (3a + 2b) + b = 8a + 7b ··· Sangat sulit untuk bisa diformulasikan. Sehingga harus mencari cara lain utntuk menghitung waktu algoritma. Salah satu caranya adalah dengan menggunakan metode karakteristik. Metode ini akan dijelaskan pada peretemuan selanutnya.
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
38 / 48
Outline Quiz I Quiz I 2 Review 3 Pendahuluan Pendahuluan Dikatkan bentuk rekursif: Tujuan dibuat rekursif: Syarat bentuk rekursif: 4 Relasi Rekurens Faktorial Relasi Rekurens Faktorial 5 Relasi Rekurens Hanoi Tower Relasi Rekurens Hanoi Tower 6 Relasi Rekursi Min Max Relasi Rekursi Min Max 7 Tambahan Tambahan Cara coba-coba 8 Dr. PutuReferences Harry Gunawan (Telkom University) Design and Analysis of Algorithm 1
39 / 48
References
References 1
Anany, L. (2003). Introduction to the design and analysis of algorithms. Villanova University.
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
40 / 48
Outline Quiz I Quiz I 2 Review 3 Pendahuluan Pendahuluan Dikatkan bentuk rekursif: Tujuan dibuat rekursif: Syarat bentuk rekursif: 4 Relasi Rekurens Faktorial Relasi Rekurens Faktorial 5 Relasi Rekurens Hanoi Tower Relasi Rekurens Hanoi Tower 6 Relasi Rekursi Min Max Relasi Rekursi Min Max 7 Tambahan Tambahan Cara coba-coba 8 Dr. PutuReferences Harry Gunawan (Telkom University) Design and Analysis of Algorithm 1
41 / 48
Exercise 1
Selesaikan relasi rekurensi berikut: ( 0, T (n) = T (n − 1) + 5,
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
n=1 n≥2
(9.1)
42 / 48
Exercise 2
Selesaikan relasi rekurensi berikut: ( 4, T (n) = 3T (n − 1),
Dr. Putu Harry Gunawan (Telkom University)
n=1 n≥2
Design and Analysis of Algorithm
(9.2)
43 / 48
Exercise 3
Selesaikan relasi rekurensi berikut: ( 0, T (n) = T (n − 1) + n,
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
n=0 n>0
(9.3)
44 / 48
Exercise 4
Selesaikan relasi rekurensi berikut: ( 1, T (n) = T (n/2) + n,
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
n=1 n>1
(9.4)
45 / 48
Exercise 5
Selesaikan relasi rekurensi berikut: ( 1, T (n) = T (n/3) + 1,
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
n=1 n>1
(9.5)
46 / 48
Exercise 6
Diberikan algoritma untuk menghitung jumlah pangkat 3 dari deret, S(n) = n3 + (n − 1)3 + · · · + 23 + 13 . ALGORITHM S(n) //Input: A positive integer n //Output: The sum of the first n cubes if n = 1 return 1 else return S(n - 1) + n * n * n
1
Tentukan relasi rekursi dari algoritma di atas dan selesaikan.
2
Bandingkan dengan algoritma yang tidak ditulis dengan rekursif.
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
47 / 48
The end of week 4
Thank you for your attention!
Dr. Putu Harry Gunawan (Telkom University)
Design and Analysis of Algorithm
48 / 48