算法导论课后题和思考题 第3章

一、课后习题

3.1-1 假设f(n)g(n)都是渐近非负函数。使用\Theta记号的基本定义来证明  max(f(n),g(n))=\Theta(f(n)+g(n))

不妨假设 max(f(n),g(n))=g(n), 要证明max(f(n),g(n))=\Theta(f(n)+g(n)), 即证明存在正常量c_1c_2 使得c_1(f(n)+g(n))\leqslant g(n)\leqslant c_2(f(n)+g(n)),因此当c_1=1/2, c_2=1 时,上式成立,得证。

3.1-2  证明:对任意实常量a和b,其中b>0,有(n+a)^b=\Theta(n^b)

要证明(n+a)^b=\Theta(n^b), 即证明 存在正常量c_1c_2 使得c_1n^b\leqslant (n+a)^b\leqslant c_2n^b,取c_1=1和c_2=(1+a)^b即成立,得证。

3.1-3  解释为什么“算法A的运行时间至少是O(n^2)”这一表述是无意义的。

因为O(n^2)的含义是函数的紧确上界为O(n^2),说算法A的运行时间至少是O(n^2)指出的是下界,因此这一表述是无意义的。

3.1-4   2^{(n+1)} = O(2^n)成立吗?2^{2n}=O(2^n)成立吗?

2^{(n+1)} = O(2^n) 成立

2^{2n}=O(2^n) 不成立,因为不存在c_2使得 (2^n)^2\leqslant c_2*2^n 

3.1-5   证明定理 对任意两个函数f(n)g(n),我们有f(n)=\Theta(g(n)),当且仅当f(n)=O(g(n))且 f(n)=\Omega(g(n))

首先证明f(n) = \Theta(g(n)) 可以推出f(n)=O(g(n)) 和  f(n)=\Omega(g(n)),由于f(n) = \Theta(g(n))表示 存在正常量c_1c_2使得0\leqslant c_1g(n)\leqslant f(n)\leqslant c_2g(n),即0\leqslant f(n)\leqslant c_2g(n) 和0\leqslant c_1g(n)\leqslant f(n) 成立,因此 f(n)=O(g(n))f(n)=\Omega(g(n))成立

其次证明当f(n)=O(g(n))f(n)=\Omega(g(n))时, f(n)=\Theta(g(n)), 由于f(n)=O(g(n)) 表示0\leqslant f(n)\leqslant c_2g(n), f(n)=\Omega(g(n))表示0\leqslant c_1g(n)\leqslant f(n),因此0\leqslant c_1g(n)\leqslant f(n)\leqslant c_2g(n),即f(n) = \Theta(g(n)), 得证。

3.1-6   证明:一个算法的运行时间为\Theta(g(n))当且仅当其最坏情况运行时间为O(g(n)),且其最好情况运行时间为\Omega(g(n))

一个算法的运行时间为\Theta(g(n)),即表示这个算法的运行时间f(n) = \Theta(g(n)), 由3.1-5提到的定理可得,f(n)=O(g(n))并且f(n)=\Omega(g(n)), 因此该算法的下界(最好情况运行时间)为\Omega(g(n)),上界(最坏情况运行时间)为O(g(n))

3.1-7   证明:o(g(n))\cap \omega(g(n))为空集

根据定义,o(g(n)) 代表的集合是 o(g(n)) = \left \{ f(n):对任意正常量c>0,存在常量n_0>0,使得对所有n\geqslant n_0,有 0\leqslant f(n)< cg(n) \left. \right \}

\omega(g(n)) 代表的集合是  \omega(g(n)) = \left \{ f(n):对任意正常量c>0,存在常量n_0>0,使得对所有n\geqslant n_0,有 0\leqslant cg(n) < f(n)\left. \right \}

用反证法,假设存在一个函数f(n) 同时满足上述两个条件,即0\leqslant f(n)<cg(n) 并且 0\leqslant cg(n)< f(n)同时成立,由于和均为正常量,定义要求对任意正常量c 均满足不等式,因此上述两式引发出矛盾,cg(n)<f(n)<cg(n),因此假设不成立,得证。

3.1-8   可以扩展我们的记号到有两个参数n和m的情形,其中的n和m可以按不同速率独立第趋于无穷。对于给定的函数g(n,m),用O(g(n,m))来表示以下函数集:

O(g(n,m)) = \left \{ f(n,m): 存在正常量 c,n_0 和 m_0,使得对于所有n\geqslant n_0m\geqslant m_0,有0\leqslant f(n,m)\leqslant cg(n,m) \left. \right \}

\Omega(g(n,m))\Theta(g(n,m))给出相应的定义

\Omega(g(n,m)) = \left \{ f(n,m): 存在正常量 c,n_0 和 m_0,使得对于所有n\geqslant n_0m\geqslant m_0,有0\leqslant cg(n,m)\leqslant f(n,m) \left. \right \}

\Theta(g(n,m)) = \left \{ f(n,m): 存在正常量 c_1,c_2,n_0 和 m_0,使得对于

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值