• Tidak ada hasil yang ditemukan

analisa efisiensi algoritma rekursif

N/A
N/A
Protected

Academic year: 2022

Membagikan "analisa efisiensi algoritma rekursif"

Copied!
22
0
0

Teks penuh

(1)

Desain dan Analisis Algoritma

Pertemuan 4

Analisa Efisiensi Algoritma Rekursif

(2)

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?

(3)

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 2 berulang-ulang, recursive cases akan mendekati dan sampai pada base case. Contoh: n!  (n-1)!  (n-2)!  . . . 1!, 0!.

Apa itu fungsi rekursif?

(4)

Apa itu fungsi rekursif?

(5)

if this base case solve it

else

redefine the problem using recursion case

Format fungsi rekursif

(6)

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

(7)

Latihan

 Buatlah fungsi rekursif untuk menghitung nilai Xn

 Buat pohon rekursif untuk 45

(8)

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?

(9)

Latihan

 Buatlah fungsi rekursif untuk menghitung bilangan fibonacci ke n

 Buat pohon rekursif untuk fib(4)

(10)

Jawaban

Algorithm 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?

(11)

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

(12)

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

(13)

 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

(14)

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

(15)

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

(16)

 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

(17)

 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

(18)

Untuk mengetahui kelas efisiensi waktunya kita harus menemukan

persamaan langsung (non recursive) dari C(n)

4 : Persamaan rekursif banyaknya eksekusi basic operation

(19)

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

Perhitungan efisiensi waktu

(20)

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 + 1

Perhitungan efisiensi waktu

(21)

 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 + 1 sehingga

C(n) = n – 1 + 1 C(n) = n

C(n) merupakan anggota kelas n

 Apa artinya? Ingat materi pertemuan sebelumnya

Perhitungan efisiensi waktu

(22)

Analisalah efisiensi waktu algoritma fibonacci

Analisalah efisiensi waktu algoritma tower of hanoi

Tugas individu ditulis di kertas.

Dikumpulkan pada pertemuan 5

dipresentasikan oleh mahasiswa dengan nomor_urut mod 10 == 1

Tugas

Referensi

Dokumen terkait

The result of previous research showed that the influence of earnings management to the value of firm, as well as the application of IFRS to the value of firm, but not yet

Penelitian ini bertujuan untuk mengetahui perbedaan signifikan pada rasio ROA, ROE, NPM dan BOPO terhadap kinerja keuangan PT. Bank Rakyat Indonesia Syariah tahun 2012-2013

Lembaga Tabungan Haji (LTH) yang telah dipraktekkan di Malaysia sejak tahun 1962 dipandang sangat tepat.. negeri ini mempunyai keinginan yang kuat untuk beribadah

Di alam, jamur saprofit berperan sebagai pengurai (dekomposer) yang menguraikan kembali sisasisa tubuh organisme menjadi zat-zat hara dalam tanah. Jamur parasit

Berdasarkan perhitungan statistik mengunakan program bantuan perhitungan statistic menggunkan program bantuan perhitungan statistik SPSS versi 16.0 didapat probability signifikan

Surge pada Centrifugal Gas Compressor adalah merupakan suatu kondisi dimana terjadi perubahan flow minimum suatu gas sesuai dengan yang dibutuhkan oleh

Poros memutarkan rotor dengan idle speed  =((rpm sampai putaran men/apai !)((rpm. Putaran tersebut akan menghasilkan arus listrik akibat proses elektromagneti/ antara rotor 

Meski begitu perusahaan telah berhasil menerapkan tiga prinsip yang terdapat dalam ISO 9001:2015 diantaranya prinsip fokus pelanggan, prinsip improvement