Kenapa

8

3n=2O(n)rupanya benar. Saya pikir itu salah karena3n tumbuh lebih cepat daripada fungsi eksponensial apa pun dengan basis 2.

Bagaimana 3n=2O(n) benar?

David Faux
sumber
1
Waspadai penyalahgunaan notasi!
Raphael
Sungguh saya tidak mengerti apa yang terjadi 3n=2O(n)berarti? pertama saya mengubahnya menjadi3n2O(n), setelah itu saya melihat lagi ini tidak ada artinya. Pertanyaan IMO tidak ada artinya.
1
Ini sangat umum untuk menulisf(x)=O(g(x)) untuk apa yang seharusnya dalam arti paling ketat f(x)O(g(x)). Begitu umum sehingga hampir tidak dianggap sebagai penyalahgunaan notasi.
David Richerby

Jawaban:

12

Dengan beberapa aljabar (dan mengubah konstanta di O(n)), kita benar-benar dapat mengubah basis.

3n=(2log23)n=2nlog23

Sejak log23 adalah konstanta, nlog23=O(n). Begitu3n=2O(n).

Saya tidak yakin apa yang Anda maksud dengan "3n tumbuh lebih cepat daripada fungsi eksponensial apa pun dengan basis 2. " 2n=o(3n)tentu saja tetapi sepertinya Anda bermaksud sesuatu yang lebih umum. Dugaan saya adalah bahwa pernyataan Anda berlaku untuk sesuatu sepertiO(3n), di mana Anda mengalikan basis dengan konstanta, berlawanan dengan 2O(n) di mana Anda mengalikan angka dalam eksponen dengan konstanta.

SamM
sumber
8

3n tumbuh lebih cepat daripada fungsi eksponensial apa pun dengan basis 2.

Benar. Ini menyiratkan bahwa3n=O(2n)tidak mungkin benar. Tetapi apa yang Anda miliki di sini adalah2O(n).

Ingat itu O(f(n)) benar-benar seperangkat fungsi, dan sebenarnya kita harus menulis 3n2O(n) (atau bahkan (n3n)2O(nn)). Sisi kanan bukanlah eksponensial dari suatu fungsi, tetapi eksponensial dari serangkaian fungsi. Memperluas definisi big oh:

2O(n)=2{fN,p,nN,f(n)pn}={(n2f(n))N,p,nN,f(n)pn}

Karena fungsi eksponensial n2n meningkat, kita dapat mengangkat ketidaksetaraan dari eksponensial:

2O(n)={gN,p,nN,g(n)2pn}

Kontras dengan

O(2n)={gN,k,nN,g(n)k2n}

In 2O(n), the multiplicative constant is inside the exponential. In O(2n), it is multiplied by the exponential. 2pn=2p2n, so we have (for any n0) 3n2log232n, i.e. we can take N=0 and p=log23, showing that 3n2O(n).

Gilles 'SO- stop being evil'
sumber
4

3n=2O(n) is in fact true because if you recall O(n) definition you will see that you can add/multiply by any constant. So:

3n<2kn // log2

nlog2(3n)<knlog2(2)

k>log2(3)

So as you can see 2kn is bigger then 3nk>log2(3)

Bartosz Przybylski
sumber