Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Analisa Algoritma Teknik Informatika Universitas Muhammadiyah Malang 2011 Algoritma dan Struktur Data.

Presentasi serupa


Presentasi berjudul: "Analisa Algoritma Teknik Informatika Universitas Muhammadiyah Malang 2011 Algoritma dan Struktur Data."— Transcript presentasi:

1 Analisa Algoritma Teknik Informatika Universitas Muhammadiyah Malang 2011 Algoritma dan Struktur Data

2 Tujuan Instruksional Memahami tentang metode untuk analisa algoritma

3 Topik Big-O

4 Algorithms Complexity Mendapatkan algoritma yang efisien. Ukuran efisien : minim dalam kebutuhan ruang dan waktu. Bergantung pada jumlah data yang diproses.

5 Mana yang lebih baik? pilihan 1 : Algoritma biasa dengan komputer yang cepat. pilihan 2 : Menggunakan algoritma yang efisien dengan komputer standart.

6 Studi Kasus 1.Algoritma yang waktu eksekusinya dalam orde eksponensial 2.Sebuah komputer yang mampu menjalankan program dengan masukan n dalam waktu detik. n = jumlah data. n

7 Penyelesaian Dapat dihitung T(n) dari persamaan x 2 n : n = 10, waktu eksekusi kurang lebih 1/10 detik. n=20, waktu eksekusi kurang lebih 2 menit. n=30, waktu eksekusi lebih dari satu hari. n=38?

8 Efficiency Computer Jika kecepatan komputer di-upgrade sebesar 100 kali ( ). Maka dengan algoritma yang sama : jumlah masukan = n, waktu = detik. n=45, waktu yang dibutuhkan kurang lebih satu tahun penuh n 10 x 2

9 Efficiency Algorithms Misal ada algoritma baru yang dapat menyelesaikan masalah tsb dalam orde kubik ( ) Dengan menggunakan komputer pertama waktu yang dibutuhkan detik. Sehingga : n = 900, waktu yang dibutuhkan kurang dari 1 hari. 3 n x n

10 Efficiency Algorithms Dengan komputer pertama berapa besar masukan yang dapat diproses selama satu tahun?... Dengan komputer kedua berapa masukan yang dapat diproses selama satu tahun?...

11 Efficiency Algorithms waktu = (kurang lebih) 1 tahun Komputer 1, n = 6800 Komputer 2, n =

12 Time Complexity (Kompleksitas Waktu)

13 Time Complexity Berdasarkan jumlah operasi/perintah yang dieksekusi. Pada algoritma pengurutan dan pencarian operasi abstrak yang mendasari adalah perbandingan (operator : if).

14 Contoh Berikut adalah algoritma untuk mencari elemen terbesar dalam deret array yang berukuran n elemen. Lakukan analisa pada algoritma tersebut menggunakan kompleksitas waktu dengan menghitung jumlah operasi perbandingan.

15 Algoritma (1) Komplekasitas waktu T(n) = n-1 Void Cari_maksimum(int n, int A[]) { int maks = A[0]; for(int i=1;imaks) maks = A[i]; }

16 Contoh Misal waktu yang dibutuhkan sebuah PC untuk melakukan operasi perbandingan adalah detik. Maka untuk n=1000, kebutuhan waktu untuk algoritma cari_maksimum diatas adalah : T(1000) = (1000-1) x T(1000) = detik

17 Time Complexity Dibedakan menjadi 3 macam : 1.Tmax(n) 2.Tmin(n) 3.Tavg(n)

18 Contoh Berikut adalah algoritma pencarian sequential search. Dimana bilangan yang ada pada array telah terurut ascending dan tidak ada bilangan yang sama. Hitunglah kompleksitas waktu terbaik, terburuk, dan rata-rata. Asumsikan elemen yang dicari (x) ada.

