1 / 27

ANALISA ALGORITMA

ANALISA ALGORITMA. Tim Matematika Diskrit. Pendahuluan. Algoritma adalah spesifikasi urut-urutan langkah untuk melakukan pekerjaan tertentu . Dalam program komputer , algoritma berarti urutan-urutan langkah kasar yang harus dilakukan untuk menyelesaikan masalah .

kimn
Download Presentation

ANALISA ALGORITMA

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. ANALISA ALGORITMA Tim MatematikaDiskrit

  2. Pendahuluan Algoritmaadalahspesifikasiurut-urutanlangkahuntukmelakukanpekerjaantertentu. Dalam program komputer, algoritmaberartiurutan-urutanlangkahkasar yang harusdilakukanuntukmenyelesaikanmasalah. Algoritmaharusdibuatsebelumpembuatan program. Algoritmaharuslahbenar. Algoritma yang baikharusmampumemberikanhasil yang sedekatmungkindengannilai yang sebenarnya. Efisiensialgoritma (efisiensiwaktudanmemori)

  3. Notasi “O” Perbedaanwaktu proses sebagaifungsijumlah data yang diprosessangaterathubungannyadenganlajupertumbuhan (rate of growth) algoritma yang bersangkutan. Lajupertumbuhanmenunjukkanfaktorkelipatanwaktu proses seiringdengankenaikanjumlah data. Dalamkomputer, lajupertumbuhandinyatakandalamnotasi-O. (dibacanotasi big-oh) Notasi-O memberikancarauntukmenyatakanlajupertumbuhanalgoritmasecara global/aproksimasidantidakmemperhatikanperbedaanfaktorkonstantasertaperbedaan-perbedaan lain yang tidakbegituberpengaruh.

  4. Misalkan f dan g adalahfungsiberhargariil yang didefinisikanpadahimpunanbilangan-bilanganriil. Fungsi f berorder g (ditulis f(x) = O(g(x)) biladanhanyabilaterdapatsuatubilanganpositif M danbilanganriil x0sedemikianhingga |f(x)| ≤ M |g(x)| untuk x > x0 f(x) = O(g(x)) dibaca “g adalahaproksimasi big-oh untuk f”. Definisi di atasdapatdigambarkansbb. Perhatikanbahwa grafik M |g(x)| berada di atasgrafik |f(x)| untukx > x0. Y grafikM.g(x) grafik f(x) x0 X

  5. Contoh 1 Nyatakanpertidaksamaan-pertidaksamaansbbdalamnotasi-O a. |17x6 – 3x3 + 2x + 8 | ≤ 30 |x6| untuksemuabilanganriil x > 1 b. | x + 3x(2log x) | ≤ 4 | x(2log x) | untuksemuabilanganriil x > 2 Penyelesaian: a. f(x) = 17x6 – 3x3 + 2x + 8; g(x) = x6 Ambil M = 30 dan x0 = 1, makapertidaksamaandapatdituliskan sebagai | f(x) | ≤ M g(x) x > x0sehingga f(x) = 17x6 – 3x3 + 2x + 8 adalah O (x6) b. f(x) = x + 3x(2log x); g(x) = x (2log x) Ambil M = 4 dan x0 = 2. Makapertidaksamaandapatdituliskan sebagai | f(x) | ≤ M g(x) x > x0sehingga f(x) = x + 3x (2log x) adalah O (x(2log x))

  6. Contoh 2 Buktikanbahwa: a. 3x3 + 2x + 7 adalah O(x3) untuk x > 1 b. 7x3 – 2x + 3 adalah O(x3) untuk x > 1 Penyelesaian: a. x > 1, | 3x3 + 2x + 7 | = 3x3 + 2x + 7 ≤ 3x3 + 2x3 + 7x3karena 2x < 2x3dan 7 < 7x3untuk x > 1  | 3x3 + 2x + 7 | ≤ 12x3 = 12 | x3 | untuksetiap x > 1 karena x3 tidaknegatif. Ambil M = 12 dan x0 = 1. makapertidaksamaan di atasberarti | 3x3 + 2x + 7 | ≤ M | x3 | x > x0. Atauberartibahwa 3x3 + 2x + 7 adalah O (x3)

  7. b. | 7x3 – 2x + 3 | ≤ | 7x3 + 2x + 3 | ≤ | 7x3| + |2x| + |3| karena x > 1  | 7x3 – 2x + 3 | ≤ 7x3 + 2x + 3 karena x > 1 sehingga | x | = x  | 7x3 – 2x + 3 | ≤ 7x3 + 2x3 + 3x3karena 2x < 2x3dan 3 < 3x3  | 7x3 – 2x + 3 | ≤ 12x3  | 7x3 – 2x + 3 | ≤ 12 | x3 | karena x > 1 sehingga | x | = x Ambil M = 12 dan x0 = 1 maka | 7x3 – 2x + 3| ≤ M | x3| x > x0 yang berarti 7x3 – 2x + 3 adalah O (x3) Teorema 1. Jika a0, a1, …, anadalahbilanganriildengan an ≠ 0 maka f(x) = anxn + … + a1x + a0adalah O (xn)

  8. Contoh 3 Carilah order deret 1 + 2 + 3 + … + n Penyelesaian: 1 + 2 + 3 + … + n = ½ n (n+1) = ½ n2 + ½ n Menurutteorema 1, ½ n2 + ½ n adalah O (n2) sehingga 1 + 2 + 3 + … + n adalahO (n2)

  9. Teorema 2. Jika b adalahbilanganriil > 1 maka: blogxadalah O(xn) untuksemuabilanganbulat n  1 xnadalah O(bx) untuksemuabilanganbulat n  0 x blogxadalah O(x2) x  b. y = 2x y = x2 y = x 2log x y = x y = 2 log x

  10. Notasi-O yang menyatakanbahwa f(x) = O(g(x)) hanyalahmensyaratkanbahwa |f(x)|  M g(x) x > x0. Tidakadasyaratbahwabatas g(x) tersebutharusdibuatsedekatmungkindengan f(x). Secarapraktismemangsulituntukmencarifungsi g(x) yang grafiknyatepatterletakdiatas f(x) untuk x > x0. Biasanyadigunakanfungsi g(x) yang lazimdipakaidancukupdekatdengan f(x). Olehkarenaitu, order suatufungsitidaklahtunggal. Sebagaicontoh, polinomial f(x) = anxn + … + a1x + a0mempunyai order O(xn), tetapipolinomialitujuga O(bx). Karenakedua order tersebutseringdipakai, sedangkangrafikfungsi f(x) = bxlebihatasdibandingxn, makadikatakanbahwapolinomialanxn + … + a1x + a0adalah O(xn) danbukan O(bx).

  11. Teorema 3. Hirarkifungsi yang seringdipakaiuntukmenyatakan orderadalahsebagaiberikut: (setiapfungsimerupakan big-oh darifungsi di kanannya) 1, 2log(n), … , 4√n, 3√n, √n, n, n(2log(n)), n√n, n2, n3, …, 2n, n!, nn

  12. Teorema 4. a. Jika f(n) = O(g(n)) dan c adalahkonstanta, maka c f(n) = O(g(n)) b. Jika f(n) = O(g(n)) dan h(n) = O(g(n)), maka f(n) + h(n) = O(g(n)) c. Jika f(n) = O(a(n)) dan g(n) = O(b(n)), maka f(n) g(n) = O(a(n) b(n)) d. Jika a(n) = O(b(n)) dan b(n) = O(c(n)), maka a(n) = O(c(n)) e. Jika f(n) = O(a(n)) dan g(n) = O(b(n)), maka f(n) + g(n) = O(max {|a(n)|, |b(n)|}

  13. Bukti: • f(n) = O(g(n)) berartiterdapat M > 0 dan n0 sedemikianhingga |f(n)|  M |g(n)| n > n0 Jikakeduaruasdikalikandengan |c| maka |c| |f(n)|  |c| M |g(n)| atau |c f(n)|  |c| M |g(n)| Sebut |c| M = M1. Karena M dan c adalahkonstanta, maka M1 = |c| M jugakonstanta sehingga |c f(n)|  M1 |g(n)|. Iniberartibahwa c f(n) = O(g(n))

  14. b. f(n) = O(g(n)) berartiterdapat M1 > 0 dan n1sedemikianhingga |f(n)|  M1 |g(n)| n > n1 h(n) = O(g(n)) berartiterdapat M2 > 0 dan n2sedemikianhingga |h(n)  M2 |g(n)| n > n2 |f(n) + h(n)|  |f(n)| + |h(n)| Ambil n0 = max (n1, n2). Karena |f(n)|  M1 |g(n)| dan |h(n)|  M2 |g(n)|, maka |f(n) + h(n)|  M1 |g(n)| + M2 |g(n)| n > n0 |f(n) + h(n)|  (M1 + M2) |g(n)| n > n0 |f(n) + h(n)|  M |g(n)| dengan M = M1 + M2 Pertidaksamaanterakhiriniberartibahwa f(n) + h(n) = O(g(n))

  15. Contoh 4. Nyatakanfungsi di bawahinisebagainotasi-O fungsi-fungsiyang adadalamteorema 3. a. n + n (2log n) b. √n3sin n (2log n) c. ½ n (2log n) + 3n + 15

  16. Penyelesaian: a. n = O(n), n (2log n) = O(n(2log n)) Menurutteorema 4(e), maka n + n(2log n) = O (max {n, n(2log n)}) Dalamteorema 3, O(n) terletaklebihkiridibandingkan dengan n (2log n) maka max { n, n (2log n)} = n (2log n), sehingga n + n (2log n) adalah O(n (2 log n)) b. √n3sin n  n3karena sin n  1, sehingga√n3sin n adalah O(√n3). Di sampingitu, 2log n adalah O(√n) Menurutteorema 4 (c) maka√n3 sin n (2log n) adalah O(√n3√n) = O(n2)

  17. c. ½ n (2 log n) adalah O(n (2 log n) 3n adalah O(n), 15 adalah O(1) menurutteorema 4(e) maka ½ n (2 log n) + 3n + 15 adalah O(max { n (2 log n), n, 1}). karena n (2 log n) terletak paling kanan, maka max { n ( 2 log n), n, 1} = n (2 log n), sehingga ½ n ( 2 log n) + 3n + 15 adalah O(n (2 log n))

  18. Contoh 5. Buktikanbahwa 2nbukan O(na) untuksemuabilanganbulata > 1. Penyelesaian: Akandibuktikanmetodekontradiksi. Misalkan 2n = O(na). Makaterdapatlahbilanganbulat M > 0 danbilanganriil n0 sehingga|2n|  M |na| untuk n > n0. Karena n dan a positifmaka hargamutlakbisadihilangkan. Jadi 2n  M na. Jikakeduaruasdilogaritmakan, akanmenghasilkan pertidaksamaan: 2 log (2n)  2 log (M na) n  2log M + a (2log n) n / (2log n)  (2 log M)/(2 log n) + a Untukn > 2 maka2 log n > 1 sehingga(2 log M)/(2 log n) < 2 log M

  19. Didapatpertidaksamaan n/(2 log n)  2 log M + a Terjadilahkontradiksikarena M dan a adalahsuatukonstanta sehingga2 log M + a adalahsuatubesaran yang harganyatetap. Sebaliknyaruaskiridapatmenjadisemakinbesaruntuk n yang semakinbesar, sehinggadapatmelebihibesarnyakonstantaruas kanan. Jadipengandaian 2n = O(na) salah. Yang benar 2nbukan O(na)

  20. EfisiensiAlgoritma Analisa yang paling seringdilakukanpadasuatualgoritmaadalahwaktuproses. Menentukanwaktu proses secaratepatmerupakanpekerjaan yang sngatsulit, karenawaktu proses secaraeksaksangattergantungpadaimplementasialgoritmadanperangkatkeras yang dipakai. Analisa yang diinginkanuntukmenyatakanefisiensialgoritmaharuslahdibuatseumummungkinsehinggabisadipakaipadasemuaalgoritma, terlepasdariimplementasimaupunperangkatkeras yang digunakan. Kompleksitasalgoritmacukupdinyatakandalam order waktu proses (Big-Oh) sebagaifungsijumlah data masukan yang diberikan.

  21. Contoh 6. Perhatikanpotongan program untukmenghitungjumlahan n buahbilanganriil yang disimpandalamsuatuvektor V Sum = 0 bagian (a) For i = 1 to n Sum = sum + V[i] bagian (b) End For I Write (sum) bagian (c) Carilahoperasiaktif program tersebutdannyatakan order waktu prosessebagaifungsijumlahmasukan (n).

  22. Penyelesaian: Untukmencarioperasiaktif, haruslahditentukanberapa kali program dieksekusipadatiap-tiapbagiannya. • Bagian (a) dieksekusi 1 kali • Bagian (b) merupakansuatukalang (loop). Kalanginiakandiprosesberdasarkankenaikanhargai, darii = 1 hinggai = n. Jadistatemen Sum = sum + V[i] akandiprosessebanyak n kali sesuaidengankenaikanhargai. • Bagian (c) akandiproses 1 kali. Karenabagian (b) merupakanbagian yang paling seringdiproses, makabagian (b) merupakanoperasiaktifnya. Bagian (a) dan (c) dapatdiabaikankarenabagian-bagiantsbtidakdiprosesseseringbagian (b). Bagian (b) diprosessebanyak data yang dimasukkan (n). Maka program penjumlahanbilanganriilmempunyai order sebandingdengan n. Jadi, program mempunyai order O(n).

  23. Contoh 7. Carilah order waktuprosesbagian-bagian program dibawahini (n adalahbilanganbulatpositif yang menyatakanjumlah data). a. For i = 2 to n A = 2*n + i*n End For i b. For i = 1 to n For j = 1 to i A = n + i*j End For i End For j

  24. Penyelesaian: a. Jumlahpemrosesanstatemen A = 2*n + i*n mengikutiiterasidalami, yaitudarii = 2 hinggani = n. Jadisebanyak (n-2) + 1 = (n-1) kali. Perhatikanbahwa yang dipentingkandisinibukanlahberapanilaivariabel A (yang merupakanfungsidariidan n), tetapifrekuensipemrosesan A. Jadialgoritmamempunyai order O(n). b. Padai=1, j berjalandari 1 hingga 1 sehingga A diproses 1 kali Padai=2, j berjalandari 1 hingga 2 sehingga A diproses 2 kali dst Padai=n, j berjalandari 1 hingga n sehingga A diproses n kali. Secarakeseluruhan A akandiprosessebanyak (1+2+…+n) = n(n+1)/2 kali. Makaalgoritmamempunyai order O(n2).

  25. Latihan 1. Carilahbilanganbulat N sedemikianhinggajika n > N, maka n/log n > 100. 2. Manafungsi yang lebihbesar (grafiknyalebihatas): log(n) ataukahlog (log(n))? Jelaskanalasansaudara. Carilah Big-Oh fungsisoalnomor 3-8 berikutini: 3. f(n) = n2 + 3n – 1 4. f(n) = (3n2 + 5n – 13)2 5. f(n) = (3 log n + n)2 6. f(n) = (n (2log n) + 1)2 7. f(n) = 1 + 2 + 22 + 23 + … + 2n 8. f(n) = n + n/2 + n/4 + … + n/2n

  26. Carilahkonstanta M sehingga f(n) = O(g(n)) untuktiap-tiapsoalnomor 9 – 12 berikutini: 9. f(n) = 17n + 31; g(n) = n 10. f(n) = 3n2 – 4n + 5: g(n) = n2 11. f(n) = 0,2n + 100.000; g(n) = n 12. f(n) = n3 + 3n2 + 5n + 11; g(n) = n4 13. Buktikanbahwa f(n) = n2bukanlah O(n) 14. Ada 2 buah program (misal L dan Q) yang masing-masingdapatmenyelesaikansuatumasalah yang samadenganbenar. Program L bersifat linier danmembutuhkanwaktu 20 menituntukmenyelesaikanmasalahdengan 10 data. Program Q adalahkuadratis yang membutuhkanwaktu 5 menituntukmenyelesaikanmasalah yang samadengan 10 data. Andaikankitamempunyaimasalahdengan 10 data, program mana yang lebihcepatuntukmenyelesaikan?

  27. Dalampotongan program soalnomr 15 – 16 dibawahini: a. Hitunglahjumlahoperasi (sepertipenjumlahan, perkaliandan lain-lain) yang harusdilakukanoleh program tersebut. b. Hitunglah order/kompleksitasalgoritmatersebut yang dinyatakansebagaifungsijumlah data (= n) 15. For i=3 to (n-1) a = 3*n + 2*i- 1 End For i 16. Max = A[1] For i=2 to n If max < a[i] then max = a[i] End For i

More Related