Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Algoritma dan Struktur Data Pertemuan 4 Analisa Efisiensi Fungsi Rekursif.

Presentasi serupa


Presentasi berjudul: "Algoritma dan Struktur Data Pertemuan 4 Analisa Efisiensi Fungsi Rekursif."— Transcript presentasi:

1 Algoritma dan Struktur Data Pertemuan 4 Analisa Efisiensi Fungsi Rekursif

2 Recursive Factorial Recursive version int factorial (int n) { if (n == 0) return 1; else return n * factorial (n-1); }

3  Jika sesuatu pada input lebih besar, maka komputasi bertambah  Pada sequential search adalah banyaknya elemen array  Pada kasus ini adalah nilai n. Jika n membesar, maka banyaknya komputasi atau pemanggilan fungsi rekursi bertambah  Untuk memahaminya coba gambar pohon rekursifnya. Metrik untuk ukuran input

4  Pada algoritma iteratif adalah kode pada loop terdalam  Pada algoritma rekursif merupakan salah satu operasi pada recursive casenya  Basic operationnya adalah * yang dilakukan 1 kali untuk setiap pemanggilan fungsi rekursif Basic operation return n * factorial (n-1),

5  Jika algoritma faktorial dieksekusi dengan input n, maka basic operation dieksekusi satu kali. Namun pada saat eksekusi, algoritma tersebut juga memanggil dirinya sendiri dengan input n- 1.  Hal ini menyebabkan secara internal basic operation dieksekusi lagi. Proses rekursi dilakukan terus selama nilai n > 1. Banyaknya eksekusi basic operation return n * factorial (n-1),

6 Jika C(n) menyatakan banyaknya basic operation dieksekusi untuk input n dan C(n - 1) menyatakan banyaknya basic operation dieksekusi untuk input n-1, maka hubungan antara C(n) dan C(n - 1) dinyatakan dengan C(n) = C(n - 1) + 1 untuk n > 1 C(1) = 0, base case Banyaknya eksekusi basic operation

7  Apakah ada best case, average case dan worst case?  Tidak ada  Untuk input tertentu misal 5, recursion treenya selalu sama. Sehingga banyaknya komputasi yang dilakukan tetap.  Sehingga tidak ada best case, average case dan worst case Case

8  Untuk mengetahui efisiensi waktunya kita harus menemukan persamaan langsung (non recursive) dari C(n) Perhitungan efisiensi waktu

9  Menggunakan metode backward substitution, dicari 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. Perhitungan efisiensi waktu

10  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) = i Perhitungan efisiensi waktu

11  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) = i Perhitungan efisiensi waktu

12  Subtitusi tersebut mensyaratkan C(n - i) = C(1) atau n – i = 1 i = n – 1 nilai i = n – 1 disubtitusikan ke bentuk umum C(n) = i sehingga C(n) = n – 1 C(n) Є O(n)  Apa artinya? Ingat materi pertemuan sebelumnya Perhitungan efisiensi waktu


Download ppt "Algoritma dan Struktur Data Pertemuan 4 Analisa Efisiensi Fungsi Rekursif."

Presentasi serupa


Iklan oleh Google