13

前の問題で、私は十分条件(例えば、、そして十分に大きいn)をf(n) = O(g(n))意味することを(うまくいけば正しく)示しました。lg(f(n)) = O(lg(g(n)))lg(g(n)) >= 1, f(n) >= 1

今、私はそれをf(n) = O(g(n))意味することを証明または反証する必要があり2^(f(n)) = O(2^g(n)))ます。直感的には、これは理にかなっているので、前の定理の助けを借りてそれを証明できると思いました。それは次のように書き直すことf(n)ができることに気づきました。それは私を興奮させました...これは私が証明したいことの両側の対数基数2を取り、それは物事を非常に単純化します!lg(2^f(n))g(n)lg(2^g(n))

しかし、これはうまくいかないと確信しています。必ずしもlg(2^f(n)) = O(lg(2^g(n)))それを意味するわけではない2^f(n) = O(2^g(n))からです...それは前の定理(「もしも」ではなく「含意」と言った)から逆になっています。

この証明を別の方法で試す必要がありますか、それとも実際に(少なくともスターターとして)持っているものから離れることができますか?

g(n)**他の方法について言えば、2を「上」に上げると、f(n)それでもそれを高く保つことができるかどうかについて議論することができますか?常識的な議論のように感じますが、何か重要なことが欠けているのかもしれません。

**おっと!私はそれを追加するのを忘れてf(n)おりg(n)、漸近的にポジティブです。私たちの教科書の定義によれば、これはそれらが「十分に大きいすべてのnに対して正である」ことを意味します。

4

3 に答える 3

14

まあ、そもそも真実ではありません。

アルゴリズムAが2nステップを取り、アルゴリズムBがnステップをとるとします。その場合、それらの比率は一定です。

しかし、 22n2nの比率は一定ではないので、あなたが言ったことは成り立たない。

于 2012-09-11T01:50:36.157 に答える
10

f(n)= O(g(n))の場合、
2 ^(f(n))はO(2 ^ g(n)))と等しくありません

f(n)= 2log nおよびg(n)= log n
とします(logが2を底とするものと仮定します)

2log n <= c(log n)であるため、f(n)= O(g(n))

2 ^(f(n))= 2 ^ log n ^ 2 = n ^ 2
2 ^(g(n))= 2 ^ log n = n


n ^ 2はO(n)ではない ことがわかっています。

したがって、2 ^(f(n))はO(2 ^ g(n)))と等しくありません。

于 2017-02-28T05:47:29.653 に答える
2

任意のf、g:N-> R *の場合、f(n)= O(g(n))の場合、2 ^(f(n)= O(2 ^ g(n))(1)

反例を見つけることで(1)を反証することができます。

(1)が真であると仮定します-> Big-Oの定義により、次のようなc>0および整数m>=0が存在します。

2 ^ f(n)<= c2 ^ g(n)、すべてのn> = m(2)

f(n)= 2n、g(n)= nを選択します。f(n)= O(g(n))もあり、それらを(2)に適用します。

-> 2 ^(2n)<= c2 ^ n-> 2 ^ n <= c(3)

つまり、c>0と整数m>= 0が存在し、次のようになります。2 ^ n <= c、すべてのn>=mに対して。

そのようなcはありません。存在する場合、常にn> lg(c)が見つかり、(3)が真ではなくなります。すべてのn> = lg(c)に対して2 ^ n>=cです。

したがって、(1)は真ではありません。

于 2019-11-12T12:52:03.483 に答える