Kompleksitas Algoritma Bahan Kuliah IF 2151 Matematika Disktit
Kompleksitas Algoritma Bahan Kuliah IF 2151 Matematika Disktit Rinaldi M/IF 2151 Matdis 1
Pendahuluan Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus (efisien). Algoritma yang bagus adalah algoritma yang mangkus. Kemangkusan algoritma diukur dari berapa jumlah waktu dan ruang (space) memori yang dibutuhkan untuk menjalankannya. Rinaldi M/IF 2151 Matdis 2
Algoritma yang mangkus ialah algoritma yang meminimumkan kebutuhan waktu dan ruang. Kebutuhan waktu dan ruang suatu algoritma bergantung pada ukuran masukan (n), yang menyatakan jumlah data yang diproses. Kemangkusan algoritma dapat digunakan untuk menilai algoritma yang bagus. Rinaldi M/IF 2151 Matdis 3
Mengapa kita memerlukan algoritma yang mangkus? Lihat grafik di bawah ini. Rinaldi M/IF 2151 Matdis 4
Model Perhitungan Kebutuhan Waktu/Ruang Kita dapat mengukur waktu yang diperlukan oleh sebuah algoritma dengan menghitung banyaknya operasi/instruksi yang dieksekusi. Jika kita mengetahui besaran waktu (dalam satuan detik) untuk melaksanakan sebuah operasi tertentu, maka kita dapat menghitung berapa waktu sesungguhnya untuk melaksanakan algoritma tersebut. Rinaldi M/IF 2151 Matdis 5
Rinaldi M/IF 2151 Matdis 6
Rinaldi M/IF 2151 Matdis 7
Rinaldi M/IF 2151 Matdis 8
Model abstrak pengukuran waktu/ruang harus independen dari pertimbangan mesin dan compiler apapun. Besaran yang dipakai untuk menerangkan model abstrak pengukuran waktu/ruang ini adalah kompleksitas algoritma. Ada dua macam kompleksitas algoritma, yaitu: kompleksitas waktu dan kompleksitas ruang. Rinaldi M/IF 2151 Matdis 9
Kompleksitas waktu, T(n), diukur dari jumlah tahapan komputasi yang dibutuhkan untuk menjalankan algoritma sebagai fungsi dari ukuran masukan n. Kompleksitas ruang, S(n), diukur dari memori yang digunakan oleh struktur data yang terdapat di dalam algoritma sebagai fungsi dari ukuran masukan n. Dengan menggunakan besaran kompleksitas waktu/ruang algoritma, kita dapat menentukan laju peningkatan waktu (ruang) yang diperlukan algoritma dengan meningkatnya ukuran masukan n. Rinaldi M/IF 2151 Matdis 10
Kompleksitas Waktu Dalam praktek, kompleksitas waktu dihitung berdasarkan jumlah operasi abstrak yang mendasari suatu algoritma, dan memisahkan analisisnya dari implementasi. Contoh 2. Tinjau algoritma menghitung rerata pada Contoh 1. Operasi yang mendasar pada algoritma tersebut adalah operasi penjumlahan elemen-elemen ak (yaitu jumlah+ak), Kompleksitas waktu Hitung. Rerata adalah T(n) = n. Rinaldi M/IF 2151 Matdis 11
Rinaldi M/IF 2151 Matdis 12
Rinaldi M/IF 2151 Matdis 13
Rinaldi M/IF 2151 Matdis 14
Rinaldi M/IF 2151 Matdis 15
Rinaldi M/IF 2151 Matdis 16
Rinaldi M/IF 2151 Matdis 17
Rinaldi M/IF 2151 Matdis 18
Rinaldi M/IF 2151 Matdis 19
Rinaldi M/IF 2151 Matdis 20
Rinaldi M/IF 2151 Matdis 21
Kompleksitas Waktu Asimptotik Rinaldi M/IF 2151 Matdis 22
Rinaldi M/IF 2151 Matdis 23
Rinaldi M/IF 2151 Matdis 24
Rinaldi M/IF 2151 Matdis 25
Contoh 9. Tentukan notasi O untuk T(n) = 2 n + 3 log(n) Penyelesaian: 2 n + 3 log(n) 2 n + 3 n = 5 n (untuk n 1) Jadi, T(n) = 2 n + 3 log(n) = O(n) Rinaldi M/IF 2151 Matdis 26
Contoh 10: Tentukan notasi O untuk T(n) = log(n 2 + 1). Penyelesaian: log(n 2 + 1) log(n 2 + n 2) untuk n 1 = log(n 2) = 2 log(n) Jadi, T(n) = log(n 2 + 1) = O(log n) Contoh 11. Tentukan notasi O untuk T(n) = log (n!) Penyelesaian: log(n!) = log(1. 2 …. n) = log(1) + log(2) + … + log(n – 1) + log (n) log(n) + … + log(n) = n log(n) Jadi, T(n) = log(n!) = O(n log (n)) Rinaldi M/IF 2151 Matdis 27
Contoh 12: Tentukan notasi O untuk T(n) = 1 k + 2 k + … + nk Penyelesaian: 1 k + 2 k + … + nk + … + nk = n. nk+1 Jadi, T(n) = 1 k + 2 k + … + nk = O(nk+1) Rinaldi M/IF 2151 Matdis 28
Perhatikan, bahwa karena notasi O-besar menunjukkan batas fungsi lebih atas (upper-bound function), maka tidak ditentukan seberapa besar batas itu. Jadi, T(n) = 2 + 3 n =O(n) T(n) = 2 + 3 n = O(n 2) juga benar T(n) = 2 + 3 n =O(n 3) juga benar, dst Tetapi, agar notasi O-besar bermakna, maka dalam praktek kita memilih fungsi f(n) sekecil mungkin. Jadi, kita menulis: T(n) = 2 + 3 n =O(n), bukan O(n 2) Rinaldi M/IF 2151 Matdis 29
Tunjukkan bahwa T(n) = 3 n 2 = O(n 3), tetapi T(n) = n 3 O(n 2) Penyelesaian: T(n) = 3 n 2 = O(n 3) karena 3 n 2 n 3 untuk semua n 1 T(n) = n 3 O(n 2) karena tidak ada C dan n 0 sedemikian sehingga n 3 C n 2 untuk semua n n 0 Rinaldi M/IF 2151 Matdis 30
Rinaldi M/IF 2151 Matdis 31
Aturan Untuk Menentukan Kompleksitas Waktu Asimptotik Rinaldi M/IF 2151 Matdis 32
Rinaldi M/IF 2151 Matdis 33
Rinaldi M/IF 2151 Matdis 34
Rinaldi M/IF 2151 Matdis 35
Rinaldi M/IF 2151 Matdis 36
Rinaldi M/IF 2151 Matdis 37
Rinaldi M/IF 2151 Matdis 38
Rinaldi M/IF 2151 Matdis 39
Rinaldi M/IF 2151 Matdis 40
Rinaldi M/IF 2151 Matdis 41
Rinaldi M/IF 2151 Matdis 42
Rinaldi M/IF 2151 Matdis 43
Rinaldi M/IF 2151 Matdis 44
Rinaldi M/IF 2151 Matdis 45
Rinaldi M/IF 2151 Matdis 46
Rinaldi M/IF 2151 Matdis 47
Rinaldi M/IF 2151 Matdis 48
Rinaldi M/IF 2151 Matdis 49
Rinaldi M/IF 2151 Matdis 50
Rinaldi M/IF 2151 Matdis 51
Rinaldi M/IF 2151 Matdis 52
Rinaldi M/IF 2151 Matdis 53
Rinaldi M/IF 2151 Matdis 54
Notasi Omega-Besar dan Tetha-Besar Rinaldi M/IF 2151 Matdis 55
Rinaldi M/IF 2151 Matdis 56
Rinaldi M/IF 2151 Matdis 57
Rinaldi M/IF 2151 Matdis 58
TEOREMA. Bila T(n) = am nm + am-1 nm-1 +. . . + a 1 n+ a 0 adalah polinom derajat m maka T(n) adalah berorde nm. Rinaldi M/IF 2151 Matdis 59
Latihan Soal Rinaldi M/IF 2151 Matdis 60
2. Berapa kali instruksi assignment pada potongan program dalam notas Bahasa Pascal di bawah ini dieksekusi? Tentukan juga notasi O-besar. for i : = 1 to n do for j : = 1 to n do for k : = 1 to j do x : = x + 1; Rinaldi M/IF 2151 Matdis 61
3. Untuk soal (a) dan (b) berikut, tentukan C, f(n), n 0, dan notasi O-besar sedemikian sehingga T(n) = O(f(n)) jika T(n) C f(n) untuk semua n n 0: (a) T(n) = 2 + 4 + 6 + … + 2 n (b) T(n) = (n + 1)(n + 3)/(n + 2) Rinaldi M/IF 2151 Matdis 62
Rinaldi M/IF 2151 Matdis 63
- Slides: 63