Sabtu, 27 Desember 2008

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

1 komentar: