1 / 42

Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency

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

dulcea
Download Presentation

Design and A n alysis of Algorithm Fundamentals of Algorithm Analysis in Efficiency

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Design and Analysis of AlgorithmFundamentals of Algorithm Analysis in Efficiency Aryo Pinandito, ST, M.MT - PTIIK UB

  2. AnalisisAlgoritma • AnalisisAlgoritmabertujuanmemeriksaefisiensialgoritmadariduasegi : waktueksekusidanpenggunaanmemori • Efisiensiwaktuseberapacepatalgoritmadieksekusi • Efisiensimemoriberapabanyakmemori yang dibutuhkanuntukmenjalankanalgoritma

  3. AnalisisEfisiensiWaktuAlgoritma • Untukmelakukananalisaefisiensiwaktualgoritmaharusdiestimasiduluwaktueksekusialgoritma

  4. 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 ii + 1 1x if i n return i2x else return -1 1x

  5. Analisis Algoritma Sequential Search • Bariskodemana yang sangatberpengaruhpada running time? • Bagianloop(baris 2 dan 3). Mengapa? • Karenadieksekusiberulang–ulang. • Makin banyakeksekusinya, makin lama running time program

  6. Sequential Search i 0 1x while i n and A[i]  K do2x ii + 1 1x if i n return i2x else return -1 1x • Estimasiwaktueksekusialgoritma sequential search?

  7. time = nLoop x tLoop • time = estimasiwaktueksekusialgoritmauntuk input tertentu • nLoop: berapa kali loop dieksekusi • tLoop:waktu yang diperlukanuntukmengeksekusi loop 1 kali. Biasanyaditentukan 1 satuanwaktutanpadispesifikasikanberapanilainya

  8. 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

  9. 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

  10. 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?

  11. 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

  12. 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

  13. 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

  14. 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

  15. 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

  16. 4C: Tentukanrumus sigma yang menunjukkanberapa kali basic operation dieksekusi • Bentukumum: i * 1 / n

  17. 4C: Tentukanrumus sigma yang menunjukkanberapa kali basic operation dieksekusi • Average case pada sequential search:

  18. 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

  19. 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

  20. 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.

  21. 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?

  22. 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!

  23. What is T(n) For? • Apakahuntukmengestimasi running time algoritma? • Tujuanutamamencari T(n) bukanmencariwaktueksak yang dibutuhkanuntukmengeksekusisebuahalgoritma • Tetapiuntukmengetahuitingkatpertumbuhanwaktueksekusialgoritmajikaukuran input bertambah (order of growth / OoG)

  24. Exercise • Sebuahalgoritmamemiliki T(n) = n – 1. Estimasiwaktueksekusialgoritmajikajumlahmasukannyamemilikianggota: • 10 elemen • 20 elemen • 30 elemen • Buatgrafik yang menunjukkanhubunganantarabanyaknyaelemen yang dieksekusidenganwaktueksekusi

  25. Orders of Growth (OoG) • Tingkat pertumbuhanwaktueksekusialgoritmajikaukuran input bertambah • Orders of Growth are also known as Efficiency Classes

  26. 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

  27. 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?

  28. 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)

  29. Asymptotic Notations O (big oh)  (big omega)  (big theta)

  30. 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

  31. 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

  32. (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

  33. (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

  34. 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?

  35. 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

  36. 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

  37. GrafikKelas-kelasOoG

  38. 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)

  39. 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

  40. 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)

  41. 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.

  42. 감사합니다 Grazias Kiitos Gratias Danke ﺷﻜﺮﺍﹰ 谢谢 TerimaKasih Merci Thank You धन्यवाद ありがとうございます

More Related