算法导论 第三章 函数的增长,3.1练习个人解答(Sor)

原创 2015年11月20日 20:36:56

3.1-1 假设f(n)与g(n)都是渐近非负函数。使用Θ

记号的基本定义来证明max(f(n),g(n)) = Θ(f(n)+g(n))。

证:不妨假设max(f(n),g(n)) = f(n),则0 ≤ g(n)/f(n) ≤ 1

设有正常量c1,c2,n0,使得所有对n ≥ n0, 有

0 ≤ c1*f(n) ≤ f(n) + g(n) ≤ c2*f(n)

 

解得 c1 ≤ 1 + g(n)/f(n), c2 ≥ 1 + g(n)/f(n)

可取 c1 = 1, c2 = 2 , 此时 n0 ≥ 1 即可

 

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

证:(n+a)^b的最高次数项为 n^b,根据直觉可得出结论,下面给出具体过程

a,b为任意实常量,设f(n) = (n+a)^b

设有正常量c1,c2,n0,使得所有对n ≥ n0,有

0 ≤ c1*f(n) ≤ n^b ≤ c2*f(n),

c1 ≤ [n/(n+a)]^b, c2 ≥ [n/(n+a)]^b

可取c1 = [1/(1+a)]^b, c2 = 2, n0 ≥ 1即成立

 

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

自己想不太清楚,网上大家解释也欠妥,下面的话都是根据算法导论教师手册上来的:

假设运行时间为T(n),

T(n) ≥ O(n^2) 意味着 对于某个f(n) = O(n^2)有

T(n) ≥ f(n)。然而因为g(n) = 0 ∈ O(n^2),这意味着

T(n) ≥ 0, 但是运行时间总是非负的,所以这句话并没有告诉我们有用的信息。(英语不好,献丑了)

 

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

要使2^(n+1) = O(2^n)成立,我们需要找到正常量 c,n0,使得0 ≤ 2^(n+1) ≤ c*2^n,这非常容易,我们取c = 2,n0 ≥1即可。

所以前者成立。

 

要使2^2n = O(2^n)成立,同理,假设有正常量c,n0

使得 0 ≤ 2^2n ≤ c*2^n

=> 2^n ≤ c

不可能找到这样的c,所以后者不成立

 

3.1-5 证明定理3.1

 

证:

充分性

f(n) = Θ(g(n)),意味存在正常量c1,c2,n0,使得对所有n ≥ n0有

0 ≤ c1f(n) ≤ g(n) ≤ c2f(n)

读者可以轻易地分离出

0 ≤ c1f(n) ≤ g(n),即f(n) = O(n)

0 ≤ g(n) ≤ c2f(n) , 即f(n) = Ω(n)

充分性成立;

必要性:

与充分性证明类似,此处不再赘述

 

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

Θ符号渐近给出一个算法运行时间的上下界,而O,Ω都是渐近的给出上界和下界,个人感觉是定理3.1的阐述,所以不赘述了。

 

3.1-7 证明:o(g(n)) ∩ ω(g(n)) 为 ∅

一个不严谨的证明如下:

f(n) = o(g(n)) 类似于  {x|x < b}

f(n) = ω(g(n)) 类似于 {x|x > b}

o(g(n)) ∩ ω(g(n))类似于{x|x>b 且 x < b} = ∅

 

3.1-8可以将我们的表示法扩展到有两个参数n和m的情形,其中n和m的值可以以不同的速率,互相独立地趋于无穷。对给定的函数g(n,m),O(g(n,m))为函数集

O(g(n,m))={ f(n,m): 存在正整数c,n0和m0,使对所有n>=n0或m>=m0,有0<=f(n,m)<=cg(n,m) }。

给出对应的Ω(g(n,m))和Θ(g(n,m))的定义。

想想还是略吧。


版权声明:本文为博主原创文章,未经博主允许不得转载。

算法导论(第三版) 第三章思考题

http://www.cnblogs.com/Jiajun/archive/2013/05/06/3063574.html 3-1 a. P(n)=∑i=0daini=n...

算法导论 第三章 函数的增长 3.2习题个人解答

3.2-1 证明:若f(n)和g(n)是单调递增的函数,则f(n)+g(n)也是单调递增的,此外,若f(n)和g(n)是非负的,则f(n)*g(n)也是单调递增的.   证: 1.取任意实数m>n,总...

算法导论课后习题解析 第三章

算法导论课后习题解析 第三章 3.1-1 分情况讨论 当f(n)≥g(n)f(n)≥g(n)时,max(f(n),g(n))=f(n)max(f(n),g(n))=f(n),存在...

《算法导论》系列课后思考题之-第三章《函数的增长》(上)

练习 3.1-1 设f(n)与g(n)都是渐进非负函数。利用Θ记号的基本定义来证明max(f(n), g(n)) =Θ(f(n) + g(n))。 证明:    若证明成立,则存在n>=n0,...

算法导论<学习笔记> 第一章 算法在计算中的作用

前一阵买了算法导论的书一直没有开始看,今天开始准备研究研究,增进一下自己的基本功。 每看完一个系列都会来CSDN和我的简书中更新我的学习笔记,喜欢的朋友们可以关注我一下~1.1 算法非形式地说,算法就...

算法导论 第三章 函数的增长

渐近记号 (1)渐近上界记号O(大写O) 含义:渐近地给出了一个函数在常量因子内的上界: O(g(n))={f(n):存在正常量c和n0,使得对所有n>=n0,有0...

算法导论_第三章_函数的增长

函数的增长 1.渐进记号 Θ 定义: 对于一个给定的函数g() 用Θ(g(n))来表示以下函数的集合 Θ(g(n))={f(n):存在正常量c1、c2和N,使得对所有的n>=N,有0 注:这里我们通常...

算法导论第三章 函数的增长——关于O Θ Ω的用法

算法导论第三章 函数增长 三个符号:O Θ Ω 一、定义及其图像解释: 这三个定义都有点别扭,以Θ为例。 ∃C1, C2 > 0,使得当 n  >=n0(某一常数)时恒有 C1*...

算法导论 第三章 函数的增长

3.1渐近记号 3.2 标准记号与常用函数

《算法导论》笔记系列之第三章函数的增长

第三章提出了三个记号来表示函数的渐近紧确界。Θ⁆、Ο ⁆和Ω⁆记号: 在每个部分,标出的n0的值是最小的可能值,任何更大的值也将有效。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:算法导论 第三章 函数的增长,3.1练习个人解答(Sor)
举报原因:
原因补充:

(最多只允许输入30个字)