Anda di halaman 1dari 11

Notasi Big-OH

Fungsi pertumbuhan seringkali dideskripsikan dengan sebuah notasi khusus. Dengan


mengikuti definisi didiskripsikan notasi tersebut.
Definisi 2.2
Diberikan f dan g suatu fungsi dari himpunan bilangan integer atau himpunan bilangan real pada
suatu himpunan bilangan real. Dikatakan f(x) adalah O(g(x)) jika terdapat sebuah konstanta C
dan k sedemikian sehingga :
| f(x) | < C | g(x) |
Dimana x > k, dibaca f(x) adalah big-oh pada g(x).
Penjelasan :
Untuk menunjukkan f(x) adalah O(g(x)), hanya dibutuhkan untuk menemukan satu pasangan
konstanta C dan k sedemikian sehingga | f(x) | < C|g(x)| jika x > k. Pasangan C, k yang
memenuhi definisi tidak pernah tunggal. Selanjutnya, jika satu pasangan ada, maka terdapat tak
terbatas pasangan yang lain. Sebuah cara sederhana untuk melihat hal tersebut adalah, jika C, k
adalah satu pasangan, pasangan yang lain C, k dengan C < C dan k < k juga memenuhi
definisi, jika :
| f(x) | < C|g(x)| < C | g(x) | dimana x > k > k.
Contoh 1 :
Tunjukkan bahwa f(x) = x2 + 2 x + 1 adalah O(x2).
Penyelesaian :
Jika 0 < x2 + 2 x + 1 < x2 + 2 x2 + x2 = 4 x2 dimana x > 1, mengikuti f(x) adalah O(x2).untuk
menerapkan definisi pada notasi big-O, ambil C = 4 dan k = 1. disini tidak perlu menggunakan
nilai absolute jika semua fungsi pada persamaan ini adalah positif ketika x bernilai positif.
Pendekatan yang lain adalah jika x > 2, maka 2 x < x2. akibatnya jika x > 2, terlihat bahwa :
0 < x2 + 2 x + 1 < x2 + x2 + x2 = 3 x2
Dari definisi didapat C = 3 dan k = 2.
Pengamatan pada relasi f(x) adalah O(x2), x2 dapat diganti dengan sebarang fungsi yang lain
dengan nilai yang lebih besar dari x2, misalnya f(x) adalah O(x3), f(x) adalah O(x2+2x+7) dan
seterusnya. Hal ini juga benar bahwa x2 adalah O(x2+2x+1), jika x2 < x2 + 2x +1 dimana x > 1.

Dari contoh tersebut diperoleh dua fungsi, f(x) = x2 + 2 x + 1 dan g(x) = x2, sedemikian sehingga
f(x) adalah O(g(x)) dan g(x) adalah O(f(x)).
Pernyataan terakhir dari pertidaksamaan x2 < x2 + 2 x + 1, dimana untuk semua x bilangan real
tidak negative. Dikatakan kedua fungsi f(x) dan g(x) bahwa keduanya mengikuti relasi big-O
dengan order atau pangkat yang sama.
Penjelasan :
Kenyataan bahwa f(x) adalah g(x) kadang-kadang ditulis f(x) = O(g(x)). Bagaimanapun, tanda
sama dengan pada notasi tersebut tidak dapat dipresentasikan dengan sebuah persamaan
sesungguhnya.
Selanjutnya, notasi tersebut mengambarkan bahwa pertidaksamaan yang diperoleh
menghubungkan nilai pada fungsi f dan g untuk bilangan yang cukup besar pada domain fungsi
tersebut.
Notasi big-O digunakan pada bidang matematika, khususnya pada ilmu Komputer untuk analisa
algoritma. Matematikawan jerman yang memperkenalkan pertama kali notasi big-O pada tahun
1892 pada sebuah buku tentang teori Bilangan. Notasi big-O kadang kadang disebut juga
dengan Simbol Landau.
Ketika f(x) adalah O(g(x)), dan h(x) adalah sebuah fungsi yang mempunyai nilai absolute lebih
besar dari pada g(x) untuk bilangan x yang cukup besar, mengikuti definisi diatas maka f(x)
adalah O(h(x)). Dengan kata lain, fungsi g(x) pada relasi f(x) adalah O(g(x)) dapat
dipresentasikan dengan sebuah fungsi dengan nilai absolute yang lebih besar.
| f(x) | < C |g(x)| jika x > k
Dan jika | h(x) | > | g(x) untuk semua x > k, maka :
| f(x) | < C |h(x)| jika x > k
Oleh karena itu f(x) adalah O(h(x)).
Ketika notasi big-O digunakan, fungsi g pada relasi f(x) adalah O(g(x)) dipilih dari nilai terkecil
yang mungkin. Kadang kadang dari sebuah himpunan fungsi tertentu, misalnya fungsi tersebut
pada bentuk xn , dimana n adalah bilangan integer positif.
Contoh 2 :
Tunjukkan bahwa 7 x2 adalah O(x3).
Penyelesaian :

