NOTASI ASIMTOTIK (ASYMTOTIC NOTATION) Fundamentals of Algorithmics
Notasi untuk “the order of” Misal f : N R0 dengan , n bisa dianggap sebagai ukuran instance. t(n) merepresentasikan kuantitas resource yang diberikan dan yang di-spent pada instance tersebut oleh implementasi tertentu dari algoritma. Fungsi lain f : N R0 dengan f(n)=n2. Dikatakan bahwa t(n) berada dalam order dari (is in the order of) f(n) jika t(n) terbatas atas oleh kelipatan riil positif dari f(n) untuk semua n cukup besar.
Notasi untuk “the order of” – Cont. Secara matematik, ada konstanta riil positif c dan batas (threshold) integer n0 sehingga t(n) cf(n) dengan n n0. Untuk contoh di atas, jelas bahwa jika n 1, berlaku n n2 dan 1 n2. Sehingga, untuk n 1, t(n) = 27n2 + (355/113) n + 12 … sehingga c = 42 16/113, n0 = 1.
Notasi untuk “the order of” – Cont. Notasi dibaca “big Oh of f(n)” : himpunan semua fungsi t : N R0 sedemikian hingga t(n)cf(n) untuk semua nn0 untuk suatu bilangan riil positif c dan batas bilangan bulat n0. Dengan kata lain,
Notasi untuk “the order of” – Cont. Aturan threshold : bila hanya bila ada konstanta riil positif c sehingga t(n)cf(n) untuk masing2 bilangan alam n. Misal f, g : N R0 dua fungsi sebarang dari bilangan2 alam ke bilangan riil tak-negatif. Maka aturan maximum mengatakan bahwa : O( f(n) + g(n) ) = O( max( f(n), g(n) ) ) p, q : N R0 didefinisikan untuk masing-masing bilangan alam n oleh p(n) = f(n) + g(n) dan q(n) = max( f(n), g(n) ). Untuk sebarang fungsi t : N R0, aturan maximum mengatakan bahwa t(n) O( p(n) ) bila hanya bila t(n) O( q(n) ).
Notasi untuk “the order of” – Cont. Perhatikan Bukti aturan maximum (untuk kasus dua fungsi) f(n) + g(n) = min( f(n), g(n) ) + max( f(n), g(n) ) dan 0 min( f(n), g(n) ) max( f(n), g(n) ) sehingga max( f(n), g(n) ) f(n) + g(n) 2 max( f(n), g(n) ) Selanjutnya, perhatikan sebarang t(n) O( f(n)+g(n) ) t(n) O(max( f(n), g(n) ) ). Sebaliknya, jika t(n) O(max(f(n), g(n))) t(n) O( f(n)+g(n) ).
Notasi untuk “the order of” – Cont. (hati-hati untuk kasus) O(n) = O(n + n2 – n2) = O(max(n, n2, -n2)) = O(n2) Sebaliknya O(t(n))=O(11n3log n + n3log n – 5n2 + log2 n + 36) = O(max(O(11n3log n, n3log n – 5n2, log2 n, 36)) = O(11n3log n) = O(n3log n) meskipun n3log n – 5n2 < 0 dan 36 > 11n3log n untuk nilai n yang kecil. Tapi tidak akan terjadi untuk n yang cukup besar.
Notasi untuk “the order of” – Cont. Dalam notasi asimtotik, biasanya tidak perlu menentukan basis logaritma, sebab loga n = loga b logb n, untuk semua bilangan riil positif a, b, dan n sedemikian hingga tak satupun dari a dan b yang sama dengan 1. Jadi loga b merupakan konstanta positif ketika a dan b adalah konstanta2 > 1. Sehingga, loga n dan logb n hanya berbeda dengan faktor pengali konstan. Oleh karena itu, O( loga n ) = O( logb n )
Notasi untuk “the order of” – Cont. Perhatikan O( n2/(log3 n (n lg n) )) adalah sama dengan O( ( n/log n)1.5) Notasi “O” bersifat : reflexive, dan transitive. Untuk prove bahwa fungsi t(n) O(f(n)) adalah dengan “proof by contradiction”. Misal t(n)=(1/1000) n3 dan f(n)=1000 n2; untuk n < 106 maka t(n) < f(n) t(n) O(f(n)). Selanjutnya, asumsikan t(n) O(f(n)), dengan “threshold rule” maka ada konstanta riil positif c sehingga t(n) < c f(n) untuk semua n 1. Tapi, t(n) < c f(n) artinya … , akhirnya terjadi kontradiksi.
The “Limit rule” Untuk sebarang fungsi f dan g : N R0, Jika lim (n∞) [f(n)/g(n)] R+, maka f(n) O(g(n)) dan g(n) O(f(n)). Jika lim (n∞) [f(n)/g(n)] = 0, maka f(n) O(g(n)) dan g(n) O(f(n)). Jika lim (n∞) [f(n)/g(n)] = + ∞, maka f(n) O(g(n)) dan g(n) O(f(n)). Contoh f(n) = log n dan g(n) = n. Dengan de l’Hôpital’s rule, didapat : lim (n∞) [f(n)/g(n)] = … = 0, jadi menggunakan aturan (2).
The “Omega” notation Notasi big-o (O) dirancang hanya untuk memberi batas atas (upper bound) pada jumlah resource yang diperlukan. Sementara untuk batas bawah (lower bound) digunakan notasi omega (). Secara matematik, ada konstanta riil positif d dan integer threshold n0 sedemikian hingga bahwa t(n) df(n) jika n n0. Duality rule : t(n) (f(n)) bila hanya bila f(n) (t(n)).
The “Theta” notation Kombinasi notasi O & notasi ; notasi (theta). Definisi formal adalah (f(n)) = O(f(n)) (f(n)), ekuivalen dengan Untuk notasi , aturan limit dirumuskan kembali sebagai berikut. Untuk sebarang fungsi f dan g : N R0. Berlaku aturan-aturan sebagai berikut :
The “Theta” notation (Cont.) Jika lim (n∞) [f(n)/g(n)] R+, maka f(n) Θ(g(n)). Jika lim (n∞) [f(n)/g(n)] = 0, maka f(n) O(g(n)) tapi f(n) Θ(g(n)). Jika lim (n∞) [f(n)/g(n)] = + ∞, maka f(n) (g(n)) tapi f(n) Θ(g(n)).
The “Theta” notation (Cont.) Untuk setiap integer tertentu k0, dengan jumlahan (summation) sisi kiri dianggap sebagai fungsi dari n. Untuk arah ke “O” mudah dibuktikan, cukup diperhatikan hubungan bahwa jika 1in, maka iknk. Sehingga
The “Theta” notation (Cont.) yang membuktikan bahwa dengan konstanta pengali 1. Untuk pembuktian arah “”, perhatikan bahwa jika maka Kemudian untuk integer i, lebih dari n/2.
The “Theta” notation (Cont.) Oleh karena itu, selama n 1 (yang mengakibat-kan bahwa n/2 1), Hal ini memperlihatkan bahwa dengan menggunakan konstanta pengali 1/2k+1.
Conditional asymptotic notation Banyak algoritma akan lebih mudah dianalisa jika ukuran instance nya dibatasi untuk yang memenuhi persyaratan (condition) tertentu, misal pangkat 2 (power of 2). Contoh, algoritma “devide-and-conquer” untuk mengalikan integer besar, misal n adalah ukuran integer yang akan dikalikan. Waktu yang diperlukan oleh algoritma ini diberikan oleh fungsi t : N R0 secara rekursif didefinisikan oleh
Conditional asymptotic notation (Cont.) hasil penyelesaian dengan asumsi n/2 = n/2 adalah : t(n) = (a + b) n2 – bn, dengan n merupakan power of 2. sehingga Lebih umum, misal f, t : N R0 merupakan dua fungsi dari bilangan-bilangan natural ke bilangan-bilangan riil tak-negatif, dan misal P : N {true, false} merupakan sifat integers.
Conditional asymptotic notation (Cont.) Secara formal, O(f(n) | P(n)) didefinisikan sebagai Himpunan2 (f(n) | P(n)) dan (f(n) | P(n)) didefinisikan secara serupa. Fungsi f : N R0 “eventually nondecreasing” jika ada integer threshold n0 sedemikian hingga f(n)f(n+1) untuk semua nn0.
Conditional asymptotic notation (Cont.) Kebanyakan fungsi yang dijumpai dalam analisa algoritma adalah smooth, seperti log n, n log n, n2 atau setiap polynomial yang an>0. Fungsi2 yang perkembangannya sangat cepat “tidak smooth”, seperti n lg n, 2n, atau n!, karena f(2n)/f(n) tak terbatas (unbounded). Sebagai contoh, (2n)lg(2n) = 2n2 nlg n, yang memperlihatkan bahwa (2n)lg(2n) O(nlg n).
Asymptotic notation with several parameters Situasi ini untuk algoritma untuk problem yang melibatkan graph (waktu tergantung pada #vertex & #edge). Misal f : N N R0, misal f(m,n) = m log n. Misal t : N N R0 fungsi serupa yang lain. t(m,n) berada dalam order f(m,n), yang ditunjukkan dengan t(m,n) O(f(m,n)), jika t(m,n) terbatas atas oleh kelipatan positif dari f(m,n) jika kedua m dan n cukup besar.
Asymptotic notation with several parameters Secara formal, O(f(m,n)) adalah :
Operations on asymptotic notation Secara lebih formal, jika op merupakan operator biner (binary operator) dan jika X dan Y merupakan himpunan fungsi2 dari N ke R0. Secara formal, X op Y menunjukkan