网站大量收购闲置独家精品文档,联系QQ:2885784924

计算机算法基础 第2版 习题及答案 第4章 .docx

计算机算法基础 第2版 习题及答案 第4章 .docx

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

PAGE10

第4章 不基于比较的排序

不用Sterling公式,而用第2章中对(2.6)式证明的方法证明lgn!=?(nlgn)。

证明:首先,我们有lgn!=lg1+lg2+…+lgn=k=1nlgk?k=1nlgn=nlgn=O(n

再有lgn!=k=1nlgk?k=n/2nlgk?k=n/2nlgn2?n2lgn2

所以有lgn!=?(nlgn)。

假设序列A[1..n]含有n个不同的数并已从小到大排好,即A[1]A[2]…A[n]。为方便起见,还假定A[0]=-¥和A[n+1]=¥。考虑在这个序列中有哪些信誉好的足球投注网站一个给定数字x。如果有某个序号i存在使得x=A[i](1?i?n),则报告成功并输出序号i。否则,找出两个相邻序号,i和i+1,满足A[i]xA[i+1]。证明,如果用比较的方法有哪些信誉好的足球投注网站的话,任何算法在最坏情况下需要至少élg(n+1)ù次比较。这题的结果和第2章习题5的结果证明二元有哪些信誉好的足球投注网站算法(例2.1)是最优的。

证明: 显然,x和序列A中任何一个数最多只须比较一次。所以,这样的有哪些信誉好的足球投注网站算法可以用一个决策树来描述。这是一个完全二叉树,其中每个内结点对应一个序列中数。假定第一次比较是在x和序列中某个数A[i]进行,那么树的根结点对应A[i]。我们有三种比较结果:

x=A[i]。这时有哪些信誉好的足球投注网站停止在这个结点并报告成功。

xA[i]。这种情形发生时,这以后算法进行的所有的比较用一个左子树描述。这时,如果这以后算法不再比较,则算法中止,左子树为一叶结点。

xA[i]。这种情况发生时,这以后算法进行的所有的比较用一个右子树描述。这时,如果这以后算法不再比较,则算法中止,右子树为一叶结点。

显然,一个算法必须正确地报告各种情况。对一个有n个数的序列,一共有2n+1种可能的情况,它们是x=A[i](1?i?n),和A[i]xA[i+1],0?i?n。因此,这个二叉树必须有至少2n+1个结点,包括内结点和外结点。假设这个树的高为h,那么它含有的结点数最多为:

1+2+4+…+2h=2h+1-1。

因此我们有2h+1-132n+1,即2h3n+1。由此得h3élg(n+1)ù。

因为深度为h的结点必定是个叶结奌并代表算法要进行h次比较的情况。因此在最坏情况下,任何算法需要至少élg(n+1)ù次比较。

假设在需要排序的6个数a1,a2,a3,a4,a5,a6中,已知a1a3a5,但此外不知道其他数字之间的任何关系。证明任何基於比较的排序算法在最坏情况下需要至少7次比较才能把这6个数排好序。

证明:在已知a1a3a5的情况下,这6个数可能有的不同的排列数是4′5′6=120。所以任一个基於比较的排序算法对应的决策树必须有至少120个叶子。设该树的高度为h,那么,下面关系必须满足:2h3120。因此有h37。这也就是说,某个叶子的深度至少为7。那么,当算法在这个叶子结束时必定经过了至少7次比较。所以任何基於比较的排序算法在最坏情况下需要至少7次比较。

对任意一个有n个内结点的完全二叉树T,其外路径总长EPL(T)和内路经总长IPL(T)满足以下关系:EPL(T)=IPL(T)+2n。

证明:我们对n进行归纳证明。

归纳基础:

当n=1时,显然有EPL(T)=2和IPL(T)=0。所以等式EPL(T)=IPL(T)+2n成立。

归纳步骤:

假设当内结点数为n=1,2,…,k-1(k?2)时,均有EPL(T)=IPL(T)+2n。我们证明在n=k时,该等式仍成立。假设完全二叉树T有k个内结点。如下图(a)所示,我们总可以找到一个内结点x,它的两个儿子都是叶子,标为a和b。如图(b)所示,如果我们把a和b从树中删去,我们可得到另一个完全二叉树T’。这个完全二叉树T’有k-1个内结点。

x

x

a

b

x

点x的两个儿子a和b都是叶子

把点x的两个儿子a和b都刪去后的二叉树T’

由归纳假设,我们有EPL(T’)=IPL(T’)+2(k-1)。

从树T和T’的关系,我们有以下关系:

EPL(T)=EPL(T’)–depth(x)+depth(a)+depth(b) (1)

IPL(T)=IPL(T’)+depth(x) (2)

由(1)–(2),以及depth(a)=depth(b),得到

EPL(T)-IPL(T)=EPL(T’)-IPL(T

您可能关注的文档

文档评论(0)

balala11 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档