Pertidaksamaan 7 x2 < x3 dimana x > 7. terlihat bahwa pembagian kedua sisi pertidaksamaan
dengan x2. oleh karena itu, 7 x2 adalah O(x3), dengan mengambil C = 1 dan k = 7 pada definisi
notasi big-O.
Contoh 3 :
Pada contoh 2 ditunjukkan bahwa 7 x2 adalah O(x3). Apakah juga benar bahwa x3 adalah O(7
x2) ?
Penyelesaiannya :
Untuk menentukan apakah x3 adalah O(7 x2), perlu ditentukan apakah terdapat konstanta C dan k
sedemikian sehingga x3 < C (7 x2) dimana x > k. pertidaksamaan tersebut ekuivalen dengan
pertidaksamaan x < 7 C, dimana dihasilkan dari pembagian kedua sisi dengan x2.
Tidak ada C jika x dibuat untuk sebarang bilangan yang lebih besar. Oleh karena itu x3 bukan O(7
x3).
Polynomial sering digunakan untuk mengestimasi fungsi pertumbuhan. Analisa pertumbuhan
pada polynomial untuk setiap waktu, diperlukan hasil yang selalu dapat digunakan untuk
mengestimasi pertumbuhan polynomial.
Teorema 2.1
Diberikan f(x) = anxn + an-1 xn-1 ++ a1 x + a0, dimana a0, a1, ,an-1, an adalah bilangan real.
Maka f(x) adalah O(xn).
Bukti :
Dengan menggunakan pertidaksamaan segitiga, jika x > 1, diperoleh :
| f(x) | = | anxn + an-1 xn-1 ++ a1 x + a0 |
< | an | xn + | an-1 | xn-1 ++ | a1 | x + |a0 |
= | xn ( |an |+ | an-1 | / x ++ | a1 | / x n-1 + |a0 | / xn )
< xn ( | an| + | an-1 | ++ | a1 | + |a0 | ).
Terlihat bahwa
| f(x) | < C xn ,
dimana C = |an | + | an-1 | ++ | a1 | + |a0 | untuk x > 1.
Oleh karena itu, f(x) adalah O(xn).

Contoh 4 :
Bagaimana notasi big-O digunakan untuk mengestimasi jumlahan pertama interger positif.
Penyelesaian :
Jika setiap integer pada jumlahan pertama n integer positif tidak melebihi n, mengikuti aturan
diatas maka :
1 + 2 + 3 + + n < n + n + + n = n2
Dari pertidaksamaan tersebut maka 1 + 2 + 3 + + n adalah O(n2), dengan mengambil C = 1 dan
k = 1 pada definisi notasi big-O.
Pada contoh ini domain fungsi big-O relasinya adalah himpunan integer positif.
Contoh 5 :
Dapatkan estimasi big-O untuk fungsi factorial dan logaritma pada fungsi factorial, dimana
fungsi factorial f(n) = n! didefinisikan dengan :
n ! = 1 * 2 * 3 . * n
Dimana n adalah integer positif, dan 0 ! = 1, sebagai contoh :
1!=1
2!=1.2=2
3 ! = 1. 2 . 3 = 6 dan seterusnya
Penyelesaian :
Sebuah estimasi big-O pada n ! dapat diperoleh dengan catatan bahwa setiap hubungan dalam
perkalian tidak melebihi n, sehingga :
n ! = 1 * 2 * 3 . * n
< n * n * n . * n
= nn
Pertidaksamaan tersebut menunjukkan bahwa n ! adalah O(nn). dengan mengambil logaritma dari
kedua sisi pertidaksamaan terbukti untuk n !, diperoleh:
log n ! < log nn = n log n

secara tidak langsung bahwa log n ! adalah O(nn).


