Kompleksitas Algoritma Bahan Kuliah IF2151 Matematika Disktit Rinaldi M/IF2151 Matdis
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/IF2151 Matdis
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/IF2151 Matdis
Mengapa kita memerlukan algoritma yang mangkus Mengapa kita memerlukan algoritma yang mangkus? Lihat grafik di bawah ini. Rinaldi M/IF2151 Matdis
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/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
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/IF2151 Matdis
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/IF2151 Matdis
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 jumlahjumlah+ak), Kompleksitas waktu HitungRerata adalah T(n) = n. Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Kompleksitas Waktu Asimptotik Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Contoh 9. Tentukan notasi O untuk T(n) = 2n + 3 log(n) Penyelesaian: 2n + 3 log(n) 2n + 3n = 5n (untuk n 1) Jadi, T(n) = 2n + 3 log(n) = O(n) Rinaldi M/IF2151 Matdis
Contoh 10: Tentukan notasi O untuk T(n) = log(n2 + 1). Penyelesaian: log(n2 + 1) log(n2 + n2) untuk n 1 = log(n2) = 2 log(n) Jadi, T(n) = log(n2 + 1) = O(log n) Contoh 11. Tentukan notasi O untuk T(n) = log (n!) log(n!) = log(1 . 2 … . n) = log(1) + log(2) + … + log(n – 1) + log (n) log(n) + log(n) + … + log(n) = n log(n) Jadi, T(n) = log(n!) = O(n log (n)) Rinaldi M/IF2151 Matdis
Contoh 12: Tentukan notasi O untuk T(n) = 1k + 2k + … + nk Penyelesaian: 1k + 2k + … + nk nk + nk + … + nk = n . nk+1 Jadi, T(n) = 1k + 2k + … + nk = O(nk+1) Rinaldi M/IF2151 Matdis
T(n) = 2 + 3n = O(n2) juga benar T(n) = 2 + 3n =O(n3) juga benar, dst Perhatikan, bahwa karena notasi O-besar menunjukkan batas fungsi lebih atas (upper-bound function), maka tidak ditentukan seberapa besar batas atas itu. Jadi, T(n) = 2 + 3n =O(n) T(n) = 2 + 3n = O(n2) juga benar T(n) = 2 + 3n =O(n3) 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 + 3n =O(n), bukan O(n2) Rinaldi M/IF2151 Matdis
Tunjukkan bahwa T(n) = 3n2 = O(n3), tetapi T(n) = n3 O(n2) Penyelesaian: T(n) = 3n2 = O(n3) karena 3n2 n3 untuk semua n 1 T(n) = n3 O(n2) karena tidak ada C dan n0 sedemikian sehingga n3 C n2 untuk semua n n0 Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Aturan Untuk Menentukan Kompleksitas Waktu Asimptotik Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Notasi Omega-Besar dan Tetha-Besar Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis
TEOREMA. Bila T(n) = am nm + am-1 nm-1 + TEOREMA. Bila T(n) = am nm + am-1 nm-1 + ... + a1n+ a0 adalah polinom derajat m maka T(n) adalah berorde nm. Rinaldi M/IF2151 Matdis
Latihan Soal Rinaldi M/IF2151 Matdis
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/IF2151 Matdis
3. Untuk soal (a) dan (b) berikut, tentukan C, f(n), n0, dan notasi O-besar sedemikian sehingga T(n) = O(f(n)) jika T(n) C f(n) untuk semua n n0: (a) T(n) = 2 + 4 + 6 + … + 2n (b) T(n) = (n + 1)(n + 3)/(n + 2) Rinaldi M/IF2151 Matdis
Rinaldi M/IF2151 Matdis