250 likes | 376 Views
Analysis of Algorithm. KULIAH #2. Analysing Control Structure. SEQUENCING, misal P1 dan P2 : dua bagian algoritma (bisa single instruction atau complicated subalgorithms ). Misal t1 dan t2 masing-masing waktu yang diperlukan oleh P1 dan P2.
E N D
Analysis of Algorithm KULIAH #2
Analysing Control Structure • SEQUENCING, misal P1 dan P2 : dua bagian algoritma (bisa single instruction atau complicated subalgorithms). Misal t1 dan t2 masing-masing waktu yang diperlukan oleh P1 dan P2. • SEQUENCING RULE : waktu yang diperlukan untuk compute “P1; P2” (P1 kemudian P2) adalah t1+t2. Dengan “maximum rule”, waktunya dalam Θ(max(t1,t2)). • Kemungkinan : parameter yang mengendalikan t2 tergantung pada hasil computation yang dilakukan oleh P1. Sehingga, analysis “P1; P2” tidak selalu bisa dilakukan dengan menganggap P1 dan P2 secara independent.
Analysing Control Structure (1) • “FOR” LOOP, perhatikan loop for i 1 to m doP(i) (convention : untuk m=0 tidak “error”, hanya statemen terkontrol P(i) sama sekali tidak dieksekusi). • Misal size instance n, P(i) tidak benar-benar tergantung pada i, t waktu untuk compute P(i). • Maka total waktu yang diperlukan loop adalah l=mt. (kemungkinan ada “pitfall”, karena tidak memperhitungkan waktu yang diperlukan untuk “loop control”.)
Analysing Control Structure (2) • “for loop”, merupakan “shorthand” untuk i 1 while i m do P(i) i i+1 • Misal c : upper bound on the time requeired by each operation, maka l (t+3c)m + 2c = mt +3cm + 2c. • Jika c bisa diabaikan dibanding t, maka secara kasar l =mt (kecuali jika m=0).
Analysing Control Structure (3) • Analysis “for loop”. Jika t(i) yang diperlukan oleh P(i) berubah sebagai fungsi i. (umumnya, waktu yang diperlukan oleh P(i) bisa tergantung tidak hanya pada i, juga instance size n atau bahkan instance itu sendiri). • Jika waktu untuk “loop control” diabaikan, selama m1, maka loop yang sama fori 1tomdoP(i) akan memerlukan waktu : t(1) + t(2) + … + t(m).
Analysing Control Structure (4) • Perhatikan algoritma functionFibIter(n) i1; j0 for k1 to n do ji+j ij-I return j • Instruksi di dalam “loop” membutuhkan waktu konstan, misal terbatas atas oleh suatu konstan c. Dengan mengabaikan waktu untuk “loop control”, maka waktu akan terbatas atas oleh nc. • Karena instruksi sebelum dan sesudah “loop” diabaikan, maka algoritma memerlukan waktu dalam O(n).
Analysing Control Structure (5) • Dengan Moivre’s formula : ukuran fk berada dalam Θ(k). Sehingga, iterasi ke-k memerlukan waktu Θ(k-1) + Θ(k), atau sama dengan Θ(k). • Misal c : konstan sedemikian hingga waktu ini terbatas atas oleh ck untuk semua k1. • Jika waktu untuk “loop control”, instruksi sebelum dan sesudah “loop” diabaikan, maka waktu yang dibutuhkan algoritma terbatas atas oleh k=1..n ck = c[n(n+1)/2] O(n2). • Alasan serupa menghasilkan (n2), sehingga waktu yang dibutuhkan algoritma dalam Θ(n2)
Analysing Control Structure (6) • Ada perbedaan besar, antara analysis FibRec yang memperhitungkan operasi aritmatik sebagai “unit cost” dengan yang tidak memperhatikannya. • Analysis “for loop” yang mulainya selain dari 1, bertambah dengan pertambahan lebih besar. Misal, for i5 to m step 2 do P(i) • Untuk m3, P(i) akan dieksekusi sebanyak ((m-5)2) + 1 kali.
Analysing Control Structure (7) • RECURSIVE CALL, perhatikan algoritma FibRec berikut functionFibRec(n) if n<2 then returnn elsereturnFibRec(n-1)+FibRec(n-2) • Misal T(n) : waktu untuk “call on” FibRec(n). • Jika n<2, algoritma hanya mengembalikan n, yang memerlukan waktu konstan a. • Jika n2, kebanyakan kerja dilakukan untuk dua “recursive calls”, yang masing-masing memerlukan waktu T(n-1) dan T(n-2).
Analysing Control Structure (8) • Ditambah satu addition fn-1 dan fn-2(nilai-nilai kembalian oleh “recursive calls”), “recursion control”, dan test ”if n < 2”. • Misal h(n) : kerja yang melibatkan operasi-operasi di atas. Maka dengan definisi T(n) dan h(n) akan didapat rekursi berikut T(n) = a, jika n=0 atau n=1 T(n) = T(n-1) + T(n-2) + h(n), jika n=2,3,…
Analysing Control Structure (9) • WHILE and REPEAT LOOPs, lebih sulit untuk dianalisa dibanding dengan FOR LOOP. Perhatikan algoritma berikut functionBin_Search(T[1..n],x) i1; jn while i<j do {T[i]xT[j]} k(i+j)2 case x<T[k] : jk-1 x=T[k] : i, jk x>T[k] : ik+1 return i • Misal dl : nilai j-i+1 di akhir perjalanan ke-l seputar loop untuk l 1 dan misal d0=n. Karena dl-1 nilai j-i+1 sebelum mulai iterasi ke-l, maka dl dl-1 / 2 ntuk semua l 1. Dengan induksi matematika maka didapat dl n / 2l.
Analysing Control Structure (10) • Loop terminate ketika d1, yang terjadi ketika l = lg n. Jadi loop akan dimasuki paling banyak lg n kali. Karena masing-masing perjalanan seputar loop memakan waktu konstan, maka “binary search” memakan waktu dalam O(log n). • Alasan serupa menghasilkan batas bawah (log n), sehingga binary search memakan waktu Θ(log n).
Using a Barometer • Barometer instruction : instruction yang dieksekusi paling sedikit sesering instruction lain dalam algoritma. • Ketika algoritma melibatkan beberapa “nested loops”, maka setiap instruction dari “innermost loop” biasanya bisa digunakan sebagai “barometer”.
Supplementary Examples • SELECTION SORT, perhatikan procedure select(T[1..n]) for i1 to n-1 do minjI; minxT[i] for ji+1 to n do if T[j]<minx then minjj minxT[j] T[minj]T[i] T[i]minx
Supplementary Examples (1) • SELECTION SORT, waktu yang diperlukan oleh masing-masing putaran “inner loop” tidak konstan – khususnya jika T[j]<minx – tapi terbatas atas oleh suatu konstanta c. Untuk masing-masing i, instruksi dalam “inner loop” dieksekusi n-(i+1)+1=n-i kali. Sehingga, waktu yang diperlukan oleh “inner loop” adalah t(i) (n-i)c. Waktu yang diperlukan putaran ke-i di “outer loop” terbatas atas oleh b+t(i) untuk konstanta b yang tepat.
Supplementary Examples (2) • SELECTION SORT, Sehingga, total waktu yang dihabiskan algoritma terbatas atas oleh ½ cn2 + (b – ½ c)n– b. Atau berada dalam O(n2), secara serupa dalam (n2). Jadi berada dalam Θ(n2). • Jika “innermost test – ifT[j]<minx” sebagai barometer, dan menghitung banyaknya kali test tersebut dieksekusi. • Yaitu, i=1..n-1 j=i+1..n 1 = n(n-1)/2
Supplementary Examples (3) • INSERTION SORT, perhatikan procedureinsert(T[1..n]) for i2 to n do xT[i]; ji-1 while i>0and x<T[j] do T[j+1]T[j] jj-1 T[j+1]x • Barometer : banyaknya kali “while loop condition” ditest.
Supplementary Examples (4) • Asumsi i fixed, x = T[i]. • Worse case muncul ketika x < T[j] untuk setiap j antara 1 dan i-1, karena harus membandingkan x dengan T[i-1], T[i-2], …, T[1] sebelum meninggalkan loop “while”. Sehingga, “while loop test” dikerjakan i kali. • Worse case terjadi untuk setiap nilai i dari 2 sampai n. • Sehingga “barometer test” dikerjakan dalam i=2..n i = n(n+1)/2 – 1 kali.
Supplementary Examples (4) • EUCLID’S ALGORITHM, perhatikan functionEuclid(m,n) whilem>0do tm mn mod m nt returnn • Untuk setiap dua bilangan bulat m dan n, dengan nm, maka berlaku nmodm < n/2.
Supplementary Examples (5) • EUCLID’S ALGORITHM, • Jika m>n/2, maka 1n/m<2, sehingga nm=1, yang berakibat bahwa n mod m = n-m(nm) = n-m < n-n/2 = n/2. • Jika mn/2, maka n mod m <m n/2. • Dengan tanpa mengurangi generality, asumsikan nm (jika n<m, putaran pertama loop akan swap m dan n. Karena n mod m = n ketika n < m).
Supplementary Examples (6) • Kondisi di atas, dipertahankan di masing-masing loop, karena nmodm tidak pernah lebih dari m. • Total waktu yang digunakan algoritma adalah dalam order banyaknya putaran loop. Misal # of trips around the loop terbatas atas oleh function of n. • Apa yang terjadi dengan m dan n setelah putaran loop kedua (misal, algoritma belum berhenti).
Supplementary Examples (7) • Misal m0dan n0nilai-nilai awal parameter, setelah putaran pertama m menjadi n0modm0. Setelah putaran ke-2, n mengambil nilai n0mod m0. Sehingga n menjadi < n0/2, dengan kata lain nilai n paling tidak menjadi separoh setelah putaran ke-2. Akan tetapi, masih berlaku nm sehingga argumentasi serupa masih diterapkan lagi. • Kesimpulan : loop akan dimasuki secara kasar paling banyak 2 lg n kali.
Supplementary Examples (8) • THE TOWERS OF HANOI, contoh analisa “recursive algorithm”. • Generalisasi permasalahan, an arbitrary number n of rings. • Solusi : untuk memindahkan m rings yang lebih kecil dari tiang i ke tiang j, pertama-tama dipindahkan m-1 rings yang lebih kecil dari tiang k ke tiang j. (Ada tiga buah tiang (rod) i, j, dan k).
Supplementary Examples (9) • THE TOWERS OF HANOI, perhatikan procedureHanoi(m,i,j) {memindah m smallest rings dari tiang i ke tiang j} if m>0then Hanoi(m-1,i,6-i-j) write i “” j Hanoi(m-1,6-i-j,j) • Untuk menganalisa waktu eksekusi algoritma di atas, instruksi write digunakan sebagai “barometer”.
Supplementary Examples (10) • THE TOWERS OF HANOI, • Misal t(m) : # of times call ofHanoi(m,.,.) dieksekusi. Dengan pengamatan terhadap algoritma, maka t(m) = 0, jika m=0 t(m) = 2t(m-1) + 1, jika m>0 • Selanjutnya bisa diperlihatkan bahwa t(m) = 2m – 1.