21
Analisa algoritma rekursif

Analisa algoritma rekursif

  • Upload
    nelson

  • View
    177

  • Download
    16

Embed Size (px)

DESCRIPTION

Analisa 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?. - PowerPoint PPT Presentation

Citation preview

Page 1: Analisa algoritma rekursif

Analisa algoritma rekursif

Page 2: Analisa algoritma rekursif

Fungsi yang memanggil dirinya sendiriSebuah fungsi f juga merupakan fungsi

rekursif jika memanggil fungsi lain g dan di dalam g terdapat pemanggilan f

Apa itu fungsi rekursif?

Page 3: Analisa algoritma rekursif

Permasalahan yang dapat diselesaikan oleh fungsi rekursif memiliki sifatMemiliki 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 2 berulang-ulang, recursive cases akan mendekati dan sampai pada base case. Contoh: n! (n-1)! (n-2)! . . . 1!, 0!.

Apa itu fungsi rekursif?

Page 4: Analisa algoritma rekursif

Apa itu fungsi rekursif?

Page 5: Analisa algoritma rekursif

if this base casesolve it

elseredefine the problem using recursion case

Format fungsi rekursif

Page 6: Analisa algoritma rekursif

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

Page 7: Analisa algoritma rekursif

Latihan

Buatlah fungsi rekursif untuk menghitung nilai Xn

Buat pohon rekursif untuk 45

Page 8: Analisa algoritma rekursif

Jawaban

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?

Page 9: Analisa algoritma rekursif

Latihan

Buatlah fungsi rekursif untuk menghitung bilangan fibonacci ke n

Buat pohon rekursif untuk fib(4)

Page 10: Analisa algoritma rekursif

JawabanAlgorithm fib(n)

//algoritma untuk menghitung bilangan fibonacci ke n

//secara rekursif

//input : n

//output : bilangan fibonacci ke n

if n = 0 or n = 1

return n

else return (fib(n - 1) + fib(n - 2))

Pohon rekursifnya?

Page 11: Analisa algoritma rekursif

Analisa Efisiensi Algoritma Rekursif

Algorithm pangkat(X, n)//algoritma untuk menghitung nilai Xn secara rekursif//input : integer positif X dan n//output : nilai Xnif n = 1

return Xelse return (X * pangkat(X, n-1))

Analisalah efisiensi waktu algoritma rekursif

Page 12: Analisa 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

Page 13: Analisa algoritma rekursif

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

1 : Metrik untuk ukuran input

Page 14: Analisa algoritma rekursif

Pada algoritma rekursif merupakan salah satu operasi pada kondisi seleksi base case atau bagian recursive case

Basic operationnya dipilih = yang dilakukan 1 kali setiap kali fungsi rekursif dipanggil

2 : Basic operation

if n = 1

Page 15: Analisa algoritma rekursif

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

3 : Case

Page 16: Analisa algoritma rekursif

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 (A, B-1).

Hal ini menyebabkan secara internal basic operation dieksekusi lagi.

Berapa kali banyaknya basic operation dieksekusi untuk input n?

4 : Persamaan rekursif banyaknya eksekusi basic operation

if n = 1

Page 17: Analisa algoritma rekursif

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) = 1, base case

4 : Persamaan rekursif banyaknya eksekusi basic operation

Page 18: Analisa algoritma rekursif

Untuk mengetahui kelas efisiensi waktunya kita harus menemukan persamaan langsung (non recursive) dari C(n)

4 : Persamaan rekursif banyaknya eksekusi basic operation

Page 19: Analisa algoritma rekursif

Menggunakan metode backward substitution, cari pola dari C(n) :C(n) = C(n - 1) + 1C(n) = (C(n - 2) + 1) + 1 = C(n) = C(n - 2) + 2C(n) = (C(n - 3) + 1) + 2 = C(n) = C(n - 3) + 3dst

Pola atau bentuk umum yang didapatkan adalah C(n) = C(n - i) + i.

Perhitungan efisiensi waktu

Page 20: Analisa algoritma rekursif

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

Perhitungan efisiensi waktu

Page 21: Analisa algoritma rekursif

Subtitusi tersebut mensyaratkan C(n - i) = C(1) ataun – i = 1i = n – 1nilai i = n – 1 disubtitusikan ke bentuk umum

C(n) = i + 1 sehinggaC(n) = n – 1 + 1C(n) = nC(n) merupakan anggota kelas n

Apa artinya? Ingat materi pertemuan sebelumnya

Perhitungan efisiensi waktu