编程语言
首页 > 编程语言> > 算法导论 3-4 证明与反驳

算法导论 3-4 证明与反驳

作者:互联网

(渐进记号的性质)假设f(n)和g(n)为渐近正函数。证明或反驳下面的每个猜测。

a. f(n)=O(g(n))蕴含g(n)=O(f(n))。

b. f(n)+g(n)=θ(min(f(n), g(n))。

c. f(n)=O(g(n))蕴含lg(f(n))=O(lg(g(n))),其中对所有足够大的n,有{\color{Red} lg(g(n))\geq 1}{\color{Red} f(n)\geq 1}

d. f(n)=O(g(n))蕴含{\color{Red} 2^{f(n)}=O(2^{g(n)})}

e. f(n)={\color{Red} O((f(n))^{2})}

f. f(n)=O(g(n))蕴含g(n)=Ω(f(n))。

g. f(n)={\color{Red} \Theta (f(n/2))}

h. f(n)+o(f(n))={\color{Red} \Theta (f(n))}

 

解答:

a. f(n)=O(g(n))蕴含g(n)=O(f(n))。 错误。

举例 n = O(n^{2})n^{2}\neq O(n) 。

b. f(n)+g(n)=θ(min(f(n), g(n))。错误。

举例f(n)=ng(n)=n^{2}n+n^{2}\neq \Theta (n)

c. f(n)=O(g(n))蕴含lg(f(n))=O(lg(g(n))),其中对所有足够大的n,有lg(g(n))\geq 1f(n)\geq 1。正确。

根据O定义:

O(g(n)) = { f(n): 存在正常量c和n_{0},使得对所有n\geq n_{0},有0\leq f(n)\leq cg(n) }

由不等式f(n)\leq cg(n)可得

lg(f(n))\leq lg(cg(n))=lg(c)+lg(g(n))=O(lg(g(n)))

d. f(n)=O(g(n))蕴含2^{f(n)}=O(2^{g(n)})。正确。

根据O定义:

O(g(n)) = { f(n): 存在正常量c和n_{0},使得对所有n\geq n_{0},有0\leq f(n)\leq cg(n) }

由不等式f(n)\leq cg(n)可得

2^{f(n)}\leq 2^{cg(n)}=(2^{g(n)})^{c}

e. f(n)=O((f(n))^{2})。错误。

举反例,取f(n)=\frac{1}{n},则(f(n))^{2}=(\frac{1}{n})^{2}。已知n>0时,\frac{1}{n}>(\frac{1}{n})^{2}。所以命题e不成立。

f. f(n)=O(g(n))蕴含g(n)=Ω(f(n))。

从O的定义来分析该问题,O定义如下:

O(g(n)) = { f(n): 存在正常量c和n_{0},使得对所有n\geq n_{0},有0\leq f(n)\leq cg(n) }

Ω(g(n)) = { f(n): 存在正常量c和n_{0},使得对所有n\geq n_{0},有0\leq cg(n)\leqslant f(n) }

g. f(n)=\Theta (f(n/2))。错误。

举反例。取f(n)=2^{n},则f(n/2)=2^{n/2}=\sqrt{2^{n}}=\sqrt{f(n)},由于f(n)\neq \Theta (\sqrt{f(n)}),所以命题不成立。

h. f(n)+o(f(n))=\Theta (f(n))。正确。

 

 

根据o的定义,我们可以得到

存在正常量c和n_{0},使得对于所有n\geq n_{0},有f(n)+o(f(n))\leq f(n)+cf(n)=(1+c)f(n)

另外,由于o(f(n))\geq 0,可得f(n)+o(f(n))\geq 0 。

因此我们可以得到

f(n)\leq f(n)+o(f(n))\leq (1+c)f(n),因此符合θ函数的定义。故命题成立。

 

 

 

 

 

标签:lg,7D%,使得,所有,导论,算法,蕴含,反驳,定义
来源: https://blog.csdn.net/madaxin/article/details/111889506