Kombinasi Fungsi Pertumbuhan
Banyak algoritma dibuat pada dua atau lebih sub prosedur. Jumlah langkah yang digunakan oleh
komputer untuk menyelesaikan sebuah permasalahan dengan input / masukan tertentu pada
sebuah algoritma adalah jumlah setiap langkah yang digunakan oleh sub prosedur tersebut.
Untuk mendapatkan estimasi big-O pada jumlah langkah yang dibutuhkan, sangat perlu untuk
menemukan estimasi big-O pada jumlah langkah yang digunakan pada setiap sub prosedur dan
selanjutnya estimasi tersebut dikombinasikan.
Estimasi big-O pada kombinasi fungsi dapat ditetapkan jika ketelitian yang diambil berbeda
estimasi big-O nya untuk digabungkan. Khususnya sangat perlu untuk mengestimasi
pertumbuhan pada jumlahan dan perkalian dua fungsi. Misalkan f1(x) adalah O(g1(x)) dan f2(x)
adalah O(g2(x)), dari definisi notasi big-O, disana terdapat konstanta C1, C2 , k1 dan k2 sedemikian
sahingga :
| f1(x) | < C1 | g1(x) |
Ketika x > k1 dan
| f2(x) | < C2 | g2(x) |
Ketika x > k2, untuk mengestimasi jumlahan pada f1(x) dan f2(x), perhatikan bahwa
| (f1 + f2 ) (x) | = | f1(x) + f2(x) | :
< | f1(x) + f2(x) |, dengan menggunakan pertidaksamaan segitiga, maka :
| a + b | < | a | + | b |.
Ketika x lebih besar dari k1 dan k2, dengan mengikuti pertidaksamaan untuk | f1(x) | dan | f2(x) |
maka :
| f1(x) | + | f2(x) | < C1 | g1(x) | + C2 | g2(x) |
< C1 | g(x) | + C2 | g(x) |
= ( C1 + C2 ) | g(x) |
= C | g(x) |
Dimana C = C1 + C2 dan g(x) = max ( | g1 (x) | , | g2 (x) | ).
Ekspresi max (a, b) menunjukkan maksimum atau lebih besar pada a dan b.

Pertidaksamaan tersebut menunjukkan bahwa | (f1 + f2 ) (x) | < C | g(x) | dimana x > k, dimana k
= max (k1 + k2). Hasil tersebut digunakan sebagai teorema sebagai berikut :
Teorema 2.2
Diberikan f1(x) adalah O(g1(x)) dan f2(x) adalah O(g1(x)), maka ( f1(x) + f2(x) ) (x) adalah
O(max(g1(x), g2(x))). Selanjutnya disebut juga dengan Maximum rule.
Seringkali didapatkan estimasi big-O untuk f1 dan f2 pada hubungan tersebut mempunyai fungsi
yang sama yaitu g, pada situasi ini, teorema 2.2 dapat digunakan untuk menunjukkan bahwa (f1 +
f2 ) (x) adalah juga O(g2(x)), jika max (g(x), g(x)) = g(x). Hasil tersebut ditetapkan sebagai
akibat.
Akibat Teorema 2.2
Diberikan f1(x) adalah O(g(x)) dan f2(x) adalah O(g(x)), maka ( f1+ f2) (x) adalah O(g(x)).
| f1(x) | + | f2(x) | < C1 | g(x) | + C2 | g(x) |
< C1 | g(x) | + C2 | g(x) |
= ( C1 + C2 ) | g(x) |
= C | g(x) |
Dimana C = C1 + C2 dan g(x) = max ( | g (x) | , | g (x) | ).
Maka didapatkan O(g(x)).
Dengan cara yang sama estimasi big-O dapat diperoleh dengan perkalian fungsi f1 dan f2. ketika x
lebih besar daripada max (k1 , k2), maka :
| (f1 f2) (x) | = | f1(x) | . | f2(x) |
< C1 | g1(x) | . C2 | g2 (x) |
< C1 C2 | (g1 g2 ) (x) |
< C | (g1 g2 ) (x) |
Dimana C = C1 C2.
Dari pertidaksamaan tersebut, dengan mengikuti definisi maka f1(x) f2(x) adalah O(g1 g2),
sehingga terdapat konstanta C dan k, yaitu C = C1 C2 dan k = max(k1 , k2),.

