- 1、本文档共80页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章分治法精要
第4章 分治法 ;4.1 概 述 ; 将一个难以直接解决的大问题,划分成一些规模较小的子问题,以便各个击破,分而治之。更一般地说,将要求解的原问题划分成k个较小规模的子问题,对这k个子问题分别求解。如果子问题的规模仍然不够小,则再将每个子问题划分为k个规模更小的子问题,如此分解下去,直到问题规模足够小,很容易求出其解为止,再将子问题的解合并为一个更大规模的问题的解,自底向上逐步求出原问题的解。 ;2. 独立子问题:各子问题之间相互独立,这涉及到分治法的效率,如果各子问题不是独立的,则分治法需要重复地解公共的子问题。 ;;4.1.2 分治法的求解过程 ; 例:计算an,应用分治技术得到如下计算方法:;4.2 递 归 ;4.2.1 递归的定义 ;;;;递归函数的经典问题——汉诺塔问题
在世界刚被创建的时候有一座钻石宝塔(塔A),其上有64个金碟。所有碟子按从大到小的次序从塔底堆放至塔顶。紧挨着这座塔有另外两个钻石宝塔(塔B和塔C)。从世界创始之日起,婆罗门的牧师们就一直在试图把塔A上的碟子移动到塔C上去,其间借助于塔B的帮助。每次只能移动一个碟子,任何时候都不能把一个碟子放在比它小的碟子上面。当牧师们完成任务时,世界末日也就到了。
;;? 李志欣;算法4.2——汉诺塔算法
1 void Hanoi(int n, char A, char B, char C)
//第一列为语句行号
2 {
3 if (n==1) Move(A, C);
//Move是一个抽象操作,表示将碟子从A移到C上
4 else {
5 Hanoi(n-1, A, C, B);
6 Move(A, C);
7 Hanoi(n-1, B, A, C);
8 }
9 }
;4.2.2 递归函数的运行轨迹 ;Hanio(3,A,B,C);4.2.3 递归函数的内部执行过程 ;汉诺塔算法在执行过程中,工作栈的变化下图所示,其中栈元素的结构为(返回地址,n值,A值,B值,C值),返回地址对应算法中语句的行号。; 递归算法结构清晰,可读性强,而且容易用数学归纳法来证明算法的正确性,因此,它为设计算法和调试程序带来很大方便,是算法设计中的一种强有力的工具。但是,因为递归算法是一种自身调用自身的算法,随着递归深度的增加,工作栈所需要的空间增大,递归调用时的辅助操作增多,因此,递归算法的运行效率较低。 ;递归算法到非递归算法的转换;;;;;;4.3 排序问题中的分治法;4.3.1 归并排序; r1 … … rn/2 rn/2+1 … … rn 划分
r‘1… …r’n/2 r’n/2+1… …r’n 递归处理
r1……rn/2rn/2+1 ……r n 合并解
; 算法4.3——归并排序
void MergeSort(int r[ ], int r1[ ], int s, int t)
{
if (s= =t) r1[s]=r[s];
else {
m=(s+t)/2;
Mergesort(r, r1, s, m); //归并排序前半个子序列
Mergesort(r, r1, m+1, t); //归并排序后半个子序列
Merge(r1, r, s, m, t); //合并两个已排序的子序列
}
}
; 二路归并排序的合并步的时间复杂性为O(n),所以,二路归并排序算法存在如下递推式:;算法4.4——合并有序子序列
void Merge(int r[ ], int r1[ ], int s, int m, int t)
{
i=s; j=m+1; k=s;
while (i=m j=t)
{
if (r[i]=r[j]) r1[k++]=r[i++]; //取r[i]和r[j]中较小者放入r1[k]
else r1[k++]=r[j++];
}
if (i=m) while (i=m)
您可能关注的文档
- 第44课物质科学实验(二).ppt
- 第4单元-第11课第1站构建和谐社会.ppt
- 自冲铆接新技术.ppt
- 第4单元教案.doc
- 第3课汉代的思想大一统【岳麓版】(课件13).ppt
- 第4单元第3章人体的呼吸.doc
- 第4单元第6章人体生命活动的调节.doc
- 第3部分第2章第2讲东南亚南亚-印度.ppt
- 自主式进餐.ppt
- 自动进料装置.doc
- 2024高考物理一轮复习规范演练7共点力的平衡含解析新人教版.doc
- 高中语文第5课苏轼词两首学案3新人教版必修4.doc
- 2024_2025学年高中英语课时分层作业9Unit3LifeinthefutureSectionⅢⅣ含解析新人教版必修5.doc
- 2024_2025学年新教材高中英语模块素养检测含解析译林版必修第一册.doc
- 2024_2025学年新教材高中英语单元综合检测5含解析外研版选择性必修第一册.doc
- 2024高考政治一轮复习第1单元生活与消费第三课多彩的消费练习含解析新人教版必修1.doc
- 2024_2025学年新教材高中英语WELCOMEUNITSectionⅡReadingandThi.doc
- 2024_2025学年高中历史专题九当今世界政治格局的多极化趋势测评含解析人民版必修1.docx
- 2024高考生物一轮复习第9单元生物与环境第29讲生态系统的结构和功能教案.docx
- 2024_2025学年新教材高中英语UNIT5LANGUAGESAROUNDTHEWORLDSect.doc
文档评论(0)