- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法设计与分析学习提纲,第十四章下界
第十四章 下界
14.1 平凡下界
平凡下界:用直观的方法就可以推导出来。
例14.1 检查个元素的整数数组中,其值为偶数的元素个数。
需要对数组中的每一个元素进行判断和累计。
对每一个元素进行判断需要时间,
对个元素进行判断,就需要时间。
因此,是求解这个问题的所有算法的下界。
例14.2 检查具有个顶点的有向图的可达性矩阵问题。
个顶点的有向图的可达性矩阵是一个的矩阵,
需要检查个元素,每检查一个元素至少需要时间,
则检查个元素,至少需要时间。
因此,是求解这个问题的所有算法的下界。
1.4.2 判定树模型
一、判定树模型
判定树是一棵二叉树:
内部结点,相应于形式为的比较。
如果关系成立,则控制转移到左儿子结点;
否则,控制转移到右儿子结点。
叶子结点,表示问题的一个结果。
二、用判定树模型建立问题的下界
从根结点开始执行,根据比较操作的结果,将控制转移到它的儿子结点。
上述过程一直进行,直到叶子结点为止
判定树的高度与问题的时间复杂性有关
忽略解题时的所有算术运算,只集中考虑分支执行时的转移次数。
14.2.1 检索问题
一、检索问题:
数组是一个具有个元素的有序数组,给定元素,确定是否在数组中。
二、用判定树模型来确定基于比较的检索问题的下界
用二叉树表示数组的检索过程,
树中的每个结点表示元素和数组中某个元素的一次比较。
每次比较有三种可能的结果:、、及。
假定,如果,则算法检索成功而终止;
如果,则算法的执行转移到二叉树的左分支;
如果,则算法的执行转移到二叉树的右分支。
算法的执行沿左右分支推进,直到叶子结点,
若都找不到使的,,则算法检索失败而终止。
因为检索过程是从根结点开始,直到叶结点为止的。
因此,比较与判定的次数是树的高度加1。
当被检索元素的个数为时,
因为元素是有序的,判定树的内部结点至多为个,其中。
如果所有结点都集中在树的第层及其较低的层上,
那么,树的高度至少为,
由此得到,检索个元素,在最坏情况下,至少需要进行次比较。
显然,这也是检索问题的下界。由此可以得到下面的定理:
定理14.1 检索具有个元素的有序数组,在最坏情况下的比较次数是。
因此,检索问题的下界是,而二叉检索算法是检索问题中的最优算法。
例如,,则二叉检索问题的判定树如图14.1所示:
图14.1 检索有序数组的判定树
14.2.2 排序问题
一、基于比较的排序问题
数组是一个具有个元素的无序数组,把数组按非增或非降顺序排序。
二、用判定树模型来确定基于比较的排序问题的下界
1、工作过程
判定树的每一个内部结点表示一个判定,每一个叶子结点,表示一个输出。
在每一个判定中,比较数组中的两个元素和,
如果,则控制转移到左分支结点;否则,控制转移到右分支结点。
从根结点开始,判定数组中某两个元素进行,
根据判定的结果,转移到某个分支结点,又对数组中的某两个元素进行判定,
如此进行,直到叶子结点为止,就得到一个有序的数组。
图14.2表示对一个具有3个元素的数组进行排序的一种判定树。
图14.2 排序三个元素的一种判定树
如果被排序的元素个数为, 个元素有种排列,
判定树中的叶子结点个数为个。
2、判定树的高度
引理14.1 若是至少具有个叶子结点的二叉树,则的高度至少为:
证明:令为二叉树的高度,第层的叶子结点数目至多为。
是至少具有个叶子结点,所以,有,即。因为
由图14.3,有:
图14.3 计算的近似值
定理14.2 任何基于比较的排序算法,对个元素进行排序时,在最坏情况下的时间下界为。
14.3 代数判定树模型
代数判定树:
使判定树内部结点能对个输入变量的多项式进行计算和比较判定,再根据判定的结果进行分支,用这种方式进行计算和判断所产生的判定树,称为代数判定树。
14.3.1 代数判定树模型及下界定理
一、代数判定树模型
1、代数判定树模型
个输入变量的代数判定树是一棵二叉树:
用如下形式的测试语句标记内部结点的语句:
如果成立,则转移到左儿子结点;否则,转移到右儿子结点。
其中,是三个关系运算符中的任何一个。
用答案或标记叶子结点的语句。
2、阶代数判定树
对某个,标记内部结点的语句,
与其相关的多项式至多是阶多项式,
3、线性代数判定树,或线性判定树。
标记内部结点的所有语句,
与其相关的所有多项式都是线性的,
二、下界定理
1、判定问题的成员点集
是判定问题,是该判定问题的输入实例。
的每一个输入实例,看成是维空间中的一点,
则对维空间中的子集,
如果,当且仅当问题对输入实例的答案为,
则称为判定问题的成员点集。
2、代数判定树判定中的成员
把点作为输入参数,
在代数判定树的根结点上开始计算,
最终到达代数判定树的叶子结点为,当且仅当,
称代数判定树判定中的成员。
3、下界定理的引理。
文档评论(0)