19 Algoritma (2) Void pencarian_sequential(int n, int A[],int x) { int j=0; boolean ketemu=false; while(j

20 Pembahasan Algoritma tersebut membandingkan tiap elemen yang ada pada array dengan x. Operasi perbandingan yang dihitung adalah A[j] = x. Best case, jika elemen pertama array = x. Sehingga Tmin(n) = 1. Worst case, jika A[n-1]=x atau x tidak ditemukan. Sehingga Tmax(n) = n. Average case, jika x ditemukan pada posisi ke-j, maka A[j] = x akan dieksekusi sebanyak j kali. Sehingga Tavg(n) = (n+1)/2

21 Big-O (Kompleksitas Waktu Asimptotik)

22 Kompleksitas Waktu Asimptotik Pada kompleksitas waktu asimptotik, kinerja algoritma diukur dengan membuat makna “sebanding”. Yaitu dengan menghilangkan faktor koefisien dalam ekspresi T(n).

23 Contoh Misal worst case dari sebuah algoritma adalah T(n) = 2n 2 + 6n + 1 Untuk n yang besar, T(n) sebanding dengan n pangkat 2 (lihat tabel dibawah) nT(n) = 2n 2 + 6n + 1n2n

24 Penjelasan Suku-suku yang tidak mendominasi pada T(n) dapat diabaikan, sehingga kompleksitas waktu untuk T(n) adalah 2(n 2 ) + suku-suku lainnya. Dengan mengabaikan koefisien 2 pada 2n^2 maka T(n) = O(n 2 )[dibaca : T(n) adalah O dari n 2 ] Jadi kita telah mengganti ekspresi T(n) = 2n 2 + 6n + 1 dengan yang lebih sederhana seperti n 2. Notasi O disebut notasi Big-O yang merupakan notasi untuk kompleksitas waktu asimptotik.

25 Notasi Big-O T(n) = O(f(n)) dibaca Tn adalah O dari f(n) Bila terdapat koefisien C dan n 0 maka : T(n) <= C(f(n)) Untuk menunjukkan T(n) = O(f(n), yang perlu dilakukan adalah menemukan pasangan C dan n 0 sehingga T(n) <= C(f(n))

26 Contoh Tunjukan bahwa : T(n) = 3n +2 = O(n) penyelesaian : 3n + 2 = O(n) karena 3n + 2 =1 maka C = 5 dan n 0 =1 T(n) = 2n 2 + 6n + 1 = O(n 2 )

27 Contoh Penyelesaian : 2n 2 +6n + 1 = O(n 2 ) Untuk semua n>=1 2n 2 +6n + 1 <= 2n 2 +6n 2 + n 2 =9n 2 sehingga C = 9 dan n 0 =1 atau : Untuk semua n>=6 2n 2 +6n + 1 <= n 2 +n 2 + n 2 =3 n 2 sehingga C = 3 dan n 0 =6

28 Teorema Big-O Misal T1(n) = O(f(n)) dan T2(n) = O(g(n)), maka : 1. T1(n) + T2(n) = O(f(n)) + O(g(n)) = O(max(f(n),g(n))) 2. T1(n)T2(n) = O(f(n))O(g(n)) = O(f(n)g(n)) 3. O(cf(n)) = O(f(n)), c adalah tetapan 4. f(n) = O(f(n))

29 Aturan Big-O Dapat ditentukan dengan salah satu dari 2 cara berikut : 1.Jika kompleksitsa waktu T(n) dari algoritma diketahui, maka kompleksitas waktu asimptotik dapat langsung ditentukan denganmengambil suku yang mendominasi fungsi T dan menghilangkan koefisien-nya. contoh : T(n) = n-1 = O(n) T(n)=(n+1)/2=O(n)

30 Aturan Big-O 2. Menghitung Big-O untuk setiap instruksi didalam algoritma kemudian menerapkan teorema Big-O. Aturan : a. Pengisian nilai(assignment), perbandingan, operasi aritmatik, read, write : membutuhkan waktu O(1) b.Pengaksesan array, memilih field dari sebuah record : waktu O(1). c.If C then S1 else s2, membutuhkan waktu T c + max(T s1, T s2 ) yang dalam hal ini Tc, Ts1, dan T s2 adalah kompleksitas waktu C, S1, dan S2.

31 Aturan Big-O d.Perulangan for, kompleksitas waktunya adalah jumlah perulangan dikali dengan kompleksitas waktu dari body perulangan. e. While C do S atau repeat S until C. Untuk kedua perulangan tersebut kompleksitas waktu yang dibutuhkan adalah jumlah perulangan dikali dengan kompleksitas waktu dari body C dan S. f.Prosedur dan fungsi. Waktu yang dibutuhkan untuk memindahkan kendali dari fungsi yang dipanggil adalah O(1). g.Untuk fungsi/prosedur rekursif, digunakan teknik perhitungan kompleksitas dengan relasi rekurens.

32 Pengelompokan Algoritma (Berdasarkan Notasi Big-O) Constant O(1) Logarithmic O(log n) Linear O(n)O(n)O(n)O(n) Quadratic O(n2)O(n2)O(n2)O(n2) Cubic O(n3)O(n3)O(n3)O(n3) Polynomial O(np)O(np)O(np)O(np) Exponential O(an)O(an)O(an)O(an)

33 Notasi Big-Omega dan Big-Tetha Big-Ω (Big-Omega) Digunakan untuk mendefinisikan batas bawah (lower bound) dalam kompleksitas waktu. T(n) = Ω (g(n))(dibaca T(n) adalah Omega dari f(n)) T(n) berorde paling kecil g(N) bila terdapat koefisien C dan n o sedemikian sehingga : T(n) ≥ C(f(n)) untuk n ≥ n o Big-Θ (Big-Tetha) T(n) = Θ (h(n))(dibaca T(n) adalah tetha dari h(n)) T(n) berorde sama dengan h(n) jika T(n)=O(h(n)) dan T(n)= Ω(g(n))

34 Contoh Tentukan notasi Ω dan Θ untuk T(n) = 2n 2 +6n+1. jawab :  2n 2 +6n+1 ≤ 9n 2 n ≥ 1 (C=9) maka : 2n 2 +6n+1 =O(n 2 )  2n 2 +6n+1 ≥ 2n 2 n ≥ 1 (C=2) maka : 2n 2 +6n+1 =Ω(n 2 )  Karena 2n 2 +6n+1 =O(n 2 ) dan 2n 2 +6n+1 =Ω(n 2 ), maka 2n 2 +6n+1 =Θ(n 2 )

35 Space Complexity (Kompleksitas Ruang)

36 Space Complexity Space/memory

37 Latihan Tentukan waktu yang dibutuhkan [T(n)] untuk tiap kinerja algoritma berikut dengan kecepatan PC sebesar untuk jumlah data berturut turut 10, 15, 20, 25, dan 30 : 1.n 2.n 2 3.n 3

38 Latihan 1. Pada algoritma berikut berapa kali pemanggilan foo(). for (j = 1; j <= N; ++j) { foo( ); }

39 Latihan 2. Berapa kali perintah x=x+1 pada algoritma berikut di-eksekusi? Nyatakan kompleksitas waktu asimptotiknya dalam Big-O. i = 2; while(i

40 Latihan Tentukan kompleksitas waktu asimptotik (Big-O) Tunjukkan bahwa T(n) = O(f(n)) dengan menemukan pasangan C dan n 0 sehingga T(n) ≤ C(f(n)). 1.T(n) = n+1024 = O(n) 2.T(n) = 10n 2 +4n+2 = O(n 2 )

41 Latihan Tentukan kompleksitas waktu asimptotik (Big-Ω) Tuliskan notasi Big-omega untuk tiap fungsi berikut : 1.6n 3 +12n n 2 +4n+2

42 Tugas 1. Tentukan waktu yang dibutuhkan [T(n)] untuk tiap kinerja algoritma berikut dengan kecepatan PC sebesar untuk jumlah data berturut turut 90, 125, dan 150 : a. n b. n 3 c. n 2 2 n

43 Tugas Tunjukkan bahwa T(n) = O(f(n)) dengan menemukan pasangan C dan n 0 sehingga T(n) ≤ C(f(n)). 1.T(n) = n 2 /10+2 n = O(2 n ) 2.T(n) = 6n n = O(2 n ) 3.T(n) = 3n 2 +2n+5 = O(n 2 )

44 Pustaka Sartaj Sahni, “Data Structures & Algorithms”, Presentation L Mitchell Waite, “Data Structures & Algorithms in Java”, SAMS, 2001


Download ppt "Analisa Algoritma Teknik Informatika Universitas Muhammadiyah Malang 2011 Algoritma dan Struktur Data."

Presentasi serupa


Iklan oleh Google