• Tidak ada hasil yang ditemukan

Design and Analysis of Algorithm

N/A
N/A
Protected

Academic year: 2021

Membagikan "Design and Analysis of Algorithm"

Copied!
57
0
0

Teks penuh

(1)

Design and Analysis of Algorithm

Week 4: Kompleksitas waktu algoritma rekursif part 1

Dr. Putu Harry Gunawan1

1Department of Computational Science

School of Computing Telkom University

(2)

Outline

1 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 References References 9 Exercise Exercise

(3)

Outline

1 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 References References 9 Exercise Exercise

(4)

Exercise 1

Quiz I

Kuis I dimulai selama 45 menit.

(5)

Exercise 1

Buatlah algoritma rekursif untuk menghitung faktorial! Contoh

10! = 10 × 9 × · · · × 2 × 1 (2.1)

(6)

Exercise 2

Buatlah algoritma rekursif untuk menentukan nilai baris fibonanci ke-n Contoh: Baris fibonanci ke 6

1, 1, 2, 3, 5, 8 (2.2)

(7)

Outline

1 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 References References 9 Exercise Exercise

(8)

Pendahuluan

Pada bab ini, akan dibahas mengenai menghitung waktu asismtotik untuk algoritma rekursif. Kita mulai dengan definisi-definisi algoritma rekursif:

(9)

Outline

1 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 References References 9 Exercise Exercise

(10)

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.

(11)

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.

(12)

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.

(13)

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.

(14)

Outline

1 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 References References 9 Exercise Exercise

(15)

Rekursif

Tujuan dibuat rekursif:

1 menyederhanakan penulisan program 2 menggantikan bentuk iterasi

(16)

Rekursif

Tujuan dibuat rekursif:

1 menyederhanakan penulisan program

2 menggantikan bentuk iterasi

(17)

Rekursif

Tujuan dibuat rekursif:

1 menyederhanakan penulisan program 2 menggantikan bentuk iterasi

(18)

Outline

1 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 References References 9 Exercise Exercise

(19)

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.

(20)

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.

(21)

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.

(22)

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.

(23)

Outline

1 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 References References 9 Exercise Exercise

(24)

Faktorial

Perhatikan algoritma berikut:

Function Factorial(input n: integer) -> integer Algoritma

if n=0 then return 1 else

return (n * Factorial(n-1)) endif

(25)

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

(26)

Faktorial

Sehingga relasi rekursinya dapat dibentuk menjadi:

T (n) = (

0, n = 0,

T (n − 1) + 1, n > 0. (4.1)

(27)

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

(28)

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.

(29)

Outline

1 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 References References 9 Exercise Exercise

(30)

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.

(31)

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.

(32)

Hanoi Tower

Figure : Solusi rekursif untuk masalah Menara Hanoi.

(33)

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

(34)

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:

T (n) = (

1, n = 1

2T (n − 1) + 1, n > 1 (5.2)

(35)

Hanoi Tower

Maka kompleksitas waktunya dapat dihitung sebagai berikut: T (n) = 2T (n − 1) + 1 = 2(2T (n − 2) + 1) + 1 = 22T (n − 2) + 2 + 1 = 22(2T (n − 3) + 1) + 2 + 1 = 23T (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).

(36)

Outline

1 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 References References 9 Exercise Exercise

(37)

Min Max

Perhatikan algoritma mencari data maksimum dan minimum dari suatu tabel berikut

procedure MinMaks2(input A : TabelInt, i, j : integer, output min, maks : integer) { 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 {Jika satu elemen}

min <-- A[i] maks <-- A[i] else

(38)

Min Max

else

if (i = j-1) then {Jika dua elemen} if A[i] < A[j] then

maks <-- A[j] min <-- A[i] else maks <-- A[i] min <-- A[j] endif

(39)

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

(40)

Min Max

Dari algoritma tersebut dapat dibuat relasi rekursi sebagai berikut:

T (n) =      0, n = 1 1, n = 2 2T (n/2) + 2, n > 2 (6.1)

(41)

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 = 23T (2k/23) + 8 + 4 + 2 = 23T (2k−3) + 23+ 22+ 21, n = 2k = · · · = 2k−1T (2) + 2k−1+ · · · + 22+ 21 = 2k−1+ k−1 X i =1 2i = 2k−1+ 2k − 2

Selanjutnya bawa ke bentuk n atau k =2log n,

(42)

Min Max

T (n) = 2k−1+ 2k − 2 = 22log n−1+ 22log n− 2 = n 2 + n − 2 = 3n 2 − 2 ∈ O(n)

(43)

Outline

1 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 References References 9 Exercise Exercise

(44)

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

(45)

Outline

1 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 References References 9 Exercise Exercise

(46)

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: T (n) =

(

a, n = 1, 2

T (n − 1) + T (n − 2) + b, n ≥ 3 (7.1)

(47)

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.

(48)

Outline

1 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 References References 9 Exercise Exercise

(49)

References

References

1 Anany, L. (2003). Introduction to the design and analysis of algorithms. Villanova University.

(50)

Outline

1 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 References References 9 Exercise Exercise

(51)

Exercise 1

Selesaikan relasi rekurensi berikut: T (n) =

(

0, n = 1

T (n − 1) + 5, n ≥ 2 (9.1)

(52)

Exercise 2

Selesaikan relasi rekurensi berikut: T (n) =

(

4, n = 1

3T (n − 1), n ≥ 2 (9.2)

(53)

Exercise 3

Selesaikan relasi rekurensi berikut: T (n) =

(

0, n = 0

T (n − 1) + n, n > 0 (9.3)

(54)

Exercise 4

Selesaikan relasi rekurensi berikut: T (n) =

(

1, n = 1

T (n/2) + n, n > 1 (9.4)

(55)

Exercise 5

Selesaikan relasi rekurensi berikut: T (n) =

(

1, n = 1

T (n/3) + 1, n > 1 (9.5)

(56)

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.

(57)

The end of week 4

Thank you for your attention!

Gambar

Figure : Solusi rekursif untuk masalah Menara Hanoi.

Referensi

Dokumen terkait

Menimbang, bahwa berdasarkan pemeriksaan setempat, Majelis Hakim berpendapat gambar lokasi tanah dalam surat ukur ketiga Sertipikat Hak Milik milik Penggugat tidak

Salah satu postulah Hill yang menyatakan bahwa penyebab penyakit harus konsisten dengan ilmu biologi dan medis, adalah..

Menyiapkan tempat tidur dengan tepat dan sesuai dengan prosedur yang ada merupakan bagian penting dari pekerjaan seorang perawat karena berhubungan dengan kebutuhan dasar

Dengan demikian, daripada kita terlibat pada perdebatan yang mana di antara dua pendapat yang merupakan pendapat yang benar (yang obyektif), lebih baik kita

Pelaksanaan deskripsi suatu jenis tanah dan batuan yang langsung diperoleh di lapangan akan didasarkan pada hasil identifikasi dan klasifikasi tanah dan batuan

Adapun hal-hal yang dilakukan pada analisis total sulfur di dalam sampel feed gas dengan menggunakan dua standar adalah pengukuran linearity, akurasi yaitu persen recovery dan

Jenis data dalam penelitian ini adalah data kualitatif mengenai proses perencanaan yang dilakukan Balai Diklat Keagamaan Bandung dalam menyelenggarakan program

Rata-rata jangkauan tangan operator atau pekerja “es puter” yaitu 69,27 cm, sedangkan lebar dari mesin “es puter” adalah 40 cm, lebar dari mesin “es puter”