Mari saya mulai dengan rekomendasi: perlakukan notasi Landau seperti halnya Anda (harus) memperlakukan pembulatan: jarang, putaran terlambat. Jika Anda tahu sesuatu yang lebih tepat daripadaO(.), gunakan sampai Anda selesai dengan semua perhitungan, dan Landauify pada akhirnya.
Adapun pertanyaannya, mari gali melalui penyalahgunaan notasi ini¹. Bagaimana kita menafsirkan sesuatu sepertih∈O(f+O(g))? Kita harus gantiOdengan definisi dari dalam ke luar. Jadi, kita dapatkan
∃g′∈O(g).h∈O(f+g′)
lalu
∃g′∈O(g).∃d>0.∀n.h(n)≤d(f(n)+g′(n))
yang setara dengan
∃c>0.∃d>0.∀n.h(n)≤d(f(n)+cg(n)).
Tentu saja² d(f(n)+cg(n))≤cd(f(n)+g(n)), kami melihat bahwa ini setara dengan h∈O(f+g); hilangnya presisi diabaikan olehO bagaimanapun.
Bagaimana dengan kombinasi lain, katakan h∈O(f+Ω(g))? Jika kita mencoba yang sama di sini, kita dapatkan
∃g′∈Ω(g).h∈O(f+g′).
Tapi ini tautologi: htentu dibatasi di atas oleh sesuatu yang sewenang-wenang besar. Jadi, menggabungkan batas atas dan bawah dengan cara ini tidak berarti.
- O(.)dan simbol Landau lainnya memetakan fungsi ke kelas fungsi. Memberinya makan kelas fungsi tidak langsung berarti.
- Setidaknya jika kita hanya mempertimbangkan fungsi positif, yang dapat kita asumsikan dengan aman ketika berbicara tentang runtimes. Saya tidak yakin ini bekerja secara umum.