0% menganggap dokumen ini bermanfaat (0 suara)
889 tayangan33 halaman

Desain Dan Analisis Algoritma

Dokumen tersebut membahas algoritma rekursif dan analisis efisiensi waktunya. Terdapat penjelasan tentang format fungsi rekursif, contoh soal dan latihan, serta langkah-langkah untuk menganalisis efisiensi waktu algoritma rekursif meliputi penentuan ukuran masukan, operasi dasar, relasi rekursif, dan rumus akhir.

Diunggah oleh

Mc Grey Knight
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
889 tayangan33 halaman

Desain Dan Analisis Algoritma

Dokumen tersebut membahas algoritma rekursif dan analisis efisiensi waktunya. Terdapat penjelasan tentang format fungsi rekursif, contoh soal dan latihan, serta langkah-langkah untuk menganalisis efisiensi waktu algoritma rekursif meliputi penentuan ukuran masukan, operasi dasar, relasi rekursif, dan rumus akhir.

Diunggah oleh

Mc Grey Knight
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 33

Design and Analysis Algorithm

Pertemuan 03

Contents

3 1 2 3

Fungsi Rekursif Format Fungsi Rekursif Analisa Efisiensi Algoritma Rekursif

Apa itu fungsi rekursif?


Fungsi yang memanggil dirinya sendiri Sebuah fungsi f juga merupakan fungsi rekursif
jika memanggil fungsi lain g dan di dalam g terdapat pemanggilan f

Apa itu fungsi rekursif?


Permasalahan yang dapat diselesaikan oleh fungsi rekursif memiliki sifat
Memiliki kasus sederhana yang dapat langsung diselesaikan (base case). Contoh 0! = 1. Kasus yang kompleks dapat diuraikan menjadi kasus yang identik dengan ukuran yang lebih kecil (recursive cases). Contoh: n! = n * (n-1)! Dengan menerapkan karakteristik-karakteristik berulang-ulang, recursive cases akan mendekati dan sampai pada base case. Contoh: n! (n-1)! (n-2)! . . . 1!, 0!.
4

Apa itu fungsi rekursif?

Format Fungsi Rekursif


if this base case solve it else redefine the problem using recursion case

Format Fungsi Rekursif


Cabang if berisi base case, sedangkan bagian
elsenya berisi recursive case

Agar rekursi dapat berhenti input recursive


cases harus mendekati base case di setiap pemanggilan fungsi rekursif

Latihan
Buatlah fungsi rekursif untuk menghitung nilai
Xn

Buat pohon rekursif untuk 45

Algorithm pangkat(X, n) //algoritma untuk menghitung nilai Xn secara rekursif //input : integer positif X dan n //output : nilai Xn if n = 1 return X else return (X * pangkat(X, n-1))

Pohon rekursifnya?
9

Analisa Efisiensi Algoritma Rekursif


Algorithm pangkat(X, n) //algoritma untuk menghitung nilai Xn secara rekursif //input : integer positif X dan n //output : nilai Xn if n = 1 return X else return (X * pangkat(X, n-1))

Analisalah efisiensi waktu algoritma


rekursif

10

Analisa Efisiensi Algoritma Rekursif


Langkah-langkah umum untuk menganalisa efisiensi waktu algoritma rekursif
1. Tentukan metrik untuk ukuran input 2. Identifikasi basic operation algoritma 3. Tentukan apakah untuk ukuran input yang sama
banyaknya eksekusi basic operation bisa berbeda

4. Tentukan persamaan rekursi yang menunjukkan berapa


kali basic operation dieksekusi

5. Cari rumus langsung yang menunjukkan banyaknya


basic operation dieksekusi
11

Analisa Efisiensi Algoritma Rekursif


1 : Metrik untuk ukuran input

Sesuatu pada input yang jika membesar, maka


banyaknya pemanggilan fungsi rekursif bertambah Pada kasus ini adalah nilai n. Jika n membesar, maka banyaknya komputasi atau pemanggilan fungsi rekursi bertambah Untuk memahaminya coba gambar pohon rekursifnya. Efisiensi dinyatakan sebagai fungsi dari n
12

Analisa Efisiensi Algoritma Rekursif


2 : Basic operation

Pada algoritma rekursif merupakan salah satu


operasi pada kondisi seleksi base case atau bagian recursive case
if n = 1

Basic operationnya dipilih = yang dilakukan 1


kali setiap kali fungsi rekursif dipanggil

13

Analisa Efisiensi Algoritma Rekursif


3 : Case

Apakah ada best case, average case dan worst


case? Untuk input n tertentu misal 5, recursion treenya selalu sama. Banyaknya komputasi / pemanggilan fungsi rekursi tetap. Tidak ada best case, average case dan worst case

14

Analisa Efisiensi Algoritma Rekursif


4 : Persamaan rekursif banyaknya eksekusi basic operation
Jika algoritma pangkat dieksekusi dengan input (X, n)
maka basic operation dieksekusi satu kali. Namun pada saat eksekusi, algoritma tersebut juga memanggil dirinya sendiri dengan input (X, n-1).

Basic Operation: if n = 1

Hal ini menyebabkan secara internal basic operation


dieksekusi lagi. Berapa kali banyaknya basic operation dieksekusi untuk input n?
15

Analisa Efisiensi Algoritma Rekursif


4 : Persamaan rekursif banyaknya eksekusi basic operation

Jika C(n) menyatakan banyaknya basic


