Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Algoritma dan Struktur Data

Presentasi serupa


Presentasi berjudul: "Algoritma dan Struktur Data"— 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 Metrik untuk ukuran input
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.

4 Pada algoritma iteratif adalah kode pada loop terdalam
Basic operation 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 return n * factorial (n-1),

5 Banyaknya eksekusi basic operation
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. return n * factorial (n-1),

6 Banyaknya eksekusi basic operation
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

7 Case 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

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

9 Perhitungan efisiensi waktu
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.

10 Perhitungan efisiensi waktu
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

11 Perhitungan efisiensi waktu
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

12 Perhitungan efisiensi waktu
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


Download ppt "Algoritma dan Struktur Data"

Presentasi serupa


Iklan oleh Google