Anda di halaman 1dari 4

My Draft : Uraian Kompleksitas Algoritma Rekursif (Fibonacci) ++

By : Imam Cholissodin
1. Diketahui pseudocode algoritma String Matching sebagai berikut :
Algorithm BruteForceStringMatch ( T[1..n], P[1..m] )
for i 1 to n m + 1 do
j1
while j < (m+1) and P[j] = T[i + j] do
jj+1

Analisis dan hitung kompleksitas Average case-nya !


Jawab :
Worst Case :

Average Case :

n m +1 m

C ( n) =

i =1

n m +1 m

C ( n) =

j =1

i =1

n m +1

m
i =1

i * m( n 1m +1)
j =1

n m +1

m * i * m( n 1m +1)

= m(n m +1)

i =1
n m +1

i * ( n m1 +1)

i =1

1
( n m +1)

n m +1

i
i =1

1
(1 + 2 + 3 + ....... + ( n m +1) )
=
( n m +1)
=

1
1

( n m +1)(1 + ( n m +1) )
( n m +1) 2

1
1

( n m +1)( n m + 2)
( n m +1) 2

(
n m +1)( n m + 2)
=
2( n m +1)
(
n m + 2)
=
=

2. Algoritma Fibonacci adalah algoritma rekursif yang bertujuan untuk menampilkan angka
Fibonacci sebagaimana ditunjukkan dalam fungsi berikut :

a. Gambarkan pohon rekursifnya untuk fib(5) !


b. Analisis dan hitung kompleksitasnya C(n) = C(n-1) + C(n-2) + 1 !
(diasumsikan C(1)=1 dan C(0)=1).
Jawab :
a. Pohon Rekursif Fib(5) :

Halaman1dari4

b. Cara I (Solusi Eksak) :

Halaman2dari4

C ( n) = C ( n 1) + C ( n 2) + 1
C (n) = C (n 1) + C (n 2) + 1
Menjabarkan dengan satu sisi, yaitu diambil C ( n 1), Menjabarkan dengan dua sisi ,
karena memiliki tingkat rekursif paling dalam daripada C ( n 2)
yaitu C (n 1) dan C (n 2)
= ( C ( n 2) + C ( n 3) + 1) + C ( n 2) + 1
= C (n 2) + C (n 3) + 1 + C (n 3) + C (n 4)
= 2C ( n 2) + C ( n 3) + 2
= C (n 2) + 2C (n 3) + C (n 4) + 3
= 2( C ( n 3) + C (n 4) + 1) + C ( n 3) + 2
= 3C ( n 3) + 2C (n 4) + 4
jika dibentuk ke C (n 2) dan C (n 3) dengan
= 3( C ( n 4) + C (n 5) + 1) + 2C (n 4) + 4
C (n 4) = C (n 2) C (n 3) 1
= 5C (n 4) + 3C ( n 5) + 7
Subtitusi C (n 4) sehingga
= 5( C ( n 5) + C ( n 6) + 1) + 3C (n 5) + 7
= C (n 2) + 2C (n 3) + C (n 4) + 3
= 8C ( n 5) + 5C ( n 6) + 12
= C (n 2) + 2C (n 3) + (C (n 2) C (n 3) 1)
= 8( C ( n 6) + C ( n 7) + 1) + 5C ( n 6) + 12
= 2C (n 2) + C (n 3) + 2
= 13C ( n 6) + 8C (n 7) + 20
.
dan seterusnya
.
.
Deret Fibonacci :

