Top Banner
Kompleksitas Waktu untuk Algoritma Rekursif ZK Abdurahman Baizal
57

Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Oct 26, 2015

Download

Documents

Ahmad Rosyiq

Kompleksitas Waktu untuk Algoritma Rekursif
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Kompleksitas Waktuuntuk Algoritma

Rekursif

ZK Abdurahman Baizal

Page 2: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Algoritma Rekursif

Bentuk rekursif :suatu subrutin/fungsi/ prosedur yang memanggil dirinya sendiri.Bentuk dimana pemanggilan subrutinterdapat dalam body subrutinDengan rekursi, program akan lebih mudahdilihat

Page 3: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Bentuk rekursi bertujuan untuk :menyederhanakan penulisan programmenggantikan bentuk iterasi

Syarat bentuk rekursif:ada kondisi terminal (basis)ada subroutine call yang melibatkanparameter yang nilainya menuju kondisiterminal (recurrence)

Page 4: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Menghitung kompleksitas bentukrekursif

Untuk bentuk rekursif, digunakan teknikperhitungan kompleksitas dengan relasirekurens

Page 5: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Menghitung faktorialFunction Faktorial (input n : integer) → integermenghasilkan nilai n!, n tidak negatif

AlgoritmaIf n=0 then

Return 1Else

Return ( n*faktorial (n-1) )Endif

Page 6: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Menghitung faktorial

Kompleksitas waktu :untuk kasus basis, tidak ada operasiperkalian → (0)untuk kasus rekurens, kompleksitas waktudiukur dari jumlah perkalian (1) ditambahkompleksitas waktu untuk faktorial (n-1)

Page 7: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Menghitung faktorial

Jadi relasi rekurens :

( )⎩⎨⎧

>+−=

