Bagaimana membahas koefisien dalam notasi O besar


10

Notasi apa yang digunakan untuk membahas koefisien fungsi dalam notasi O besar?

Saya memiliki dua fungsi:

  • f(x)=7x2+4x+2
  • g(x)=3x2+5x+4

Jelas, kedua fungsi adalah O(x2) , memang Θ(x2) , tetapi itu tidak memungkinkan perbandingan lebih jauh dari itu. Bagaimana saya membahas koefisien 7 dan 3. Mengurangi koefisien menjadi 3 tidak mengubah kompleksitas asimptotik tetapi masih membuat perbedaan yang signifikan untuk penggunaan runtime / memori.

Apakah salah mengatakan bahwa f adalah O(7x2) dan g adalah O(3x2) ? Apakah ada notasi lain yang mempertimbangkan koefisien? Atau apa cara terbaik untuk membahas ini?


Itu tidak salah, itu hanya berlebihan, karena . O(7x2)=O(x2)

Jawaban:


9

Besar- dan besar- notasi menyembunyikan koefisien jangka terkemuka, jadi jika Anda memiliki dua fungsi yang baik Anda tidak dapat membandingkan nilai absolut mereka tanpa melihat fungsi sendiri. Tidak salah jika mengatakan bahwa , tetapi itu tidak informatif karena juga benar (dan, sebenarnya, ini untuk konstanta positif ).OΘΘ(n2)7x2+4x+2=Θ(7x2)7x2+4x+2=Θ(3x2)Θ(kx2)k

Ada beberapa notasi lain yang mungkin ingin Anda gunakan. Sebagai contoh, notasi adalah klaim yang jauh lebih kuat daripada big- :Θ

f(x)g(x)limxf(x)g(x)=1

Misalnya, , tetapi klaim akan salah. Anda dapat menganggap notasi tilde sebagai notasi yang mempertahankan koefisien terkemuka, yang tampaknya menjadi yang Anda cari jika Anda peduli dengan koefisien terkemuka dari istilah pertumbuhan dominan.7x2+4x+27x27x2+4x+23x2Θ


Notasi Tilde adalah yang saya cari. Saya yakin ada sesuatu yang tidak bisa saya ingat apa namanya dan pencarian terbukti sia-sia. Terima kasih!

6

Tilde adalah satu pendekatan. Jika Anda ingin tetap dengan , bisa dibilangO

f(x)=7x2+O(x) dan

g(x)=3x2+O(x) .


Bahkan lebih baik: katakanlah f (x) = 7x ^ 2 + o (x ^ 2), menggunakan notasi o kecil untuk mengklarifikasi bahwa yang tersisa secara asimptot lebih kecil daripada x ^ 2.
templatetypedef

2
O (x) benar-benar lebih kecil dari o (x ^ 2), jadi menggunakan itu akan kurang jelas daripada menggunakan big-O. Di sisi lain, menggunakan little-o jelas lebih umum ketika Anda ingin mengatakan bahwa Anda memiliki istilah pertama yang tepat, karena Anda tidak perlu khawatir tentang istilah berikutnya. (Dan jika kita ingin sepenuhnya jelas, maka kita perlu menjelaskan mengapa kita tidak hanya menuliskan 7x ^ 2 + 4x + 2 di tempat pertama, karena itu benar-benar tepat.

Anda benar sekali ... permintaan maaf saya!
templatetypedef

Perhatikan bahwa cara penulisan yang ketat ini adalah " dengan ". Bagaimanapun, ini sangat berguna jika Anda ingin memperbaiki lebih dari konstanta "pertama"; Anda dapat mengatakan " " yang tidak dapat Anda lakukan dengan . f(x)=7x2+g(x)g(x)O(x)f(x)=7x2+4x+O(1)
Raphael
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.