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
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 ).
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.
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.