Notasi Besar Bersarang

8

Katakanlah saya memiliki grafik |G| dengan |E|=O(V2)ujung-ujungnya. Saya ingin menjalankan BFSG yang memiliki waktu berjalan O(V+E).

Rasanya wajar untuk menulis bahwa waktu berjalan pada grafik ini adalah O(O(V2)+V) dan kemudian menyederhanakannya O(V2).

Apakah ada kesulitan untuk menggunakan pintasan "remove-the-nested-O" (tidak hanya dalam kasus ini, tetapi lebih umum)?

Kucing Unfun
sumber
4
Jika Anda bekerja melalui definisi big-O, Anda akan melihat bahwa Os yang bersarang itu alami dan berlebihan, dan bahwa aturan menjatuhkan O bagian dalam adalah benar.
Dave Clarke
Karena V ada di O (V ^ 2) saya kira Anda bisa mengganti O (V ^ 2) dengan V jika Anda tidak tahu apa yang Anda lakukan?
The Unfun Cat
3
Jika Anda tidak tahu apa yang Anda lakukan, Anda dapat melakukan hal-hal yang salah secara sewenang-wenang.
Dave Clarke
4
Memang. = tidak = di tanah O besar.
Dave Clarke
3
Lihat juga pertanyaan yang bagus tentang math.SE tentang = dalam notasi Landau.
Raphael

Jawaban:

14

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 sepertihO(f+O(g))? Kita harus gantiOdengan definisi dari dalam ke luar. Jadi, kita dapatkan

gO(g).hO(f+g)

lalu

gO(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 hO(f+g); hilangnya presisi diabaikan olehO bagaimanapun.


Bagaimana dengan kombinasi lain, katakan hO(f+Ω(g))? Jika kita mencoba yang sama di sini, kita dapatkan

gΩ(g).hO(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.


  1. O(.)dan simbol Landau lainnya memetakan fungsi ke kelas fungsi. Memberinya makan kelas fungsi tidak langsung berarti.
  2. Setidaknya jika kita hanya mempertimbangkan fungsi positif, yang dapat kita asumsikan dengan aman ketika berbicara tentang runtimes. Saya tidak yakin ini bekerja secara umum.
Raphael
sumber
2

Saya hanya ingin menambahkan ini karena saya baru saja menemukannya. Sementara pintasan ini baik-baik saja dengan penambahan dan perkalian (saat tidak mencampurO dengan Ω; lihat jawaban yang diterima), harus diperhatikan saat menggunakan eksponen. Contohnya:

O(nO(m))O(nm).
Dalam contoh ini, n2m Milik kelas satu tetapi bukan kelas kedua.
jadhachem
sumber
1

Menurut definisi, O(g) adalah himpunan dan jika Anda menggunakan notasi ini bersarang, Anda akan memiliki satu set dalam himpunan, yang akan salah.

Definisi O-Notasi

O(g)={f|c>0x0>0x>x0:|f(x)|c|g(x)|}

Kesalahan

Anda menggunakan istilah suka O(O(n)+k) di mana k dan n adalah fungsi dan O(n)adalah satu set. Tapi apa hasil dari fungsi yang ditambahkan ke set? Itu tidak didefinisikan!

Versi yang benar

Alih-alih menggunakan Sarang Landau-Simbol, Anda dapat melakukan hal berikut: O(m+k),mO(n)

Odin
sumber
2
Ya, tetapi notasi Landau sering disalahgunakan demi (dugaan) kemudahan penggunaan, jadi kami lebih baik memastikan semua orang memahami hal yang sama. Lihat di sini untuk pendekatan terstruktur.
Raphael
0

Di Bagian 9.3 "OManipulasi "dari buku Matematika Beton (Edisi Kedua), Knuth telah mendaftarkan beberapa aturan manipulasi padaO-notation (Berikut ini, saya berasumsi bahwa keduanya f(n) dan g(n)positif; perhatikan bahwa pemesanan aturan telah diubah).

(1).nm=HAI(nm),mm(3).f(n)=HAI(f(n))(5).HAI(HAI(f(n)))=HAI(f(n))(4).cHAI(f(n))=HAI(f(n))(2).HAI(f(n))+HAI(g(n))=HAI(f(n)+g(n))(6).HAI(f(n))HAI(g(n))=HAI(f(n)g(n))=f(n)HAI(g(n))

Dengan (3), Anda dapat membungkus / membuka fungsi f(n)dengan notasi-O. Kemudian dengan (5), Anda benar-benar dapat membungkus / membuka (atau disebut, sarang ) secara sewenang-wenang. Menggunakan (4), Anda juga dapat menambah / menghapus faktor perkalian konstan ke / dariHAI.

Kemudian, (2) dan (6) memungkinkan Anda untuk memanipulasi bersarang HAI-Catatan dalam cara yang kompatibel dengan + dan ×.

Hengxin
sumber