=0,1)1(0,0

nnTn

nT

Page 8: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Menghitung faktorial

( ) ( )11 −+= nTnT

( ) ( )22211 −+=−++= nTnT

( ) ( )33312 −+=−++= nTnT

= …..

= n + T(0)= n + 0

Jadi T(n) = n → O(n)

Page 9: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Menara Hanoi

Legenda di Hanoi, tentang kisah pendetaBudha bersama murid-muridnya.

Page 10: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Bagaimana memindahkan seluruh piringan (64 piringan)tersebutke sebuah tiang yang lain (dari A ke B); setiap kali hanya satupiringan yang boleh dipindahkan, tetapi tidak boleh ada piringanbesar di atas piringan kecil. Ada tiang perantara C.

B A C

Page 11: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Kata pendeta, jika pemindahanberhasil dilakukan, maka DUNIA KIAMAT !!!

Page 12: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Menara Hanoi

Procedure Hanoi (input n, A, B, C:integer)

AlgoritmaIf 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

Page 13: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Menara Hanoi

Relasi Rekurrens :

( ) ( )⎩⎨⎧

>+−=

=1,1121,1

nnTn

nT

Page 14: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Menara Hanoi

( ) ( )121 −+= nTnT

( )( ) ( )222122121 2 −++=−++= nTnT( )( ) ( )32221321221 322 −+++=−+++= nTnT

= …….

( ) ( )122.......221 122 Tnn −− +++++=

1.2.....221 12 −++++= n

12 −= n

Page 15: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Menara Hanoi

Jadi

( )( ) ( )n

n

OnTnT

212

−=

Page 16: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

( ) 12 −= nnT

= kira-kira 600 milyar tahun (???!!!)

1264 − detik

= 10.446.744.073.709.551.615

adalah jumlah seluruh perpindahan piringan dari satutiang ke tiang lainnya.Jika perpindahan 1 piringan butuh waktu 1 detik, makawaktu yang dibutuhkan :

Menara Hanoi

Page 17: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Persoalan Minimum & Maksimumprocedure 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-

elemennyaKeluaran: nilai maksimum dan nilai minimum tabelDeklarasi

min1, min2, maks1, maks2 : integer

Page 18: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Persoalan Minimum & Maksimumif i=j then 1 elemen

min←Aimaks←Aielseif (i = j-1) then 2 elemen

if Ai < Aj thenmaks←Ajmin←Ai

else maks←Aimin←Aj

endif

Page 19: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Persoalan Minimum & Maksimumelse 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

min←min1else

min←min2endif

if maks1<maks2 thenmaks←maks2

else maks←maks2

endif

Page 20: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Persoalan Minimum & Maksimum

Relasi rekurrens:

⎪⎩

⎪⎨

>+==

=2,2)2/(22,11,0

)(nnTnn

nT

Page 21: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Persoalan Minimum & MaksimumPenyelesaian: Asumsi: n = 2k, dengan k bilangan bulat positif, makaT(n) = 2T(n/2) + 2

= 2(2T(n/4) + 2) + 2 = 4T(n/4) + 4 + 2

= 2k – 1 T(2) + ∑−

=

1

12

k

i

i

= 2k – 1 ⋅ 1 + 2k – 2

= ...= 4 (2T(n/8) + 2) + 4 + 2 = 8T(n/8) + 8 + 4 + 2

Page 22: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Persoalan Minimum & Maksimum

( ) ( ) 222 log1log 22

−+= − nn

= n/2 + n – 2

( ) 223 −= nnT

( ) ( )nOnT ∈

Jadi

= 3n/2 – 2

Page 23: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Untuk mengetahui kompleksitas bentuk rekursif, maka( )nT 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

Page 24: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Cara coba-coba.

Cara ini dilakukan dengan menentukan poladeret yang terbentuk (cara deret). Contohuntuk cara ini telah ditunjukkan dalammencari kompleksitas waktu untuk beberapabentuk rekursif sebelumnya. Cara ini agaksulit dan perlu pengalaman.

Page 25: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Cara coba-cobaContoh :

( ) ( ) ( )⎩⎨⎧

≥+−+−=

=3212,1

nbnTnTna

nT

Page 26: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Cara coba-coba

T(1) = T(2) = a

( ) ( ) ( ) babaabTTT +=++=++= 2213( ) ( ) ( ) babbaabTTT 232324 +=+++=++=

( ) ( ) ( ) babbababTTT 45232435 +=++++=++=( ) ( ) ( ) bbababTTT ++++=++= 4523546

= 8a + 7b

→ Sulit untuk diformulasikan

Page 27: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Metode dengan persamaankarakteristik

Bentuk Persamaan Linier Tak HomogenLangkah-langkahnya adalah sebagai berikut:

1. Perhatikan bentuk rekursifnya :

( ) ( ) ( ) ( ) ( )nfknTanTanTanT k +−++−+−= ....21 21

( ) ( )nPtnf dn=

( ) kdd

d bnbnbnP +++= − ....110

→ polinomial dengan orde / derajat terbesar d

→ didapatkan nilai t dan d

Page 28: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Metode dengan persamaankarakteristik2. Asumsi ( )nf = 0 → bentuk homogen

( ) ( ) ( ) ( )knTanTanTanT k −++−+−= ....21 21

( ) nxnT =Misalkn

knnn xaxaxax −−− +++= ...2

21

1

0...22

11 =−−−− −−− kn

knnn xaxaxax

knx −Persamaan di atas kemudian dibagi denganknx −(ini jika adalah suku dengan orde terkecil), sehingga

didapatkan : 0...22

11 =−−−− −−

kkkk axaxax

Page 29: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Metode dengan persamaankarakteristik3. Diperoleh persamaan karakteristik :

( )( ) 0... 122

11 =−−−−− +−− d

kkkk txaxaxax

t dan d didapatkan dari langkah 1.

Page 30: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Metode dengan persamaankarakteristik4. Ada 2 macam kasus :

,...,, 321 xxxKasus 1Semua akar karakteristik berbedaSolusi Umum:

( ) ....332211 +++= nnn xcxcxcnT,...,, 321 ccc adalah konstanta yang harus dicari

xxx === ....21

Kasus 2Semua akar karakteristik sama, yaituSolusi Umum:

( ) ( ) nxncncnccnT ....34

2321 ++++=

Page 31: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Masalah faktorial

( ) ( )⎩⎨⎧

>+−=

=0,110,0

nnTn

nT

( ) ( ) 11 +−= nTnT

( ) 1=nf

( )0.11 nn=

(i)

→ t = 1 d = 0

Page 32: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Masalah faktorial(ii) persamaan homogen (kita anggap f(n)=0)

( ) ( )1−= nTnT( ) ( ) 01 =−− nTnT

01 =− −nn xx( ) nxnT =Misal , maka

1−nxPersamaan terakhir ini dibagi dengan

(suku dengan orde terkecil), didapatkan :

⇔ x – 1 = 0

Page 33: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Masalah faktorial

11 =x 12 =x

(iii) Persamaan karakteristik(x – 1)(x – 1) = 0Akar – akarnya adalah :

Akar sama, jadi termasuk kasus 2, sehingga solusi umum :

( ) ( ) nnccnT 1.21 +=

ncc 21 +=

Page 34: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Masalah faktorialCari c1 dan c2 :

Dari relasi rekurens :

( ) 00 =T

( ) ( ) 1101 =+= TT………..(*)

Dari solusi umum:

( ) 10 cT =………(**)( ) 211 ccT +=

Page 35: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Masalah faktorialDari (*) dan (**) didapatkan persamaan :

01 =c121 =+ cc

Dari kedua persamaan terakhir ini diperoleh

01 =c 12 =cdanDengan demikian diperoleh :

( ) nccnT 21 += = n

( ) nnT = ( ) ( )nOnT ∈Jadi kompleksitas waktunya adalah dan

Page 36: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Kasus Menara HanoiRelasi rekurrens :

( ) ( )⎩⎨⎧

>−+=

=1,1211,1

nnTn

nT

( ) ( ) 112 +−= nTnT(i)

( ) 1=nf( )0.11 nn=

→ t = 1 d = 0

Page 37: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Kasus Menara Hanoi

( ) nxnT =(ii) Persamaan homogen

Misal

( ) ( )12 −= nTnT

( ) ( ) 012 =−−⇔ nTnT

02 1 =− −nn xx1−nxPersamaan terakhir ini dibagi

didapatkan :x – 2 = 0

(suku dengan orde terkecil),

Page 38: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Kasus Menara Hanoi

21 =x 12 =x

(iii) Diperoleh persamaan karakteristik :(x – 2)(x – 1) = 0Dari persamaan karakterik diperoleh akar-akar :

→ akar-akar berbeda, sehingga termasuk dalam kasus 1, sehingga solusi umum:

( ) nn ccnT 12 21 +=

212 cc n +=

Page 39: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Kasus Menara HanoiCari c1 dan c2 :

Dari relasi rekurrens : Dari Solusi umum:

( )( ) 32

11==

TT ( )

( ) 21

21

4221

ccTccT

+=+=………(*) ……(**)

Dari (*) dan (**)

3412

21

21

=+=+

cccc

c1 = 1 dan c2 = -1

Page 40: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Kasus Menara Hanoi( ) 212 ccnT n +=Jadi

12 −= n

Jadi kompleksitas waktu :

( ) 12 −= nnT

( ) ( )nOnT 2∈Kompleksitas waktu Asimptotik:

Page 41: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Persoalan Minimum & MaksimumRelasi Rekurrens

( )( )⎪

⎪⎨

>+==

=2,222,11,0

2 nTnn

nTn

( ) 2=mf

( ) 22222 +⎟⎟

⎞⎜⎜⎝

⎛=

mm TT

( ) 222 1 += −mT

( ) ( ) 22 2 += nTnT(i) mn 2=Dimisalkan ( )021 mm=

→ t = 1 d = 0

Page 42: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Persoalan Minimum & Maksimum

( ) ( )1222 −= mm TT(ii) Persamaan homogen :

( ) ( ) 0222 1 =− −mm TT

02 1 =− −mm xx1−mxPersamaan terakhir ini dibagi dengan

( ) mm xT =2Misal

(suku dengan orde terkecil), didapatkan :

x – 2 = 0

Page 43: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Persoalan Minimum & Maksimum(iii) Diperoleh persamaan karakteristik :

( )( ) 012 =−− xx21 =x 12 =xAkar-akarnya :

Solusi umum :

( ) mmm ccT 122 21 +=

( ) nn ccnT log2

log1

22

12 +=

21 cnc +=

mn 2=Karena nm log2=→

Page 44: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Persoalan Minimum & MaksimumCari c1 dan c2 :Dari relasi rekurrens : Dari solusi umum:( ) ( ) 2224 += TT = 4 ……..(*)( ) ( ) 2428 += TT = 10

( )( ) 21

21

8844

ccTccT

+=+=

………..(**)

Dari (*) dan (**)

44 21 =+ cc108 21 =+ cc

23

1 =c22 −=c

( ) 223

−=nnT

( ) ( )nOnT ∈

Jadi kompleksitas waktu :

Kompleksitas waktu asimptotik

Page 45: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Bentuk Persamaan Linier Homogen

Bentuk Persaman Linier Homogen adalah :

( ) ( ) ( ) ( ) ( )nfknTanTanTanT k +−++−+−= ....21 21

Dengan ( )nf = 0

Jadi bentuk Persaman Linier Homogen adalah :

( ) ( ) ( ) ( )knTanTanTanT k −++−+−= ....21 21

Page 46: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Deret FibonacciRelasi rekurrens :

( )( ) ( )⎪

⎪⎨

>−+−==

=1211100

nnTnTnn

nT

( ) nxnT =

(i) Persamaan rekursi : ( ) ( ) ( )21 −−−− nTnTnT =0

, makaMisal

021 =−− −− nnn xxx

Page 47: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Deret Fibonacci2−nxPersamaan terakhir ini dibagi , didapatkan :

12 −− xx = 0 → persamaan karakteristik

(ii) Akar persamaan karakteristik adalah :

251

1+

=x 251

1−

=x

( )nn

ccnT ⎟⎟⎠

⎞⎜⎜⎝

⎛ −+⎟

⎟⎠

⎞⎜⎜⎝

⎛ +=

251

251

21

dan

→ akar-akar berbeda, sehingga termasuk dalam kasus 1,sehingga solusi umum:

Page 48: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Deret Fibonacci(iii) Cari c1 dan c2 :Dari relasi rekurrens dan solusi umum diperoleh :

( )

( ) 1251

2511

0251

2510

1

2

1

1

0

2

0

1

=⎟⎟⎠

⎞⎜⎜⎝

⎛ −+⎟

⎟⎠

⎞⎜⎜⎝

⎛ +=

=⎟⎟⎠

⎞⎜⎜⎝

⎛ −+⎟

⎟⎠

⎞⎜⎜⎝

⎛ +=

ccT

ccT

Dari 2 persamaan terakhir ini, diperoleh

51

c1 =51−dan c2 =

Page 49: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Deret Fibonacci

(iv) Masukkan ke solusi umum kembali, sehingga didapatkan :

( )

( ) ( )

5251

251

nn

nT⎥⎦

⎤⎢⎣

⎡ −−⎥

⎤⎢⎣

⎡ +

=

Page 50: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Contoh lainMisal kita punya relasi rekurrens :

( )

( ) ( ) ( )⎪⎪⎩

⎪⎪⎨

>−+−−−===

=

23921517221100

nnTnTnTnnn

nT

Page 51: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Contoh lain(i) Persamaan rekursi :

( ) ( ) ( ) ( ) 03921517 =−−−+−− nTnTnTnT

Misal T(n) = xn, maka persamaan di atas menjadi :

09157 321 =−+− −−− nnnn xxxx3−nxPersamaan terakhir ini dibagi

(suku dengan orde terkecil) didapatkan :

( )( )( ) 03319157 23 =−−−=−+− xxxxxx→ persamaan karakteristik

Page 52: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Contoh lain

11 =x 332 == xx

( ) nnn ncccnT 331 321 ++=

(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 :

Page 53: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Contoh lain

( )( )( ) 2)3)(0(312

1)3)(0(311

0)3)(0(310

23

22

21

13

12

11

03

02

01

=++=

=++=

=++=

cccT

cccT

cccT

(iii) Cari c1 dan c2 dan c3:Dari relasi rekurrens dan solusi umum diperoleh :

Disederhanakan menjadi :

2189133

0

321

321

21

=++=++

=+

cccccc

cc 11 −=c

31−c2 = 1, dan c3 =

Page 54: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Contoh lain

( ) ( )( ) ( )( ) ( )nnn nnT 3313111 ⎟⎠⎞

⎜⎝⎛−++−=

1331 −−+−= nn n

(iv) Masukkan ke solusi umum kembali, sehingga didapatkan :

)3()( nnOnT ∈

Page 55: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Teorema Master

Cara yang telah dibahas didepan adalahbagaimana mencari T(n) untuk algoritmarekursif, yang berlaku secara umum. Khusus untuk strategi Divide & Conquer, kitabisa juga mencari kompleksitas waktuasimptotik (ingat! hanya kompleksitas waktuasimptotik, bukan T(n) ) denganmenggunakan teorema Master.

Page 56: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Teorema Master

( ) ( ) ( )nfbnaTnT +=

( )

Teorema Master :Untuk suatu general Divide and Conquer recurrence :

( )dnOnf ∈Jika

0≥ddimana dalam persamaan general Divide

and Conquer recurrence di atas, maka

( )( )( )( )⎪

⎪⎨

>=<

∈da

dd

dd

banObannObanO

nTb log

log

ΘΩ(analogous results hold for the and notations, too)

Page 57: Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Contoh :Persoalan Minimum & Maksimum (procedure MinMax2)→ salah satu contoh strategi divide and conquer.

( )( )⎪

⎪⎨

>+==

=2,222,11,0

2 nTnn

nTn

dba > ( ) ( )nOnT ∈

Dari relasi rekurens di atas, diperoleh a = 2, b = 2, d = 0.

atau

.

sehingga( ) ( )2log2

nOnT ∈→