14. KOMPLEKSITAS ALGORITMA
Untuk keperluan analisis algoritma, kita perlu mengetahui seberapa cepat pertumbuhan atau perkembangan suatu fungsi. Pertumbuhan fungsi berkaitan erat dengan waktu yang diperlukan oleh sebuah komputer untuk menyelesaikan suatu tugas tertentu. Notasi-notasi yang digunakan untuk membandingkan pertumbuhan adalah: 14.1 PERTUMBUHAN FUNGSI
Notasi O besar (big O) Definisi Jika terdapat f(n) dan g(n), serta bilangan positif C dan n 0 maka f(n) = O (g(n)) sedemikian, sehingga 0 f(n) Cg(n) untuk n n 0 Dengan kata lain pertumbuhan f(n) tidak akan melebihi Cg(n) Cg(n) disebut batas atas (upper bound) Pasangan C dan n 0 tidak unik. Artinya ada beberapa C dan n 0. f(n) = O(g(n)) dibaca : f(n) is big “O” of g(n)
f(n) Cg(n) n n0n0 f(n) = O (g(n))
Contoh 14.1 Tunjukkan bahwa n 2 + 2n + 1 = O(n 2 ) Penyelesaian n 2 + 2n + 1 n 2 + 2n 2 + n 2 n 2 + 2n + 1 4n 2 untuk n 1 Jadi C = 4 ; n 0 = 1 atau C = 3 ; n 0 = 2 atau C = 2 ; n 0 = 3
Notasi Definisi Jika terdapat f(n) dan g(n), serta bilangan positif C dan n 0 maka f(n) = (g(n)) sedemikian, sehingga 0 Cg(n) f(n) untuk n n 0 Cg(n) disebut batas bawah (lower bound) Pasangan C dan n 0 tidak unik. Artinya ada beberapa C dan n 0.
f(n) Cg(n) n n0n0 f(n) = (g(n))
Contoh 14.2 Tunjukkan bahwa 8n 3 + 5n = (n 3 ) Penyelesaian 8n 3 + 5n 8n 3 untuk n 1 Jadi C = 8 ; n 0 = 1 atau C = 7 ; n 0 = 1 atau C = 6 ; n 0 = 1 dst.
Notasi Definisi Jika terdapat f(n) dan g(n), maka f(n) = (g(n)), jika terdapat bilangan positif C 1 dan C 2 dan n 0 sedemikian, sehingga memenuhi : 0 C 1 g(n) f(n) C 2 g(n) untuk n n 0 Dengan kata lain, f(n) = (g(n)) jika f(n) = O(g(n)) dan f(n) = (g(n)) untuk n n 0. f(n) = (g(n)) dibaca “f(n) adalah tetha g(n)” atau f(n) order g(n)
f(n) = (g(n)) f(n) C 1 g(n) n n0n0 C 2 g(n)
Contoh 14.3 Tunjukkan bahwa a) 2n 2 + n – 7 dan b) 5n 2 – 2n = (n 2 ) Penyelesaian a)C 1 n 2 2n 2 + n – 7 C 2 n 2 n 2 2n 2 + n – 7 3n 2 untuk n 4 C 1 = 1, C 2 = 3, n 0 = 4 b) C 1 n 2 5n 2 – 2n C 2 n 2 3n 2 5n 2 – 2n 5n 2 untuk n 1 C 1 = 3, C 2 = 5, n 0 = 1
nn2n2 3n23n2 5n 2 – 2n5n25n
nn2n2 4n24n2 5n 2 – 2n5n25n
o (little o) f(n) = o(g(n) jika pertumbuhan f(n) lebih lambat dari pertumbuhan g(n) untuk n yang sangat besar. Secara formal f(n) = o(g(n), jika Contoh 14.4 Tunjukkan bahwa 2n 2 = o(n 3 ) Penyelesaian: f(n) = 2n 2 g(n) = n 3
(little omega) f(n) = (g(n) jika pertumbuhan f(n) lebih cepat dari pertumbuhan g(n) untuk n yang sangat besar. Secara formal f(n) = (g(n), jika Contoh 14.5 Tunjukkan bahwa 2n 3 = (n 2 ) Penyelesaian f(n) = 2n 3 g(n) = n 2