420 likes | 782 Views
Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency. Aryo Pinandito, ST, M.MT - PTIIK UB. Analisis Algoritma. Analisis Algoritma bertujuan memeriksa efisiensi algoritma dari dua segi : waktu eksekusi dan penggunaan memori
E N D
Design and Analysis of AlgorithmFundamentals of Algorithm Analysis in Efficiency Aryo Pinandito, ST, M.MT - PTIIK UB
AnalisisAlgoritma • AnalisisAlgoritmabertujuanmemeriksaefisiensialgoritmadariduasegi : waktueksekusidanpenggunaanmemori • Efisiensiwaktuseberapacepatalgoritmadieksekusi • Efisiensimemoriberapabanyakmemori yang dibutuhkanuntukmenjalankanalgoritma
AnalisisEfisiensiWaktuAlgoritma • Untukmelakukananalisaefisiensiwaktualgoritmaharusdiestimasiduluwaktueksekusialgoritma
Algorithm sequential search (A[0..n-1], K) • Searches for a given value in a given array by sequential search • Input: an array A[0..n-1] and a search key K • Output: returns the index of the first element of A that matches K or -1 if there are no matching elements i 0 1x while i n and A[i] K do 2x ii + 1 1x if i n return i2x else return -1 1x
Analisis Algoritma Sequential Search • Bariskodemana yang sangatberpengaruhpada running time? • Bagianloop(baris 2 dan 3). Mengapa? • Karenadieksekusiberulang–ulang. • Makin banyakeksekusinya, makin lama running time program
Sequential Search i 0 1x while i n and A[i] K do2x ii + 1 1x if i n return i2x else return -1 1x • Estimasiwaktueksekusialgoritma sequential search?
time = nLoop x tLoop • time = estimasiwaktueksekusialgoritmauntuk input tertentu • nLoop: berapa kali loop dieksekusi • tLoop:waktu yang diperlukanuntukmengeksekusi loop 1 kali. Biasanyaditentukan 1 satuanwaktutanpadispesifikasikanberapanilainya
Case: Best, Average, Worst • Asumsikan array A terdiriatas n elemen. • Best case: k ditemukan di elemenpertama array A. time = 1 x 1 satuanwaktu • Average case: k ditemukan di elementengah array A. time = n/2 x 1 satuanwaktu • Worst case: k ditemukan di elemen paling akhir array A. time = n x 1 satuanwaktu
AnalisisAlgoritma Non-Rekursif • Langkah-langkahumumuntukmenganalisaefisiensiwaktualgoritmanonrekursif • Tentukan parameter yang mengindikasikanukuran input • Identifikasi basic operation algoritma • Tentukanapakahuntukukuran input yang samabanyaknyaeksekusi basic operation bisaberbeda • Tentukanrumus sigma yang menunjukkanberapa kali basic operation dieksekusi • Selesaikanrumus sigma untukmenghitungbanyaknyaeksekusi basic operation
1: Tentukan parameter yang mengindikasikanukuran input • Sesuatu pada input yang jika nilainya bertambah akan menyebabkan banyaknya eksekusi loop bertambah • Contoh, algoritma untuk menghitung Xn menggunakan cara Xn = X * X * X * … * X sebanyak n kali. Parameter ukuran inputnya adalah nilai n, karena jika n makin besar, maka banyaknya eksekusi loop bertambah • Bagaimana dengan nilai X?
2: Identifikasi basic operation algoritma • Waktu yang diperlukanuntukmengeksekusi loop 1 kali • Dapatdiwakiliolehsebuahoperasipada loop paling dalam. • Operasi yang dipilihadalahoperasi yang selaludilakukanketika loop dieksekusi • Untukalgoritma sequential search, basic operationnyadapatdigunakani n • i n dieksekusi 1 kali setiap loop dieksekusi
3: Apakah untuk ukuran input yang sama, jumlah eksekusi basic operation dapat berbeda? • Pada sequential search, parameter untukukuran input adalah n ataubanyaknyaelemen array • Untuk n tertentu, apakahbanyaknyaeksekusi basic operation bisaberbeda? • Jikaelemenpertama array input A bernilai K, makabanyaknyaeksekusi basic operation untuk n tertentu C(n)= 1 • Jika K ditemukan di elementerakhir, maka C(n)= n • Perludiadakananalisa best case, worst case dan average case
4A: Tentukanrumus sigma yang menunjukkanberapa kali basic operation dieksekusi • C(n) = banyaknyaeksekusi basic operation untuk input ukurann • Best case Sequential Search: • Best case terjadijikaelemenpertama A bernilai K
4B: Tentukanrumus sigma yang menunjukkanberapa kali basic operation dieksekusi • C(n) = banyaknyaeksekusi basic operation untuk input ukuran n • Worst case Sequential Search: • Worst case terjadijikaelemen A yang bernilaibernilai K merupakanelementerakhiratautidakadaelemen A yang bernilaiK
4C: Tentukan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi • Average case pada sequential search • Asumsikan • Data K memangada di A • Probabilitas K terletak di elementertentu A danterdistribusisecaramerata. • Probabilitas K terletak di elemenkei = 1/n
4C: Tentukanrumus sigma yang menunjukkanberapa kali basic operation dieksekusi • Bentukumum: i * 1 / n
4C: Tentukanrumus sigma yang menunjukkanberapa kali basic operation dieksekusi • Average case pada sequential search:
5: Selesaikan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi • Best case untuk sequential search • Untuk input berukuran n, basic operation dilakukan 1 kali
5: Selesaikan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi • Worst case untuk sequential search • Untuk input berukuran n, basic operation dilakukan n kali
5: Selesaikanrumus sigma yang menunjukkanberapa kali basic operation dieksekusi • Average case pada sequential search To find the sum of a certain number of terms of an arithmetic sequence: where Sn is the sum of n terms (nth partial sum), a1is the first term, an is the nth term.
5: Selesaikan rumus sigma yang menunjukkan berapa kali basic operation dieksekusi • Pada sequential search, average case-nya: • Untuk n = 10, C(n) = 5,5 • Apakah itu berarti K berada pada elemen 5 atau 6 • Apa artinya?
Estimasi Running Time Algoritma Sequential Search • T(n) = Cop* C(n) • Dimana: • T(n) = Waktu yang diperlukanuntukmengeksekusialgoritmadengan input berukuran n • Cop = Waktuuntukmengeksekusi basic operation 1 kali. Biasanyaditentukansebagai 1 satuanwaktu • Hitung T(n) untuk sequential search pada best case, worst case dan average case!
What is T(n) For? • Apakahuntukmengestimasi running time algoritma? • Tujuanutamamencari T(n) bukanmencariwaktueksak yang dibutuhkanuntukmengeksekusisebuahalgoritma • Tetapiuntukmengetahuitingkatpertumbuhanwaktueksekusialgoritmajikaukuran input bertambah (order of growth / OoG)
Exercise • Sebuahalgoritmamemiliki T(n) = n – 1. Estimasiwaktueksekusialgoritmajikajumlahmasukannyamemilikianggota: • 10 elemen • 20 elemen • 30 elemen • Buatgrafik yang menunjukkanhubunganantarabanyaknyaelemen yang dieksekusidenganwaktueksekusi
Orders of Growth (OoG) • Tingkat pertumbuhanwaktueksekusialgoritmajikaukuran input bertambah • Orders of Growth are also known as Efficiency Classes
Exercise • UrutkanwaktueksekusialgoritmaT(1–4)(n) berdasar order of growthnyadarikecilkebesar T1(n) = n2 T1(10) = 100 T1(100) = 10,000 T2(n) = n3 T2(10) = 1,000 T2(100) = 1,000,000 T3(n) = n T3(10) = 10 T3(100) = 100 T4(n) = log2n T4(10) = 3.3 T4(100) = 6.6
Membandingkan Orders of Growth dariduaAlgoritma • Algoritma A dan B merupakanalgoritmauntukmenyelesaikanpermasalahan yang sama. Untuk input berukuran n, waktueksekusialgoritma A adalah TA(n) sedangkanwaktueksekusialgoritma B adalah TB(n). Orders of growth mana yang paling besar?
Membandingkan Orders of Growth dari dua Algoritma • 0 makaOoG TA(n) < OoG TB(n) • C makaOoG TA(n) = OoG TB(n) • ~ makaOoG TA(n) > OoG TB(n)
Asymptotic Notations O (big oh) (big omega) (big theta)
In the following discussion… • t(n) & g(n): any nonnegative functions defined on the set of natural numbers • t(n) an algorithm's running time • Usually indicated by its basic operation count C(n) • g(n) some simple function to compare the count with CS3024-FAZ
O(g(n)): Informally • O(g(n)) is a set of all functions with a smaller or same order of growth as g(n) • Examples: • n O(n2); 100n + 5 O(n2) • ½ n(n-1) O(n2) • n3 O(n2); 0.0001 n3 O(n2); n4+n+1 O(n2) ≤ CS3024-FAZ
(g(n)): Informally • (g(n)) is a set of all functions with a larger or same order of growth as g(n) • Examples: • n3 (n2) • ½ n(n-1) (n2) • 100n + 5 (n2) ≥ CS3024-FAZ
(g(n)): Informally • (g(n)) is a set of all functions with a same order of growth as g(n) • Examples: • an2+bn+c; a>0 (n2); n2+sin n (n2) • ½ n(n-1) (n2); n2+log n (n2) • 100n + 5 (n2); n3 (n2) = CS3024-FAZ
Exercise • Terdapatduaalgoritma yang menyelesaikanpermasalahan yang sama. Untuk input berukuran n, • Algoritma 1: T1(n) = 30n2 + 2n + 5. • Algoritma 2: T2(n) = n3 + n • Mana yang lebihbesar, OoG T1atau T2? • Untuk n kecilmana yang andapilih? • Untuk n besar, mana yang andapilih?
Basic Efficiency Classes • The time efficiency of a large number of algorithms fall into only few classes • 1 or C, log n, n, n log n, n2, n3, 2n, n! • Multiplicative constants are ignored it is possible that an algorithm in worse efficiency class running faster than algorithm in better class • Exp: Alg A: n3, alg B: 106n2; unless n > 106, alg B runs faster than alg A
Kelas-kelas Orders of Growth C constant log N logarithmic N linear N log N linear logaritmic N2 quadratic N3 cubic 2N exponential N! factorial • Makin kebawah, OoG-nyamakinbesar
Sifat OoG • Jika T(n) = T1(n) + T2(n) + … + Ti(n) • MakaOoG T(n) = max OoG(T1(n), T2(n), … , Ti(n)) • Jika T(n) = cf(n) • MakaOoG T(n) = f(n)
Exercise • Tentukankelas orders of growth dari: • T1(n) = 2n3 + 4n + 1 • T2(n) = 0,5 n! + n10 • T3(n) = n3 + n log n • T4(n) = 2n + 4n3 + log n + 10
Order of Growth: Summary • (1) Waktupelaksanaanalgoritmaadalahtetap, tidakbergantungpadaukuran input. • (log n) Kompleksitaswaktulogaritmikberartilajupertumbuhanwaktunyaberjalanlebihlambatdaripadapertumbuhan n. • (n) Bila n dijadikandua kali semula, makawaktupelaksanaanalgoritmajugadua kali semula. • (n log n) Bila n dijadikandua kali semula, maka n log n menjadilebihdaridua kali semula (tetapitidakterlalubanyak)
Order of Growth: Summary • (n2) Bila n dinaikkanmenjadidua kali semula, makawaktupelaksanaanalgoritmameningkatmenjadiempat kali semula. • (n3) Bila n dinaikkanmenjadidua kali semula, waktupelaksananalgoritmameningkatmenjadidelapan kali semula. • (2n) Bila n dijadikandua kali semula, waktupelaksanaanmenjadikuadrat kali semula! • (n!) Bila n dijadikandua kali semula, makawaktupelaksanaanalgoritmamenjadifaktorialdari 2n.
감사합니다 Grazias Kiitos Gratias Danke ﺷﻜﺮﺍﹰ 谢谢 TerimaKasih Merci Thank You धन्यवाद ありがとうございます