Un =

) (

Karena menjabarkan dua sisi lebih komplek ,

(1 + 5 ) n (1 5 ) n

maka dipilih penjabaran hanya dengan satu sisi

2n 5
jika n = 0,U n = 0

yang lebih sederhana, tetapi memiliki hasil yang sam

n = 1,U n = 1
n = 2, U n = 1

Terbentuk Pola Segitiga Pascal :

n = 3, U n = 2

( Jika dilakukan penjabaran dengan dua sisi )

n = 4, U n = 3
n = 5,U n = 5

n = 6, U n = 8

1 1

n = 7, U n = 13

1 2 1

n = 8, U n = 21

1 3 3 1

dan seterusnya
.
.
= XC ( n i ) + YC ( n (i + 1)) + ( X + (Y 1))
Karena X dan Y membentuk deret fibonacci
misal n i = 1 dan i = n 1, maka
= XC ( n i ) + YC ( n i 1) + ( X + Y 1)
= XC (1) + YC (1 1) + ( X + Y 1)
= XC (1) + YC (0) + ( X + Y 1)
karena C (1) = 1 dan C (0) = 1, maka
= X (1) + Y (1) + ( X + Y 1)
= X + Y + ( X + Y 1)
= X + Y + X + Y 1
= 2( X + Y ) 1
X =

(1 + 5 )

i +1

(1 5 )

i +1

2i +1 5
= 2(

dan Y =

(1 + 5 )i +1 (1 5 )i +1
i +1

2
5
Subtitusi i = n 1 sehingga
C ( n) = 2(
C ( n) = 2(

(1 + 5 ) n (1 5 ) n
2n 5

= C (n 3) + 3C (n 4) + 3C (n 5) + C (n 6) + 7
jika C (n 3) + 3C (n 4) + 3C (n 5) + C (n 6) + 7
dibentuk ke C (n 3) dan C (n 4) dengan
C (n 6) = C (n 4) C (n 5) 1
Subtitusi 3C (n 5) + C (n 6) sehingga
3C (n 5) + C (n 6) = 3C (n 5) + C (n 4) C (n 5)
= C (n 4) + 2C (n 5) 1
C (n 5) = C (n 3) C (n 4) 1

(1 + 5 ) (1 5Subtitusi
)i
C (n 4) + 2C (n 5) 1 sehingga
2i 5
C (n 4) 2C (n 5) 1 = C (n 4) + 2(C (n 3) C (n

(1 + 5 )i (1 5 )i

(1 + 5 ) ( n 1) +1 (1 5 ) ( n 1) +1
2( n 1) +1 5

= C (n 2) + 2C (n 3) + C (n 4) + 3

= 2C (n 3) C (n 4) 3

) 1

maka 3C (n 5) + C (n 6) = 2C (n 3) C (n 4) 3
Subtitusi ke

(1 + 5 ) ( n 1) (1 5 ) ( n 1)

(1 + 5 ) ( n 1) (1 5 ) ( n 1)
2( n 1) 5

= C (n 3) )+31C (n 4) + 3C (n 5) + C (n 6) + 7

2( n 1) 5

= C (n 3) + 3C (n 4) + 2C (n 3) C (n 4) 3
) 31
=
C (n 3) + 2C (n 4) + 4

n
n
n 1
n 1

1 5
1 + 5
1 5

2
1+ 5

C ( n) =

2
2
2
2
5

Halaman3dari4

Cara II (Solusi dengan Pendekatan) :


C (n) = C ( n 1) + C ( n 2) +1
karena C ( n 1) memiliki tingkat rekursif paling dalam daripada C ( n 2),
maka dapat dilakukan pendeka tan bahwa C ( n 2) C ( n 1) sehingga
C (n) = C ( n 1) + C ( n 1) +1
C (n) = 2C ( n 1) +1
( Penjabaran berantai, sampai didapatkan pola umum)
= 2( 2C ( n 2) +1) +1 = 2 2 C (n 2) + 2 +1

= 22 ( 2C ( n 3) +1) + 2 +1 = 23 C (n 3) + 2 2 + 2 +1

= 23 ( 2C ( n 4) +1) + 2 2 + 2 +1 = 2 4 C ( n 4) + 23 + 2 2 + 2 +1

= 24 ( 2C ( n 5) +1) + 23 + 2 2 + 2 +1 = 25 C ( n 5) + 24 + 23 + 2 2 + 2 +1
= 25 ( 2C ( n 6) +1) + 2 4 + 23 + 22 + 2 +1 = 26 C ( n 6) + 25 + 2 4 + 23 + 22 + 2 +1
.
.
= 2i C (n i ) + 2(i 1) + 2(i 2) + ....... + 2 2 + 2 +1
misal ( n i ) = 1, dan i = n 1, maka
= 2( n 1) C (1) + 2(( n 1) 1) + 2((n 2) 2) + ....... + 22 + 2 +1
= 2( n 1) (1) + 2(( n 1) 1) + 2((n 1) 2) + ....... + 2 2 + 2 +1
= 2( n 1) + 2( n 2) + 2( n 3) + ....... + 2 2 + 2 +1
C (n) = 2( n 1) + 2( n 2) + 2( n 3) + ....... + 2 2 + 2 +1
C (n) = 1 + 2 + ....... + 2( n 3) + 2( n 2) + 2( n 1)
C (n) = 20 + 21 + ....... + 2( n 3) + 2( n 2) + 2( n 1)
Banyak suku = n
Karena C (n) membentuk deret geometri, maka
a = 1 dan r =
C ( n) =

Un
2
= =2
U n 1
1

) (

a r n 1
1 2n 1
=
= 2 n 1
r 1
2 1

C (n) masuk pada kelas 2 n

~Semoga Bermanfaat~

Halaman4dari4

Anda mungkin juga menyukai