Kompleksitas Waktu utuk Algoritma Rekursif ZK Abdurahma Baizal
Algoritma Rekursif Betuk rekursif : suatu subruti/fugsi/ prosedur yag memaggil diriya sediri. Betuk dimaa pemaggila subruti terdapat dalam body subruti Dega rekursi, program aka lebih mudah dilihat
Betuk rekursi bertujua utuk : meyederhaaka peulisa program meggatika betuk iterasi Syarat betuk rekursif: ada kodisi termial (basis) ada subroutie all yag melibatka parameter yag ilaiya meuju kodisi termial (reurree)
Meghitug kompleksitas betuk rekursif Utuk betuk rekursif, diguaka tekik perhituga kompleksitas dega relasi rekures
Meghitug faktorial Futio Faktorial (iput : iteger) iteger {meghasilka ilai!, tidak egatif} Algoritma If = the Retur Else Retur ( *faktorial (-) ) Edif
Meghitug faktorial Kompleksitas waktu : utuk kasus basis, tidak ada operasi perkalia () utuk kasus rekures, kompleksitas waktu diukur dari jumlah perkalia () ditambah kompleksitas waktu utuk faktorial (-)
Meghitug faktorial Jadi relasi rekures : ( ),,
Meghitug faktorial 3 3 3 =.. = + () = + Jadi () = O()
Meara Haoi Legeda di Haoi, tetag kisah pedeta Budha bersama murid-muridya.
Bagaimaa memidahka seluruh piriga (64 piriga)tersebut ke sebuah tiag yag lai (dari A ke B); setiap kali haya satu piriga yag boleh dipidahka, tetapi tidak boleh ada piriga besar di atas piriga keil. Ada tiag peratara C. B A C
Kata pedeta, jika pemidaha berhasil dilakuka, maka DUNIA KIAMA!!!
Meara Haoi Proedure Haoi (iput, A, B, C:iteger) Algoritma If = the Write ( Pidahka piriga dari,a, ke,b) Else Haoi(-,A,C,B) Writel( Pidahka piriga dari,a, ke,b) Haoi(-,C,B,A) Edif
Meara Haoi Relasi Rekurres :,,
3 3 3 =........ Meara Haoi
Meara Haoi Jadi O
Meara Haoi adalah jumlah seluruh perpidaha piriga dari satu tiag ke tiag laiya. Jika perpidaha piriga butuh waktu detik, maka waktu yag dibutuhka : 64 detik =.446.744.73.79.55.65 = kira-kira 6 milyar tahu (???!!!)
Persoala Miimum & Maksimum proedure MiMaks(iput A : abelit, i, j : iteger, output mi, maks : iteger) { Meari ilai maksimum da miimum di dalam tabel A yag berukura eleme seara Divide ad Coquer. Masuka: tabel A yag sudah terdefiisi elemeelemeya Keluara: ilai maksimum da ilai miimum tabel } Deklarasi mi, mi, maks, maks : iteger
Persoala Miimum & Maksimum if i=j the { eleme } miai maksai else if (i = j-) the { eleme } if Ai < Aj the maksaj miai else maksai miaj edif
Persoala Miimum & Maksimum else { lebih dari eleme } k(i+j) div { bagidua tabel pada posisi k } MiMaks(A, i, k, mi, maks) MiMaks(A, k+, j, mi, maks) if mi < mi the mimi else mimi edif if maks<maks the maksmaks else maksmaks edif
Persoala Miimum & Maksimum Relasi rekurres: ( ) ( / ),,,
Persoala Miimum & Maksimum Peyelesaia: Asumsi: = k, dega k bilaga bulat positif, maka () = (/) + = ((/4) + ) + = 4(/4) + 4 + = 4 ((/8) + ) + 4 + = 8(/8) + 8 + 4 + =... = k () + i = k + k k i
Persoala Miimum & Maksimum log log = / + = 3/ Jadi 3 O
Utuk megetahui kompleksitas betuk rekursif, maka harus diubah dalam betuk yag buka rekursif Bagaimaa megubah betuk rekursif ke o rekursif? Ada dua maam ara utuk meyelesaika masalah ii, yaitu ara oba-oba da dega persamaa karakteristik :. Cara oba-oba (deret).. Metode dega persamaa karakteristik
Cara oba-oba. Cara ii dilakuka dega meetuka pola deret yag terbetuk (ara deret). Cotoh utuk ara ii telah ditujukka dalam meari kompleksitas waktu utuk beberapa betuk rekursif sebelumya. Cara ii agak sulit da perlu pegalama.
Cara oba-oba Cotoh : a b, 3
Cara oba-oba b a b a a b 3 b a b b a a b 3 3 4 b a b b a b a b 4 5 3 4 3 5 b b a b a b 4 5 3 5 4 6 () = () = a = 8a + 7b Sulit utuk diformulasika
Metode dega persamaa karakteristik Betuk Persamaa Liier ak Homoge Lagkah-lagkahya adalah sebagai berikut:. Perhatika betuk rekursifya : a a... a k f t P k f P d b d d b d... poliomial dega orde / derajat terbesar d didapatka ilai t da d b k
Metode dega persamaa karakteristik. Asumsi f = a a... a k k Misal x x x ax ax... a k x k k ax ax... ak x Persamaa di atas kemudia dibagi dega (ii jika k x betuk homoge k x adalah suku dega orde terkeil), sehigga k k k didapatka : x a x a x... a k
Metode dega persamaa karakteristik 3. Diperoleh persamaa karakteristik : k k k d x a x a x... a x t k t da d didapatka dari lagkah.
Metode dega persamaa karakteristik 4. Ada maam kasus : Kasus Semua akar karakteristik berbeda Solusi Umum: x, x, 3,... x x x x... 3 3,, 3,... adalah kostata yag harus diari Kasus Semua akar karakteristik sama, yaitu x x... Solusi Umum: 3... x. 3 4 x
Masalah faktorial,, (i) f. t = d =
Masalah faktorial (ii) persamaa homoge (kita aggap f()=) Misal x x x, maka Persamaa terakhir ii dibagi dega (suku dega orde terkeil), didapatka : x = x
Masalah faktorial (iii) Persamaa karakteristik (x )(x ) = Akar akarya adalah : x x Akar sama, jadi termasuk kasus, sehigga solusi umum :.
Masalah faktorial Cari da : Dari relasi rekures :..(*) Dari solusi umum: (**)
Masalah faktorial Dari (*) da (**) didapatka persamaa : Dari kedua persamaa terakhir ii diperoleh da Dega demikia diperoleh : = Jadi kompleksitas waktuya adalah da O
Kasus Meara Haoi Relasi rekurres :,, (i) f. t = d =
Kasus Meara Haoi (ii) Persamaa homoge Misal x x x Persamaa terakhir ii dibagi didapatka : x = x (suku dega orde terkeil),
Kasus Meara Haoi (iii) Diperoleh persamaa karakteristik : (x )(x ) = Dari persamaa karakterik diperoleh akar-akar : x x akar-akar berbeda, sehigga termasuk dalam kasus, sehigga solusi umum:
Kasus Meara Haoi Cari da : Dari relasi rekurres : 3 Dari (*) da (**) (*) Dari Solusi umum: 4 (**) 4 3 = da = -
Kasus Meara Haoi Jadi Jadi kompleksitas waktu : Kompleksitas waktu Asimptotik: O
Persoala Miimum & Maksimum Relasi Rekurres (i) Dimisalka f m m m,,, m t = d = m m m
Persoala Miimum & Maksimum (ii) Persamaa homoge : x m m m m m m x Misal m x m Persamaa terakhir ii dibagi dega m x (suku dega orde terkeil), didapatka : x =
Persoala Miimum & Maksimum (iii) Diperoleh persamaa karakteristik : x x Akar-akarya : Solusi umum : m m m Karea log m x x m log log
Persoala Miimum & Maksimum Cari da : Dari relasi rekurres : 4 8 4 = 4 =..(*) Dari solusi umum: 4 4 8 8..(**) Dari (*) da (**) 4 8 4 3 Jadi kompleksitas waktu : Kompleksitas waktu asimptotik 3 O
Betuk Persamaa Liier Homoge Betuk Persama Liier Homoge adalah : a a... a k f f = k Dega Jadi betuk Persama Liier Homoge adalah : a a... a k k
Barisa Fiboai Relasi rekurres : x x x x (i) Persamaa rekursi : =, maka Misal
Barisa Fiboai x Persamaa terakhir ii dibagi, didapatka : x x = persamaa karakteristik 5 x 5 x 5 5 (ii) Akar persamaa karakteristik adalah : da akar-akar berbeda, sehigga termasuk dalam kasus, sehigga solusi umum:
Barisa Fiboai (iii) Cari da : Dari relasi rekurres da solusi umum diperoleh : 5 5 5 5 5 Dari persamaa terakhir ii, diperoleh da = 5 =
Deret Fiboai (iv) Masukka ke solusi umum kembali, sehigga didapatka : 5 5 5
Cotoh lai Misal kita puya relasi rekurres : 3 9 5 7
Cotoh lai (i) Persamaa rekursi : 7 5 9 3 Misal () = x, maka persamaa di atas mejadi : x 7x 5x 9x 3 Persamaa terakhir ii dibagi 3 x (suku dega orde terkeil) didapatka : x x 3x 3 x 3 7x 5x 9 persamaa karakteristik
Cotoh lai (ii) Akar persamaa karakteristik adalah : x x x 3 3 tidak semua akar-akarya sama (juga tidak semua berbeda) jadi perpadua atara kasus da kasus, sehigga solusi umumya adalah : 3 33
Cotoh lai ) ()(3 3 ) ()(3 3 ) ()(3 3 3 3 3 8 9 3 3 3 3 (iii) Cari da da 3 : Dari relasi rekurres da solusi umum diperoleh : Disederhaaka mejadi : 3 =, da 3 =
Cotoh lai (iv) Masukka ke solusi umum kembali, sehigga didapatka : 3 3 3 3 ( ) O( 3 3 )
eorema Master Cara yag telah dibahas didepa adalah bagaimaa meari () utuk algoritma rekursif, yag berlaku seara umum. Khusus utuk strategi Divide & Coquer, kita bisa juga meari kompleksitas waktu asimptotik (igat! haya kompleksitas waktu asimptotik, buka () ) dega megguaka teorema Master.
eorema Master eorema Master : Utuk suatu geeral Divide ad Coquer reurree : Jika a f f dimaa b O d d dalam persamaa geeral Divide ad Coquer reurree di atas, maka O O O d d b loga log a a a b b b (aalogous results hold for the ad otatios, too) d d d
Cotoh : Persoala Miimum & Maksimum (proedure MiMax) salah satu otoh strategi divide ad oquer.,,,. Dari relasi rekures di atas, diperoleh a =, b =, d =. sehigga d log a b O atau O