57
Kompleksitas Waktu untuk Algoritma Rekursif ZK Abdurahman Baizal

Kompleksitas Waktu untuk Algoritma Rekursif.pdf

Embed Size (px)

DESCRIPTION

Kompleksitas Waktu untuk Algoritma Rekursif

Citation preview

Kompleksitas Waktuuntuk Algoritma

Rekursif

ZK Abdurahman Baizal

Algoritma Rekursif

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

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)

Menghitung kompleksitas bentukrekursif

Untuk bentuk rekursif, digunakan teknikperhitungan kompleksitas dengan relasirekurens

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

AlgoritmaIf n=0 then

Return 1Else

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

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)

Menghitung faktorial

Jadi relasi rekurens :

( )⎩⎨⎧

>+−=

=0,1)1(0,0

nnTn

nT

Menghitung faktorial

( ) ( )11 −+= nTnT

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

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

= …..

= n + T(0)= n + 0

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

Menara Hanoi

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

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

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

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

Menara Hanoi

Relasi Rekurrens :

( ) ( )⎩⎨⎧

>+−=

=1,1121,1

nnTn

nT

Menara Hanoi

( ) ( )121 −+= nTnT

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

= …….

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

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

12 −= n

Menara Hanoi

Jadi

( )( ) ( )n

n

OnTnT

212

−=

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

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

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

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

Persoalan Minimum & Maksimum

Relasi rekurrens:

⎪⎩

⎪⎨

>+==

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

)(nnTnn

nT

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

Persoalan Minimum & Maksimum

( ) ( ) 222 log1log 22

−+= − nn

= n/2 + n – 2

( ) 223 −= nnT

( ) ( )nOnT ∈

Jadi

= 3n/2 – 2

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

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.

Cara coba-cobaContoh :

( ) ( ) ( )⎩⎨⎧

≥+−+−=

=3212,1

nbnTnTna

nT

Cara coba-coba

T(1) = T(2) = a

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

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

= 8a + 7b

→ Sulit untuk diformulasikan

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

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

Metode dengan persamaankarakteristik3. Diperoleh persamaan karakteristik :

( )( ) 0... 122

11 =−−−−− +−− d

kkkk txaxaxax

t dan d didapatkan dari langkah 1.

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 ++++=

Masalah faktorial

( ) ( )⎩⎨⎧

>+−=

=0,110,0

nnTn

nT

( ) ( ) 11 +−= nTnT

( ) 1=nf

( )0.11 nn=

(i)

→ t = 1 d = 0

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

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 +=

Masalah faktorialCari c1 dan c2 :

Dari relasi rekurens :

( ) 00 =T

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

Dari solusi umum:

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

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

Kasus Menara HanoiRelasi rekurrens :

( ) ( )⎩⎨⎧

>−+=

=1,1211,1

nnTn

nT

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

( ) 1=nf( )0.11 nn=

→ t = 1 d = 0

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),

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 +=

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

Kasus Menara Hanoi( ) 212 ccnT n +=Jadi

12 −= n

Jadi kompleksitas waktu :

( ) 12 −= nnT

( ) ( )nOnT 2∈Kompleksitas waktu Asimptotik:

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

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

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=→

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

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

Deret FibonacciRelasi rekurrens :

( )( ) ( )⎪

⎪⎨

>−+−==

=1211100

nnTnTnn

nT

( ) nxnT =

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

, makaMisal

021 =−− −− nnn xxx

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:

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 =

Deret Fibonacci

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

( )

( ) ( )

5251

251

nn

nT⎥⎦

⎤⎢⎣

⎡ −−⎥

⎤⎢⎣

⎡ +

=

Contoh lainMisal kita punya relasi rekurrens :

( )

( ) ( ) ( )⎪⎪⎩

⎪⎪⎨

>−+−−−===

=

23921517221100

nnTnTnTnnn

nT

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

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 :

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 =

Contoh lain

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

⎜⎝⎛−++−=

1331 −−+−= nn n

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

)3()( nnOnT ∈

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.

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)

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 ∈→