Mengapa memiliki interpretasi?

8

Dalam CLRS (pada halaman 49-50), apa arti dari pernyataan berikut:

Σi=1nO(i) hanya merupakan fungsi anonim tunggal (dari ), tetapi tidak sama dengan , yang tidak benar-benar memiliki interpretasi. "iO(1)+O(2)++O(n)

kesari
sumber
Saya mencoba merumuskan pertanyaan Anda dengan lebih tepat; juga perhatikan bahwa kami memiliki dukungan lateks di sini sehingga Anda dapat menulis matematika yang diformat dengan baik. Saya mendorong Anda untuk lebih spesifik: apa sebenarnya yang membingungkan? Bagian apa yang menyebabkan masalah? (Mungkin Anda dapat mengedit judul pertanyaan juga).
Juho
1
Dapat diperdebatkan, jumlah yang diperluas tidak memiliki interpretasi, baik; Anda harus menulis mulai dengan. O()
Raphael
1
Adakah yang bisa menjelaskan arti yang dimaksudkan dari ? Jumlah fungsi pesanan " "? Ini tidak masuk akal, karena . Jumlah fungsi diindeks oleh dan beberapa urutan ?? i=1nO(i)niO(i)=O(1)ni
Yves Daoust

Jawaban:

12

Karena , menggoda untuk menyarankan bahwa ... tetapi ini sebenarnya tidak valid. Alasannya adalah bahwa mungkin ada konstanta yang berbeda untuk setiap istilah dalam jumlah.1+2++n=O(n2)O(1)+O(2)++O(n)=O(n2)

Sebuah contoh

Izinkan saya memberi contoh. Pertimbangkan jumlah , , , , dan seterusnya. Perhatikan bahwa , , , , dan seterusnya untuk setiap istilah dalam jumlah. Oleh karena itu, masuk akal untuk menulis dalam bentuk . Jadi bisakah kita menyimpulkan bahwa ? Nggak. Bahkan, , jadi .S(1)=12S(2)=12+22S(3)=12+22+32S(4)=12+22+32+4212O(1)22O(2)32O(3)42O(4)S(j)=12++j2S(j)=O(1)++O(j)S(j)=O(j2)S(n)=n(n+1)(2n+1)/6S(n)=Θ(n3)

Jika itu tidak membantu, mari kita coba pengembangan matematika berikut yang lebih tepat:

Formalisasi

Ingat bahwa penafsiran, katakanlah, adalah bahwa ia adalah himpunan fungsi non-negatif (yaitu, himpunan fungsi sedemikian sehingga ada konstanta sedemikian rupa sehingga untuk semua ).O(n2)f(n)f(n)c0,d0f(n)cn2nd

Yang paling dekat dengan interpretasi adalah bahwa ia adalah himpunan fungsi dari bentuk sedemikian rupa sehingga , , ..., .O(1)+O(2)++O(n)f1(n)+f2(n)++fn(n)f1(n)O(1)f2(n)O(2)fn(n)O(n)

Tetapi sekarang konstanta untuk setiap dapat berbeda. Jadi, setiap adalah fungsi non-negatif sedemikian rupa sehingga terdapat konstanta dengan untuk semua .fififici0,di0fi(n)ciindi

Sekarang, mengingat ini, apa yang bisa kita katakan tentang ? Tidak banyak berguna. Kita tahu bahwa ada konstanta sedemikian rupa sehingga untuk semua . Sekarang apa yang bisa kita katakan tentang jumlah ini? Yah, jawabannya adalah kita tidak bisa mengatakan apa-apa sama sekali. Ini bisa menjadi besar secara sewenang-wenang. Sangat menggoda untuk membiarkan dan mengatakan bahwa ... tetapi ini sebenarnya tidak benar, karena kita membutuhkan nilai konstanta tunggal yang bekerja untuk semua , dan nilainyag(n)=f1(n)+f2(n)++fn(n)d=max(d1,d2,,dn)g(n)c11+c22++cnnndc=max(c1,c2,,cn)g(n)c(1+2++n)cn2=O(n2)cnmax(c1,c2,,cn) adalah fungsi dari , bukan konstanta.n

Jadi mungkin tidak ada konstanta sehingga ; mungkin tidak ada konstanta sehingga . Tidak ada jaminan bahwa .cg(n)c(1+2++n)cg(n)cn2g(n)O(n2)

Untuk lebih banyak membaca

Lihat https://math.stackexchange.com/q/86076/14578 dan jumlah Jumlah Landau ditinjau kembali untuk pertanyaan lain yang berhubungan dengan masalah umum ini.

DW
sumber
2
TLDR: Anda ingin semuanya menjadi sama tetapi mereka tidak, secara resmi. fO(_)
Raphael
1

Alasan bahwa komentar CLRS ini membingungkan adalah bahwa, secara teknis, adalah didefinisikan sebagai . Apa yang sebenarnya terjadi adalah bahwa CLRS menyalahgunakan notasi demi kesederhanaan:i=1nO(i)O(1)+O(2)+O(n)

  • O(1) mewakili satu set fungsi. Ini termasuk, misalnya, , , dan .f(n)=1f(n)=1/nf(n)=n1/n
  • Saat Anda menulis Anda secara teknis menambahkan dua set dan dengan operasi penjumlahan . Ketika ini dilakukan dengan lebih dari jumlah istilah yang konstan, itu dapat menyebabkan perilaku yang tidak terduga, seperti DW jelas menjelaskan dalam jawaban lain.O(1)+O(2)O(1)O(2)

Alih-alih, CLRS ingin Anda menafsirkan sebagai mana fungsi generik . Sebagai contoh, mereka akan menulis bahwa adalah , atau .i=1nO(i)i=1nf(i)f(i)O(i)i=1n3i5i=1nO(i)O(n2)

Ari Trachtenberg
sumber
Penjelasan ini kurang tepat. Tidak ada yang salah dengan menambahkan . Itu didefinisikan dengan baik. adalah himpunan fungsi, adalah himpunan fungsi, dan ketika adalah himpunan fungsi, biasanya dipahami sebagai himpunan fungsi . Ini adalah apa yang biasanya dimaksudkan ketika kita menambahkan dua notasi Oh besar, dan semuanya bekerja dengan baik selama Anda hanya menambahkan dua (atau jumlah konstan) simbol oh besar. Di mana Anda mendapat masalah adalah ketika jumlah penambahan tidak konstan, seperti yang dijelaskan dalam jawaban saya. O(1)+O(2)O(1)O(2)S,TS+T{f(n)+g(n):f(n)S,g(n)T}
DW
Saya setuju bahwa ini adalah definisi umum dari penambahan set dan didefinisikan dengan baik, meskipun saya tidak berpikir bahwa itu adalah apa yang dimaksud dengan penggunaan umum. Seperti yang Anda katakan dengan benar dalam jawaban Anda di atas, menggunakan penambahan set pada lebih dari jumlah yang konstan menyebabkan masalah.
Ari Trachtenberg
Saya lebih suka mendefinisikan O (f (n)) sebagai elemen anonim dari set fungsi tertentu, daripada set itu sendiri. Kemudian berarti " untuk beberapa fungsi sehingga ...", sedangkan berarti " untuk beberapa fungsi sedemikian rupa sehingga ... ". Sama sekali bukan hal yang sama. iO(i)if(i)fO(1)+O(2)++O(n)f1(1)+f2(2)++fn(n)f1,f2,,fn
JeffE