Karena | ( f1 f2 ) (x) | < C | ( g1 g2 ) (x) | , dimana x > k. Hasil tersebut ditetapkan sebagai teorema
berikut :
Teorema 2.3
Diberikan f1(x) adalah O(g1(x)) dan f2(x) adalah O(g2(x)). Maka (f1 f2) (x) adalah O(g1(x) g2(x)).
Tujuan menggunakan notasi big-O pada fungsi estimasi adalah untuk memilih sebuah fungsi g(x)
pada pertumbuhan relative terendah dengan f(x) adalah O(g(x)).
Contoh 6 :
Dapatkan estimasi big-O untuk f(n) = 3 n log(n !) + (n2 + 3 ) log n, dimana n adalah bilnagan
integer positif.
Penyelesaian :
Pertama, perkalian 3 n log(n !) akan diestimasikan. Dari contoh 5 diketahui bahwa log(n!) adalah
O(n log n).
Menggunakan estimasi tersaebut dan 3n adalah O(n).
Teorema 2.3 memberikan estimasi bahwa 3 n log(n) adalah O(n2 log n).
Selanjutnya, perkalian (n2 + 3 ) log n akan diestimasikan. Untuk ( n2 + 3 ) < 2 n2, , maka n > 2,
sehingga (n2 + 3 ) adalah O (n2 ).
Berdasarkan teorema 2.3, maka ( n2 + 3 ) log n adalah O(n2 log n).
Dengan menggunakan teorema 2.2 maka menggabungkan dua estimasi big-O untuk perkalian
terlihat bahwa f(n) = 3 n log(n !) + (n2 + 3) log n adalah O(n2 log n).
Contoh 7 :
Dapatkan estimasi big-O untuk f(x) = (x + 1) log(x2 + 1 ) + 3 x2
Penyelesaian :
Pertama, estimasi big-O untuk (x + 1) log(x2 + 1 ) akan diperoleh. Catatan (x +1) adalah O(x).
Selanjutnya, x2 + 1 < 2 x2 ketika x > 1.
Sehingga, log(x2 + 1) < log(2 x2) = log 2 + log x2 = log 2 + 2 log x < 3 log x, jika x> 2.
Hal ini terlihat bahwa log(x2 + 1) adalah O(log x).
Dari teorema 2.3 bahwa (x + 1) log(x2 + 1) adalah O(x log x).

Untuk 3 x2 adalah O (x2 ), teorema 2.2 menunjukkan bahwa f(x) adalah max(O(x log x, x2)).
Padahal x log x < x2, untuk x > 1, sehingga f(x) adalah O (x2 ).

Big O Notation (Notasi Big O)


Big O Notation adalah notasi atau cara penulisan kompleksitas sebuah program. misalnya
program tersebut di ulang dengan "for" sebanyak N kali, maka kompleksitasnya adalah
O(N).
berikut contohnya
i:=0;
while i<N do
begin
i:=i+1;
//statement;
end;
Tapi dalam penulisan Big O ada syarat penulisan, salah satunya adalah "tidak boleh
menyertakan konstanta dalam penulisannya".
Contoh
i:=0;
while i<N do
begin
i:=i*2;
//statement;
end;
sebenarnya kompleksitas code diatas O(2Log N), namun karena big O tuh mempunyai
syarat "konstanta tidak di hitung" maka 2Log N ditulis O(Log N). maka code diatas di tulis
O(Log N).
Contoh lagi

i:= -2;
while i<N do
begin
i:=i+1;
//statement;
end;
kompleksitas potongan program yg di atas itu adalah O(N+2). tapi menurut aturan
penulisan big O, itu hanya di tulis O(n) karena konstanta tidak perlu di tulis.

kenapa konstanta tidak perlu di tulis ?


karena konstanta dapat dihitung dan biasanya tidak mendekati tak hingga. bandingkan
dengan N yg nilai nya mungkin saja bisa meledak hingga limit mendekati tak
hingga. sedangkan konstanta nilai nya sudah terbatas.
contoh lagi
i:=0;
while i<N do
begin
i:=i+1;
j:=0;
while j<N do
begin
j:=j+1;
//statement;
end;
end;
Code diatas memiliki O(N2) karena memiliki double looping.
contoh lagi
i:=0;
while i<N do
begin
i:=i+1;
j:=0;
while j<N do
begin
j:=j+1;
k:=0;
while k<N do
begin
k:=k+1;
//statement;
end;
end;
end;
Sudah tau dong apa jawabannya. yap. O(N3). karena program diatas memiliki triple
looping.
untuk info lebih lanjut. tanya pak wikipedia, buka aja link yang ini ya.

http://en.wikipedia.org/wiki/Big_O_notation
Jadi kirakira begitu lah Big O notation, jika ada kesalahan mohon maaf karena kurakura
sendiri pun kurang mengerti tentang Big O notation. Ohya, sebagai bocoran, kurakura
akan membahas macammacam kompleksitas dan kecepatannya. Sekian posting kurakura,
jika ada kesalahan kurakura mohon maaf.

Anda mungkin juga menyukai