Kompleksitas waktu & notasi asimtotik
Menghitung T(n), notasi Big-O, Big-Omega, Big-Theta, aturan praktis, dan menyelesaikan rekurensi dengan Teorema Master.
SlidePengantar Strategi Algoritmik Kompleksitas waktu dan ruangFungsi Pertumbuhan dan Kompleksitas Algoritma
Dua algoritma bisa sama-sama benar tapi berbeda jauh kecepatannya. Analisis kompleksitas mengukur bagaimana jumlah langkah (atau memori) bertumbuh ketika ukuran input membesar, terlepas dari komputer atau bahasa yang dipakai.
Menghitung T(n)
Hitung operasi dasar (perbandingan, assignment, operasi aritmatika) sebagai fungsi dari :
function jumlahPasangan(a: number[]) {
let total = 0; // 1
for (let i = 0; i < a.length; i++) // n kali
for (let j = i + 1; j < a.length; j++) // n-1-i kali
total += a[i] * a[j]; // dieksekusi n(n-1)/2 kali
return total;
}
. Untuk besar, suku yang mendominasi, sehingga kita tulis .
Notasi asimtotik
- Big-O : batas atas. jika ada konstanta dan sehingga untuk semua .
- Big-Omega : batas bawah, .
- Big-Theta : batas ketat, ada di dan sekaligus.
Aturan praktis
- Abaikan konstanta: .
- Ambil suku dominan: .
- Loop berurutan dijumlah, loop bersarang dikali.
- Loop yang variabelnya dikali/dibagi konstanta setiap iterasi (misalnya
i *= 2) berjalan kali.
Rekurensi & Teorema Master
Algoritma divide and conquer menghasilkan rekurensi berbentuk
dengan = banyak submasalah, = ukuran tiap submasalah, = biaya membagi + menggabung. Bandingkan dengan :
| Kasus | Syarat | Hasil |
|---|---|---|
| 1 | ||
| 2 | ||
| 3 | (+ syarat regularitas) |
Contoh:
- Merge sort: . Di sini , kasus 2, sehingga .
- Binary search: . Di sini , kasus 2, sehingga .
- Karatsuba: . Di sini lebih besar dari , kasus 1, sehingga .