CLRS第三章思考题
本章思考题证明太繁琐,因此只证明某一些,其余的可类似证明。
思考题3-1
本题只证明前两个,后面可类似得到。
首先,很容易想到 p(n)=Θ(nd)p(n)=\Theta(n^d),若 k≥dk\geq d,则 Θ(nd)=O(nk)\Theta(n^d)=O(n^k),若 k≤dk\leq d,则 Θ(nd)=Ω(nk)\Theta(n^d)=\Omega(n^k)。
现在来证明 p(n)=O(nd)p(n) = O(n^d)。设c=ad+bc = a_d + b 使得
\sum_{i=0}^d = a_dn^d + a_{d-1}n^{d-1} + \ldots + a_1n + a_0 \leq cn^d
两边同时除以 ndn^d 有:
c = a_d + b \geq a_d + \frac{a_{d-1}}n + \frac{a_{d-2}}{n^2} + \ldots + \frac{a_0}{n^d} \Rightarrow b \geq \frac{a_{d-1}}n + \frac{a_{d-2}}{n^2} + \ldots + \frac{a_0}{n^d}
选 b=1b = 1, n0=max(dad−1,dad−2−−−−√,…,da0−−√d) n_0 = \max(da_{d-1}, d\sqrt{a_{d-2}}, \ldots, d\sqrt[d]{a_0})
我们有 n0n_0 和 cc 使得 p(n)≤cndfor n≥n0 p(n) \leq cn^d \quad \text{for } n \geq n_0 。
我们得到了 O(nd)O(n^d) 的定义,若选 b=−1b = -1 可类似得到 Ω(nd)\Omega(n^d) ,因此得到 Θ(nd)\Theta(n^d)。
前三问得证。后面两问可类似证明。
思考题3-2
基本上都可以用洛必达法,下面只给出结果。
A | B | O | o | Ω\Omega | ω\omega | Θ\Theta |
---|---|---|---|---|---|---|
lgkn\lg^k{n} | nεn^\varepsilon | 是 | 是 | 否 | 否 | 否 |
nkn^k | cnc^n | 是 | 是 | 否 | 否 | 否 |
n−−√\sqrt{n} | nsinnn^{\sin n} | 否 | 否 | 否 | 否 | 否 |
2n2^n | 2n/22^{n/2} | 否 | 否 | 是 | 是 | 否 |
nlgcn^{\lg{c}} | clgnc^{\lg n} | 是 | 否 | 是 | 否 | 是 |
lg(n!)\lg{(n!)} | lg(nn)\lg{(n^n)} | 是 | 否 | 是 | 否 | 是 |
思考题3-3
a) 首先化简其中几个式子。
\begin{align} &(\sqrt{2})^{\lg n}=2^{\lg{\sqrt n}}=\sqrt n\\ &\lg^2{n}=2^{\lg{\lg^2 n}}=o(2^{\sqrt{2\lg n}})\\ &\lg{(n!)}=\Theta(n\lg n)\\ &n^{\frac{1}{\lg n}}=n^{\frac{\lg 2}{\lg n}}=n^{\log_n2}=2\\ &n^{\lg{\lg n}}=(2^{\lg n})^{\lg{\lg n}}=(2^{\lg{\lg n}})^{\lg n}=(\lg n)^{\lg n}\\ &2^{\lg n}=n\\ &4^{\lg n}=(2^2)^{\lg n}=2^{\lg{n^2}}=n^2 \end{align}
在此省略公式编辑,故从左到右,从上到下依次编号为 1,2,…,301,2,\dots ,30。复杂度从低到高依次为:
\{12,18\},1,\{14,25\},2,13,24,17,9,26,3,\{19,27\},\{10,29\},\{4,22\},8,6,\{16,20\},7,28,15,21,5,23,11,30
说明:大括号内部表示复杂度一样。
b) f(n)=22(n+1)sinxf(n)=2^{2^{(n+1)\sin x}}
思考题3-4
a) 错误,n=O(n2)n=O(n^2),反过来就不是。
b) 错误,反例:n,n2n,n^2。
c) 正确, 由题得 :
∃c,n0:∀n≥n0:0≤f(n)≤cg(n)⇒ 0≤lgf(n)≤lg(cg(n))=lgc+lgg(n)\exists c, n_0 : \forall n \geq n_0 : 0 \leq f(n) \leq cg(n) \Rightarrow \ 0 \leq \lg{f(n)} \leq \lg(cg(n)) = \lg{c} + \lg{g(n)}
现在需要证明 lgf(n)≤dlgg(n) \lg{f(n)} \leq d\lg{g(n)} ,由于 lgg(n)≥1\lg{g(n)} \geq 1,只需证明 d≥lgf(n)lgg(n)d\geq \frac{\lg{f(n)}}{\lg{g(n)}},很容易得到 dd :
d = \frac{\lg{c} + \lg{g(n)}}{\lg{g(n)}} = \frac{\lg{c}}{\lg{g}} + 1 \leq \lg{c} + 1
d) 错误,反例 f(n)=2n,g(n)=nf(n)=2n,g(n)=n。
e) 错误,当 f(n)<1f(n) 时即错。
f) 正确,由题得 0≤f(n)≤cg(n) 0 \leq f(n) \leq cg(n) ,要证明 0≤df(n)≤g(n) 0 \leq df(n) \leq g(n) ,取 d=1/cd = 1/c 即可。
g) 错误,反例 f(n)=2nf(n)=2^n。
h) 正确,f(n)+o(f(n))=Θ(max(f(n),o(f(n))))=Θ(f(n))f(n)+o(f(n))=\Theta(max(f(n),o(f(n))))=\Theta(f(n))。
思考题3-5
a) 比较 cg(n)≤f(n)cg(n)\leq f(n),要么对无穷多个整数成立,要么对有限个成立,若前者成立,则有 Ω∞\mathop{\Omega}^{\infty}。若后者成立,则有 n0n_0 使得 ∀n>n0:f(n)<cg(n)\forall n>n_0:f(n)。若 f(n)=g(n)f(n)=g(n) 则两者都成立。
换成 Ω\Omega 则不成立,如 n=Ω∞(nsinn)n = \mathop{\Omega}^{\infty}(n^{\sin{n}}),但 n≠Ω(nsinn)n \neq \Omega(n^{\sin{n}})
b) 优点:可以刻画所有函数之间的关系;
缺点:刻画不精确。
c) 对于任意两个函数 f(n)f(n) 和 g(n)g(n),若有 f(n)=Θ(g(n))f(n)=\Theta(g(n)) 则有 f(n)=Ω(g(n))f(n)=\Omega(g(n)) 和 f(n)=O′(g(n))f(n)=O'(g(n))。
d) Ω∞(g(n))={f(n):存在正常数c,k,n0使得∀n≥n0有0≤cg(n)lgk(n)≤f(n)}\mathop{\Omega}^{\infty}({g(n)})=\{f(n):存在正常数 c,k,n_0 使得 \forall n\geq n_0 有 0\leq cg(n)\lg^k{(n)}\leq f(n)\}
Θ~={f(n):∃c1,c2,k1,k2,n使得∀n≥n0有0≤c1g(n)lgk1(n)≤f(n)≤c2g(n)lgk2(n)}\tilde{\Theta} = \lbrace f(n) : \exists c_1, c_2, k_1, k_2, n 使得 \forall n \geq n_0 有 0 \leq c_1g(n) \lg^{k_1}(n) \leq f(n) \leq c_2g(n) \lg^{k_2}(n)\rbrace
对于任意两个函数 f(n)f(n) 和 g(n)g(n),我们有 f(n)=Θ~(g(n))f(n)=\tilde{\Theta}(g(n)),当且仅当 f(n)=O~(g(n))f(n)=\tilde{O}(g(n)) 且 f(n)=Ω~(g(n))f(n)=\tilde{\Omega}(g(n))。
思考题3-6
f(n)f(n) | c | f∗c(n)f^*_c(n) |
---|---|---|
n−1n-1 | 0 | n |
lgn\lg n | 11 | lg∗n\lg^*{n} |
n/2n/2 | 11 | ⌈lgn⌉\lceil \lg n\rceil |
n/2n/2 | 22 | ⌈lgn⌉−1\lceil \lg n\rceil -1 |
n−−√\sqrt n | 22 | lglgn\lg{\lg n} |
n−−√\sqrt n | 11 | 不收敛 |
n1/3n^{1/3} | 22 | log3lgn\log_3\lg n |
n/lgnn/\lg n | 22 | ω(lglgn),o(lgn)\omega(\lg\lg{n}), o(\lg{n}) |
CLRS第三章思考题相关推荐
- CLRS第四章思考题
思考题4-1 a) a=2,b=2,f(n)=n4,nlogba=nlog22=na=2,b=2,f(n)=n^4,n^{\log_ba}=n^{\log_22}=n,应用主定理 3 得 T(n)=Θ ...
- CLRS第十一章思考题
思考题11-1 a) 类似推论11.7,我们插入一个关键字需要先做一次不成功查找然后将该关键字置入到第一个遇到的空槽,在定理11.6的证明中,设随机变量 XX 为一次不成功查找探查次数,Pr{X≥i} ...
- CLRS第十三章思考题
思考题13-1 a) 对于插入操作,需要更改根结点到插入的新叶结点路径上的所有结点:对于删除操作,至多改变被删除的节点和其后继的祖先结点. b) 先假设会调用两个子程序MAKE-NEW-NODE(k) ...
- CLRS第五章思考题
思考题5-1 a) 设在第 jj 次增加时,计数器为 ii,表示 nin_i.若计数器增加,则值增加 ni+1−nin_{i+1}-n_i,概率为 1/(ni+1−ni)1/(n_{i+1}-n_i) ...
- 《算法竞赛入门经典》第三章思考题
题目1(必要的存储量) 数组可以用来保存很多数据,但在一些情况下,并不需要把数据保存下来.下面哪些题目可以不借助数组,哪些必须借助数组?请编程实现.假设输入只能读一遍. 1. 输入一些数,统计个数. ...
- 带权中位数-算法导论第三版第九章思考题9-2
带权中位数-算法导论第三版第九章思考题9-2 b 时间复杂度O(nlgn) float find_median_with_weights_b(float *array,int length) {qui ...
- verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第十四章)
<Verilog数字系统设计教程>夏宇闻 第三版思考题 答案合集 : Verilog学习系列 第三部分 1.用带电平敏感列表触发条件的always 块表示组合逻辑时,应该用哪一种赋值? ...
- 算法导论第三版第二章思考题答案
算法导论第三版第二章思考题答案 第二章思考题 算法导论第三版第二章思考题答案 2.1 2.2 2.3 2.4 汇总传送门 2.1 #include<iostream> using name ...
- verilog学习|《Verilog数字系统设计教程》夏宇闻 第三版思考题答案(第三章)
<Verilog数字系统设计教程>夏宇闻 第三版思考题 答案合集 : Verilog学习系列 第三部分 1.模块由几个部分组成? 由描述接口和描述逻辑功能两部分组成. 2.端口分为几种 ...
最新文章
- PHP 批量生成静态html
- arm remapping控制输入_解析机器视觉中运动控制卡与PLC的区别
- 【译】Swift算法俱乐部-Boyer-Moore字符串搜索
- # C# 学习笔记(4) 类
- 华为端口聚合命令_华为交换机链路聚合配置命令
- 批量put和单条put
- HDU-2525 Clone Wars 模拟
- 多取值离散型特征工程_特征工程(完)
- 如何选择适合的数据分析软件
- JQuery window、document、 body
- 133. array_map()
- 【论文导读】Selecting Data Augmentation for Simulating Interventions
- C++之类和对象(三)
- Talib.MAVP中的periods参数意义
- OpenStack——nove组件部署
- 从苹果ATT新政第一年,看全球数据主权之争与治理规则的变迁
- Vue.config.silent = true
- Caused by: java.lang.IllegalStateException: Failed to introspect Class [com.mchange.v2.c3p0.ComboPoo
- python搜网课原理_如何看待风变编程的 Python 网课?
- 君主论(第1-3章)
热门文章
- 标题相似度算法_智能客服问题相似度算法设计——第三届魔镜杯大赛第12名解决方案...
- 从点击事件看微信小程序的数据传递
- 稀疏默克尔树(Sparse Merkle Tree)
- HD4600 核显 黑苹果升级10.14.1 出现部分软件花屏解决方法
- Arduino IDE 控制 RX8025 的完美办法(有库链接)
- 一文教会你如何用 Python 分割合并大文件
- 框架设计:浅谈ECS设计思想(一)
- 凯立德导航安装 | 凯立德导航升级 | 详细教程
- idea企业开发之插件推荐
- ROS安装使用中遇到的问题及解决办法(包括ubuntu)