我很难证明所有n^k
O(2^n)
k
为lg2
。我尝试了双方k*lgn=n
并{{1}},但这是错误的。我不确定我怎么能证明这一点。
答案 0 :(得分:3)
要显示n k 为O(2 n ),请注意
n k =(2 lg n ) k = 2 k lg n
所以现在你要找到一个n 0 和c,这样对于所有n≥n 0 ,
2 k lg n ≤c2 n
现在,让我们让c = 1,然后考虑当某些m为n = 2 m 时会发生什么。如果我们这样做,我们得到
2 k lg n ≤c2 n = 2 n
2 k lg 2 m ≤2 2 m
2 km ≤2 2 m
并且,由于2 n 是单调递增函数,这相当于
km≤2 m
现在,让我们完成一切。让我们假设我们让m = max {k,4},所以k≤m。因此,我们有
km≤m 2
我们也有
m 2 ≤2 m
因为对于任何m≥4,m 2 ≤2 m ,我们通过选择m确保m = max {k,4}。结合这个,我们得到了
km≤2 m
这相当于我们想要在上面展示的内容。因此,如果我们选择任何n≥2 m = 2 max {4,k} ,那么n k ≤2< SUP>名词。因此,通过big-O表示法的形式定义,我们得到n k = O(2 n )。
我认为这个数学是正确的;如果我错了,请告诉我!
希望这有帮助!
答案 1 :(得分:1)
我还不能评论,所以我会回答这个问题。
您应该尝试找到满足此处找到的大O符号的正式定义的n0
和M
,而不是减少等式:{{3} }
n0=M=k
的某些内容可能有用(我没有写出来,所以也许这不起作用,那只是为了给你一个想法)