Analisa Algoritma Asimtotik
Deskripsi Materi ini membahas tentang Notasi asymptotic
Tujuan Instruksional Khusus (TIK) Menjelaskan Big Oh, Big Omega, Big Teta
Notasi Asimtotik Analisa asimtotik biasa digunakan untuk menyelidiki perilaku suatu fungsi atau hubungan antara 2 fungsi berdasarkan beberapa nilai parameter fungsi tersebut yang cenderung menuju suatu nilai asimtot.
Notasi Big Oh Definisi : bila terdapat 2 buah fungsi f(n) dan g(n) { f(n), g(n) : Z+ R+ }, maka f(n) adalah “Big-Oh” dari g(n), atau ditulis: f(n) = O(g(n)), bila konstanta positif c dan n0 f(n) c. g(n), n n0. Dalam hal ini dapat dikatakan bahwa f(n) terbatas keatas oleh c.g(n), yang menunjukkan bahwa f tidak bergerak lebih cepat dari pada g.
Contoh Bila f(n) = n3 + 20 n2 + 100.n, maka dapat dikatakan bahwa f(n) = O(n3). Bukti: n 0, n3 + 20 n2 + 100.n n3 + 20 n3 + 100.n3 = 121. n3. Dengan memilih nilai c = 121 dan n0 = 0, maka definisi tersebut dapat dipenuhi. Untuk fungsi polinomial dengan pangkat sederhana seperti diatas, kita cukup memperhatikan suku dengan pangkat tertinggi, hal ini disebabkan karena suku dengan pangkat tertinggi tersebut memiliki pertumbuhan lebih cepat seiring dengan bertambahnya nilai n; d.p.l. suku dengan pangkat tertinggi akan mendominasi suku-suku yang lain.
Misal f(n) = 2log n dan g(n) = (n / 4)2 Meskipun untuk a < n < b , f(n) > g(n), namun g(n) ≠ O(f(n)); hal ini disebabkan karena kita tidak dapat menemukan nilai n0 ∋ g(n) ≤ c.f(n), ∀n ≥ n0, berapapun besarnya nilai c yang kita pilih. Meskipun demikian kita dapat mengatakan f(n) = O(g(n)), karena kitadapat memilih n0 = b dan c = 1 ∋ f(n) ≤ c.g(n), ∀ n ≥ n0.
Sifat Notasi Big-Oh bersifat 1 arah, d.p.l. tidak pernah dinyatakan bahwa bila f(n) = O(g(n)), maka O(g(n)) = f(n). Bila f(n) = O(g(n)) dan h(n) > g(n), n yang cukup besar, maka f(n) = O(h(n)). Contoh: bila f(n) = n2, dapat dikatakan bahwa f(n) = O(n3).
Perbandingan pertumbuhan kuadratis dan linier
Proposisi Relasi "Big-Oh" bersifat transitif; yakni bila f(n) O(g(n)) dan g(n) O(h(n)), maka f(n) O(h(n)). Untuk sembarang fungsi f dan g { f(n), g(n) : Z+ R+ }, berlaku: O(f(n)) = O(g(n)) jika dan hanya jika f(n) O(g(n)) dan g(n) O(f(n)). Untuk sembarang fungsi f dan g { f(n), g(n) : Z+ R+ }, berlaku: O(f(n)) O(g(n)) jika dan hanya jika f(n) O(g(n)) tetapi g(n) O(f(n)). Untuk sembarang fungsi f dan g { f(n), g(n) : Z+ R+ }, berlaku: O(f(n) + g(n)) = O(max(f(n), g(n)).
Notasi Omega (Notasi ) Notasi ini menyatakan batas bawah asimtot dari suatu fungsi. Definisi 1.2. : bila terdapat 2 buah fungsi f(n) dan g(n) { f(n), g(n) : Z+ R+ }, maka f(n) adalah “Big-Omega” dari g(n), atau ditulis: f(n) = (g(n)), bila konstanta positif c dan n0 f(n) c. g(n), n n0. Dalam hal ini dapat dikatakan bahwa f(n) terbatas kebawah oleh c.g(n) yang menunjukkan bahwa f bergerak paling sedikit secepat g.
Contoh maka bila dipilih n0 = b dan c = 1, maka dapat dikatakan bahwa g(n) = (f(n)). Meskipun demikian, f(n) (g(n)), karena kita tidak dapat menemukan nilai-nilai c dan n0 yang dapat memenuhi definisi. Corollary : Untuk sembarang fungsi f(n) dan g(n), yang didefinisikan pada kedua definisi di atas , maka berlaku f(n) = (g(n)), jika dan hanya jika g(n) = O(f(n)).
Notasi Theta ( Notasi Θ ) Notasi ini menyatakan batas keketatan asimtot dari suatu fungsi. Definisi : bila terdapat 2 buah fungsi f(n) dan g(n) ∋ { f(n), g(n) : Z+ →R+ }, maka f(n) adalah “Big-Theta” dari g(n), atau ditulis: f(n) = Θ(g(n)), bila ∃ konstanta positif c1, c2 dan n0 ∋ c1. g(n) ≤ f(n) ≤ c2. g(n), ∀ n ≥ n0.
Definisi ini menunjukkan bahwa : f(n) = Θ(g(n)), jika dan hanya jika f(n) = O(g(n)) dan f(n) = Ω(g(n)). atau Θ(f(n)) = O(f(n)) ∩ Ω(f(n)).
Relasi ekivalen pada Θ Notasi Θ memenuhi relasi ekivalen; yakni untuk sembarang fungsi f dan g ∋ { f(n), g(n) : Z+ → R+ }, berlaku: 1. f(n) ∈ Θ(f(n)) (sifat refleksif) 2. jika f(n) ∈ Θ(g(n)), maka g(n) ∈ Θ(f(n)) (sifat simetri) 3. jka f(n) ∈ Θ(g(n)) dan g(n) ∈ Θ(h(n)), maka f(n) ∈ Θ(h(n)) (sifat transitif)
Untuk sembarang fungsi f dan g { f(n), g(n) : Z+ R+ }, maka ketiga pernyataan di bawah ini saling ekivalen: O(f(n)) = O(g(n)), (f(n)) = (g(n)), dan f(n) (g(n)).
Untuk sembarang fungsi f dan g { f(n), g(n) : Z+ R+ }, berlaku f(n) (g(n)) jika dan hanya jika f(n) O(g(n)) dan f(n) (g(n)). Jika f(n) O(g(n)), maka O(f(n)) O(g(n)) f(n) O(g(n)) jika dan hanya jika g(n) (f(n)).
Catatan Di dalam analisa algoritma, notasi Big-Oh biasa digunakan sebagai batas atas kinerja dari suatu algoritma untuk suatu masalah, sedangkan notasi Ω biasa digunakan untuk menyatakan batas bawah kompleksitas dari persoalan tersebut.
Hubungan antar order Bila f(n) berupa suatu polinomial P(n) = ak.nk + ak-1.nk-1 + … + a1.n + a0 berderajat k dan ak > 0, maka P(n) ( nk) (dalam hal ini g(n) = nk). Harus dibuktikan P(n) O(nk) dan f(n) Ω(nk).
Bukti : P(n) = ak.nk + ak-1.nk-1 + … + a1.n + a0 ak.nk + |ak-1|.nk + … + |a1|.nk +|a0|. nk (ak + |ak-1| + … + |a1| + |a0|). nk Dari sini dipilih c = (ak + |ak-1| + … + |a1| + |a0|), sehingga P(n) c. nk , n n0 = 1, dengan demikian P(n) O( nk). Selanjutnya….
P(n) = ak.nk + ak-1.nk-1 + … + a1.n + a0 ak.nk - |ak-1|.nk - 1 … - |a1|.n -|a0| = (1/2 ak.nk +1/2 ak.nk ) - |ak-1|.nk - 1 … - |a1|.n -|a0| = 1/2 ak.nk +{1/2 ak.nk - |ak-1|.nk - 1 … - |a1|.n -|a0|} 1/2 ak.nk +{1/2 ak.nk - |ak-1|.nk - 1 … - |a1|.nk - 1 -|a0| nk - 1} = 1/2 ak.nk +{1/2 ak.n - (|ak-1| -… - |a1| -|a0|) } nk - 1 Bila dipilih c = (ak / 2) dan n0 = ( |ak-1| - … - |a1|- |a0|).(2 / ak ), maka P(n) c. nk , n n0. Hal ini berarti P(n) ( nk).
Latihan Diketahui f(n)=4x+5 Buktikan bahwa a. f(n) = O(n) b. f(n) = ( n) c. f(n) = ( n) Diketahui f(n)=2x2+6x+3 a. f(n) = O(n2) b. f(n) = ( n2) c. f(n) = ( n2)