Kompleksitas Waktu untuk Algoritma
Rekursif
ZK Abdurahman Baizal
Algoritma Rekursif
Bentuk rekursif :
suatu subrutin/fungsi/ prosedur yang memanggil dirinya sendiri.
Bentuk dimana pemanggilan subrutin terdapat dalam body subrutin
Dengan rekursi, program akan lebih mudah
dilihat
Bentuk rekursi bertujuan untuk :
menyederhanakan penulisan program
menggantikan bentuk iterasi
Syarat bentuk rekursif:
ada kondisi terminal (basis)
ada subroutine call yang melibatkan
parameter yang nilainya menuju kondisi
terminal (recurrence)
Menghitung kompleksitas bentuk rekursif
Untuk bentuk rekursif, digunakan teknik
perhitungan kompleksitas dengan relasi
rekurens
Menghitung faktorial
Function Faktorial (input n : integer) → integer {menghasilkan nilai n!, n tidak negatif}
Algoritma If n=0 then
Return 1 Else
Return ( n*faktorial (n-1) )
Endif
Menghitung faktorial
Kompleksitas waktu :
untuk kasus basis, tidak ada operasi perkalian → (0)
untuk kasus rekurens, kompleksitas waktu
diukur dari jumlah perkalian (1) ditambah
kompleksitas waktu untuk faktorial (n-1)
Menghitung faktorial
Jadi relasi rekurens :
0 ,
1 )
1 (
0 ,
0
n n
T n n
T
n 1T
n 1
T
2
2
2
1
1
T n T n
3
3
3
1
2
T n T n
= …..
= n + T(0)
= n + 0
Jadi T(n) = n → O(n)
Menghitung faktorial
Menara Hanoi
Legenda di Hanoi, tentang kisah pendeta
Budha bersama murid-muridnya.
Bagaimana memindahkan seluruh piringan (64 piringan)tersebut ke sebuah tiang yang lain (dari A ke B); setiap kali hanya satu piringan yang boleh dipindahkan, tetapi tidak boleh ada piringan besar di atas piringan kecil. Ada tiang perantara C.
B A C
Kata pendeta, jika pemindahan
berhasil dilakukan, maka DUNIA
KIAMAT !!!
Procedure Hanoi (input n, A, B, C:integer) Algoritma
If n=1 then
Write (‘Pindahkan piringan dari’,A,’ke’,B) Else
Hanoi(n-1,A,C,B)
Writeln(‘Pindahkan piringan dari’,A,’ke’,B) Hanoi(n-1,C,B,A)
Endif
Menara Hanoi
Relasi Rekurrens :
n 2 T n 1 1 1 , , n n 1 1
T
Menara Hanoi
n 1 2 T n 1
T
1 2 2 1 2 2 2
2
1
2
T n T n
1 2 3 1 2 2 2 3
2 2
1
2
2
3
T n T n
= …….
1 2 22 ... 2n2
2n1T
1
1 . 2 ...
2 2
1
2
1
n1 2
nMenara Hanoi
Menara Hanoi
Jadi
n
n
O n
T n T
2 1 2
n 2
n 1
T
Menara Hanoi
= kira-kira 600 milyar tahun (???!!!)
1
2
64 detik
= 10.446.744.073.709.551.615
adalah jumlah seluruh perpindahan piringan dari satu tiang ke tiang lainnya.
Jika perpindahan 1 piringan butuh waktu 1 detik, maka waktu yang dibutuhkan :
Persoalan Minimum &
Maksimum
procedure MinMaks2(input A : TabelInt, i, j : integer, output min, maks : integer)
{ Mencari nilai maksimum dan minimum di dalam tabel A yang berukuran n elemen secara Divide and Conquer.
Masukan: tabel A yang sudah terdefinisi elemen- elemennya
Keluaran: nilai maksimum dan nilai minimum tabel }
Deklarasi
min1, min2, maks1, maks2 : integer
Persoalan Minimum &
Maksimum
if i=j then { 1 elemen }
minAi maksAi else
if (i = j-1) then { 2 elemen } if Ai < Aj then
maksAj minAi else
maksAi minAj endif
Persoalan Minimum &
Maksimum
else { lebih dari 2 elemen }
k(i+j) div 2 { bagidua tabel pada posisi k } MinMaks2(A, i, k, min1, maks1)
MinMaks2(A, k+1, j, min2, maks2) if min1 < min2 then
minmin1 else
minmin2 endif
if maks1<maks2 then maksmaks2
else
maksmaks2 endif
Persoalan Minimum &
Maksimum
2 ,
2 )
2 / ( 2
2 ,
1
1 ,
0 )
(
n n
T
n n n
T
Relasi rekurrens:
Persoalan Minimum &
Maksimum
Penyelesaian:
Asumsi: n = 2k, dengan k bilangan bulat positif, maka
T(n) = 2T(n/2) + 2
= 2k – 1 T(2) +
1
1
2
k
i
i
= 2k – 1 1 + 2k – 2
= ...
= 4 (2T(n/8) + 2) + 4 + 2 = 8T(n/8) + 8 + 4 + 2
= 2(2T(n/4) + 2) + 2 = 4T(n/4) + 4 + 2
Persoalan Minimum &
Maksimum
2 2
2
2log 1
2log
n n= n/2 + n – 2
2
3 2
n n
T
n O n
T
Jadi
= 3n/2 – 2
Untuk mengetahui kompleksitas bentuk rekursif, maka
n
T
harus diubah dalam bentuk yang bukan rekursif Bagaimana mengubah bentuk rekursif ke non rekursif ? Ada dua macam cara untuk menyelesaikan masalah ini,yaitu cara coba-coba dan dengan persamaan karakteristik : 1. Cara coba-coba (deret).
2. Metode dengan persamaan karakteristik
Cara coba-coba.
Cara ini dilakukan dengan menentukan pola deret yang terbentuk (cara deret). Contoh untuk cara ini telah ditunjukkan dalam
mencari kompleksitas waktu untuk beberapa
bentuk rekursif sebelumnya. Cara ini agak
sulit dan perlu pengalaman.
Cara coba-coba
Contoh :
n T n 1 T a n 2 b n n 1 3 , 2
T
Cara coba-coba
T T b a a b a b
T 3 1 2 2
T T b a a b b a b
T 4 2 3 2 3 2
T T b a b a b b a b
T 5 3 4 2 3 2 5 4
T T b a b a b b
T 6 4 5 3 2 5 4
T(1) = T(2) = a
= 8a + 7b
→ Sulit untuk diformulasikan
Metode dengan persamaan karakteristik
Bentuk Persamaan Linier Tak Homogen
Langkah-langkahnya adalah sebagai berikut:
1. Perhatikan bentuk rekursifnya :
n a T n a T n a T n k f n
T
1 1
2 2 ....
k
n t P n
f
n d
d d kd
n b n b n b
P
0
1 1 ....
→ polinomial dengan orde / derajat terbesar d
→ didapatkan nilai t dan d
Metode dengan persamaan karakteristik
n a T
n
a T
n
a T
n k
T 1 1 2 2 .... k
n x
nT
k n k n
n
n a x a x a x
x 1 1 2 2 ...
0
2 ...
2 1
1
n n k nk
n a x a x a x
x
2. Asumsi
f n
= 0Misal
k
x
nPersamaan di atas kemudian dibagi dengan
k
x
n(ini jika adalah suku dengan orde terkecil), sehingga didapatkan : xk a1xk1 a2xk2 ... ak 0
→ bentuk homogen
Metode dengan persamaan karakteristik
3. Diperoleh persamaan karakteristik :
2 2 ...
1 01
1
k k k d
k a x a x a x t
x
t dan d didapatkan dari langkah 1.
Metode dengan persamaan karakteristik
4. Ada 2 macam kasus :
n c
1x
1n c
2x
2n c
3x
3n ....
T
x
1, x
2, x
3,...
Kasus 1
Semua akar karakteristik berbeda Solusi Umum:
,...
, , 2 3
1 c c
c adalah konstanta yang harus dicari
x x
x
1
2 ....
n
c c n c n c n
xnT 1 2 3 2 4 3 .... Kasus 2
Semua akar karakteristik sama, yaitu Solusi Umum:
Masalah faktorial
n T n 0 1 1 , , n n 0 0
T
n T n 1
1 Tf n 1
1. 01n n
(i)
→ t = 1 d = 0
Masalah faktorial
n T n 1
T
n T n 1
0T
1
0
nn
x
x
1
x
n(ii) persamaan homogen (kita anggap f(n)=0)
n x
nT
Misal , maka
Persamaan terakhir ini dibagi dengan
(suku dengan orde terkecil), didapatkan :
x – 1 = 0Masalah faktorial
1
1
x x
2 1
n c c n
nT
1
2. 1
nc c1 2
(iii) Persamaan karakteristik (x – 1)(x – 1) = 0
Akar – akarnya adalah :
Akar sama, jadi termasuk kasus 2, sehingga solusi umum :
Masalah faktorial
0 0T
1 T 0 1 1 T
0 c1T
1 c1 c2T
Dari relasi rekurens :
Dari solusi umum:
………(**)
………..(*) Cari c1 dan c2 :
Masalah faktorial
1
0 c
2
1
1
c c
1 0
c
c
2 1
n c c n
T
1
2 n n
T
T
n O
nDari (*) dan (**) didapatkan persamaan :
Dari kedua persamaan terakhir ini diperoleh dan
Dengan demikian diperoleh :
Jadi kompleksitas waktunya adalah dan
= n
Kasus Menara Hanoi
n 1 2T1
n 1
,, nn 11T
n 1f 1n
1.n0Relasi rekurrens :
n 2T
n 1
1(i) T
→ t = 1 d = 0
Kasus Menara Hanoi
n xnT
n 2 T n 1
T
2 1 0
T n T n 0 2
1
nn
x
x
1
x
n(ii) Persamaan homogen
Persamaan terakhir ini dibagi didapatkan :
x – 2 = 0 Misal
(suku dengan orde terkecil),
Kasus Menara Hanoi
1
2
x
x2 1
n c n c nT 12 21
2
12 c
c n
(iii) Diperoleh persamaan karakteristik : (x – 2)(x – 1) = 0
Dari persamaan karakterik diperoleh akar-akar :
→ akar-akar berbeda, sehingga termasuk dalam kasus 1, sehingga solusi umum:
Kasus Menara Hanoi
12 13T
T
12 24c11 c22T
c c
T
Cari c1 dan c2 :
Dari relasi rekurrens : Dari Solusi umum:
……(**)
………(*)
Dari (*) dan (**)
3 4
1 2
2 1
2 1
c c
c
c
c1 = 1 dan c2 = -1Kasus Menara Hanoi
n c12 c2T n
1 2
n n 2
n 1
T
n O
nT 2
Jadi
Jadi kompleksitas waktu :
Kompleksitas waktu Asimptotik:
Persoalan Minimum &
Maksimum
2 ,
2 2
2 ,
1
1 ,
0
2 n
T
n n n
T
n
Relasi Rekurrens
22 2 2
2
m
m T
T
2 22 1
T m
n 2T
n2 2(i) T
n 2m
Dimisalkan
m 2f
2 01m m
→ t = 1 d = 0
Persoalan Minimum &
Maksimum
2m 2T
2m1T
2m 2T
2m1 0T
0 2
1
mm
x
x
(ii) Persamaan homogen :
1
x
mPersamaan terakhir ini dibagi dengan
(suku dengan orde terkecil), didapatkan :
m xmT 2 Misal
x – 2 = 0
Persoalan Minimum &
Maksimum
x 2
x 1
01
2
x x
2 1
m c m c mT 12 21
n c
nc
nT
12
2log
21
2log2 1
n c c
(iii) Diperoleh persamaan karakteristik : Akar-akarnya :
Solusi umum :
n 2
mKarena →
m
2log n
Persoalan Minimum &
Maksimum
Cari c1 dan c2 :
Dari relasi rekurrens :
4 2T
2 2T = 4 ……..(*)
8 2T
4 2T = 10
84 84c11 c22T
c c
T
Dari solusi umum:
………..(**)
4 4c1 c2
10 8c1 c2
32 1 c
2 2 c
Dari (*) dan (**)
22 3
n n
T
n O
nT
Jadi kompleksitas waktu :
Kompleksitas waktu asimptotik
Bentuk Persamaan Linier Homogen
n a T
n
a T
n
a T
n k
f nT 1 1 2 2 .... k
n aT
n
a T
n
a T
n k
T 1 1 2 2 .... k Bentuk Persaman Linier Homogen adalah :
Dengan
Jadi bentuk Persaman Linier Homogen adalah :
nf = 0
Barisan Fibonacci
Relasi rekurrens :
1 2
1
1 1
0 0
n n
T n
T
n n n
T
n x
nT
2
0
1
n nn
x x
x
(i) Persamaan rekursi :
n T n 1
T n 2
T =0
, maka Misal
Barisan Fibonacci
2
x
nPersamaan terakhir ini dibagi , didapatkan :
2
x 1
x
= 0 → persamaan karakteristik2 5 1
1
x 2
5 1
2
x
n c n c nT
2 5 1
2 5 1
2 1
(ii) Akar persamaan karakteristik adalah : dan
→ akar-akar berbeda, sehingga termasuk dalam kasus 1, sehingga solusi umum:
Barisan Fibonacci
(iii) Cari c1 dan c2 :
Dari relasi rekurrens dan solusi umum diperoleh :
12 5 1
2 5 1 1
2 0 5 1
2 5 0 1
1 2
1 1
0 2
0 1
c c
T
c c
T
5
1
Dari 2 persamaan terakhir ini, diperoleh dan c2 =
5 c1 = 1
Deret Fibonacci
5
2 5 1
2 5
1 n n
n T
(iv) Masukkan ke solusi umum kembali, sehingga didapatkan :
Contoh lain
Misal kita punya relasi rekurrens :
2 3
9 2
15 1
7
2 2
1 1
0 0
n n
T n
T n
T
n n n n
T
Contoh lain
1
3
3
09 15
7 2
3 x x x x x
x
3
x
nPersamaan terakhir ini dibagi
→ persamaan karakteristik
(suku dengan orde terkecil) didapatkan :
n 7T
n 1
15T
n 2
9T
n 3
0T
0 9
15
7 1 2 3
n n n
n x x x
x
(i) Persamaan rekursi :
Misal T(n) = xn, maka persamaan di atas menjadi :
Contoh lain
1 1
x x2 x3 3
n c n c n c n nT 11 23 3 3
(ii) Akar persamaan karakteristik adalah :
→ tidak semua akar-akarnya sama (juga tidak semua berbeda) jadi perpaduan antara kasus 1 dan kasus 2,
sehingga solusi umumnya adalah :
Contoh lain
2 1 3 (0)(3 ) 21 ) 3 )(
0 ( 3
1 1
0 )
3 )(
0 ( 3
1 0
2 3
2 2 2
1
1 3
1 2 1
1
0 3
0 2 0
1
c c
c T
c c
c T
c c
c T
2 18
9
1 3
3
0
3 2
1
3 2
1
2 1
c c
c
c c
c
c c
(iii) Cari c1 dan c2 dan c3:
Dari relasi rekurrens dan solusi umum diperoleh :
Disederhanakan menjadi :
1 1 c
3
1c2 = 1, dan c3 =
Contoh lain
n
n
n
n nT 3
3 3 1
1 1
1
3 1
3
1
n n n
(iv) Masukkan ke solusi umum kembali, sehingga didapatkan :
) 3 ( )
(n O n n
T
Teorema Master
Cara yang telah dibahas didepan adalah bagaimana mencari T(n) untuk algoritma rekursif, yang berlaku secara umum.
Khusus untuk strategi Divide & Conquer, kita bisa juga mencari kompleksitas waktu
asimptotik (ingat! hanya kompleksitas waktu asimptotik, bukan T(n) ) dengan
menggunakan teorema Master.
Teorema Master
n aT
nb f
nT
Teorema Master :
Untuk suatu general Divide and Conquer recurrence :
n O
ndf
Jika
0 d
dimana dalam persamaan general Divide and Conquer recurrence di atas, maka
d a
d d
d d
b a
n O
b a
n n
O
b a
n O n
T
blog
log
(analogous results hold for the and notations, too)
Contoh :
Persoalan Minimum & Maksimum (procedure MinMax2)
2 ,
2 2
2 ,
1
1 ,
0
2 n
T
n n n
T
n
→ salah satu contoh strategi divide and conquer.
bd
a T
n O
nDari relasi rekurens di atas, diperoleh a = 2, b = 2, d = 0.
atau
.
sehingga
n O
n2log2T
→