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?

Raphael
sumber
Itu tidak salah, itu hanya berlebihan, karena . O(7x2)=O(x2)
Lihat juga pertanyaan referensi kami .
Raphael

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Θ

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

Raphael
sumber
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