operation dieksekusi untuk input berukuran n dan C(n - 1) menyatakan banyaknya basic operation dieksekusi untuk input berukuran n-1, Hubungan C(n) dan C(n - 1) dinyatakan dengan
C(n) = C(n - 1) + 1 untuk n > 1 (recursive case) C(1) = 0, base case
16

Analisa Efisiensi Algoritma Rekursif


5 : Rumus langsung yang menunjukkan banyaknya basic operation dieksekusi

Untuk mengetahui kelas efisiensi waktunya


kita harus menemukan persamaan langsung (non recursive) dari C(n)

17

Analisa Efisiensi Algoritma Rekursif


5 : Rumus langsung yang menunjukkan banyaknya basic operation dieksekusi

Menggunakan metode backward substitution, cari


pola dari C(n) : C(n) = C(n - 1) + 1 C(n) = (C(n - 2) + 1) + 1 = C(n) = C(n - 2) + 2 C(n) = (C(n - 3) + 1) + 2 = C(n) = C(n - 3) + 3 dst Pola atau bentuk umum yang didapatkan adalah C(n) = C(n - i) + i.
18

Analisa Efisiensi Algoritma Rekursif


5 : Rumus langsung yang menunjukkan banyaknya basic operation dieksekusi

Nilai initial condition C(1) disubtitusikan ke C(n i) pada bentuk umum C(n). C(n) = C(n - i) + i C(n) = C(1) + i C(n) = 0 + i C(n) = i

19

Analisa Efisiensi Algoritma Rekursif


5 : Rumus langsung yang menunjukkan banyaknya basic operation dieksekusi
Subtitusi tersebut mensyaratkan C(n - i) = C(1) atau
ni=1 i=n1 nilai i = n 1 disubtitusikan ke bentuk umum C(n) = i sehingga C(n) = n 1 C(n) merupakan anggota kelas n Apa artinya? Ingat materi pertemuan sebelumnya
20

Analisa Waktu Algoritma


Pada algoritma Xn Untuk bentuk rekursif, digunakan teknik perhitungan dengan relasi rekurens
Untuk kasus basis, tidak ada operasi perkalian (0) Untuk kasus rekurens, waktu dihitung dari jumlah perkalian (1) ditambah waktu untuk xn-1

21

Analisa Waktu Algoritma


Relasi rekurens
T(n)=0 untuk n=1 T(n)=T(n-1)+1 untuk n>1

Analisa waktu:
T(n) = T(n - 1) + 1 T(n) = (T(n - 2) + 1) + 1 = T(n - 2) + 2 T(n) = (T(n - 3) + 1) + 2 = T(n - 3) + 3

T(n) = T(1) + (n-1) T(n) = 0 + n - 1 = n - 1 times Anggota kelas n


22

Latihan 1
Buatlah fungsi rekursif untuk menghitung nilai
faktorial bilangan n

Buat pohon rekursif untuk faktorial(5) Analisalah efisiensi waktu algoritmanya

23

Latihan 2
Buatlah fungsi rekursif untuk menghitung
permasalahan Menara Hanoi

Bagaimana memindahkan piringan di A ke


sebuah tiang B; setiap kali hanya satu piringan yang boleh dipindahkan, tetapi tidak boleh ada piringan besar di atas piringan kecil. Ada tiang perantara C
Buat Algoritmanya Analisalah efisiensi waktu algoritmanya
24

Algorithm Hanoi(n, A, B, C) if n = 1 pindahkan piringan A ke B else Hanoi(n-1,A,C,B) pindahkan piringan A ke B Hanoi(n-1,C,B,A) end if

Analisis efisiensi algoritma ?

25

Relasi rekurens :
T(n) = 1 untuk n=1 T(n) = 2T(n-1) + 1 untuk n>1

Rumus di bawah ini akan membantu pengerjaan Tower


Hanoinya

26

Latihan Soal
Ini ada beberapa soal buat latihan biar terbiasa
mengerjakan soal2 perhitungan estimasi. Mohon dikerjakan

27

Soal 1
Buatlah fungsi rekursif untuk menghitung bilangan
fibonacci ke n

Buat pohon rekursif untuk fib(4)

Dari pohon rekurisfnya hitung estimasi waktunya Buat algoritma non rekursif untuk menghitung bilangan
fibonacci ke n, hitung estimasi waktunya lalu bandingkan dengan algoritma rekursif di atas
28

Soal 2
Desainlah algoritma untuk menghitung 2n untuk
semua n integer positif berdasarkan konsep 2n

= 2n1 + 2n1.

Buatlah persamaan rekursifnya lalu hitung


estimasi waktunya, basic operationya adalah penambahan. Gambarkan gambar pohon rekursifnya dan hitung jumlah pemanggilan yang dilakukan n=4 Apakah algoritma ini bagus?

29

Soal 3

Apa tujuan dari Algoritma ini? Buatlah persamaannya lalu hitung estimasi
waktu ekseskusinya jika basic operationya adalah multiplication

30

Soal 4
Perhatikan algoritma rekursif untuk menghitung S(n) =
13 + 23 + . . . + n3.

Buatlah persamaannya lalu hitung estimasi waktu


ekseskusi basic operationya(multiplication) Buat algortima non rekursif untuk fungsi tersebut, hitung estimasi waktunya lalu bandingkan dengan algoritma rekursif
31

Soal 5

Buatlah persamaannya lalu hitung estimasi


waktu ekseskusi basic operationya (penambahan)

32

Click to edit subtitle style

Anda mungkin juga menyukai