数据结构与算法 超越算法能力的极限ppt课件.ppt

数据结构与算法 超越算法能力的极限ppt课件.ppt

ID:59265727

大小:1.29 MB

页数:40页

时间:2020-09-22

数据结构与算法 超越算法能力的极限ppt课件.ppt_第1页
数据结构与算法 超越算法能力的极限ppt课件.ppt_第2页
数据结构与算法 超越算法能力的极限ppt课件.ppt_第3页
数据结构与算法 超越算法能力的极限ppt课件.ppt_第4页
数据结构与算法 超越算法能力的极限ppt课件.ppt_第5页
资源描述:

《数据结构与算法 超越算法能力的极限ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第9章超越算法能力的极限概述状态空间树搜索:FIFO,LIFO回溯(Backtracking)n皇后子集和图着色哈密顿回路分支界限(BranchandBound)15-puzzle0-1背包本章习题概述概述本章介绍:回溯法、分支界限法两种算法都是对穷举搜索的改进。与穷举不同,每次构造候选解的一个部分解。然后,据设定的评估准则评估这个部分解是否有前途:YES:构造下一步部分解。NO:抛弃该部分解,生成、评估另一个部分解。如此继续,直到找到最终全解——各步部分解组成。在最坏情况下,仍不可避免穷举查找中遇到的

2、指数级组合爆炸问题,但这种方法使我们至少可以求解某些组合难题的更大实例。回溯、分支限界的算法过程用状态空间树的搜索来描述。节点是问题的一个状态。如果预见到当前节点的子孙节点不可能成为问题全解的一个部分解,两种方法都将停止处理该节点及子孙。两种方法的区别求解不同的问题,分支界限法只能用于最优问题。回溯法不受此限,通常处理非最优问题,它的节点搜索为深度优先(DFS),分支界限的节点搜索有多种方法。状态空间树的FIFO,LIFO,LC检索状态空间树搜索:FIFO,LIFO解空间:问题有多个解,所有解的集合。问

3、题有n个变量(输入规模),解向量Xk=(x1,...,xn)表示问题的解(包括不可行解)。例如:0-1背包问题,n=3:每个x取值为0或1共2n=8个解向量,解空间:{(0,0,0),(0,0,1),(0,1,0),(0,1,1),(1,0,0),(1,0,1),(1,1,0),(1,1,1)}旅行商问题,顶点数n=3的完全图:每个x取值{1,2,3},解空间:{(1,1,1),(1,1,2),(1,1,3),(1,2,1),(1,2,2),(1,2,3),...,(3,3,3)}共nn=33=27个解

4、向量。可用约束条件xk≠xm压缩解空间:{(1,2,3),(1,3,2),(2,1,3),(2,3,1),(3,1,2),(3,2,1)}——n!解空间树(状态空间树)将问题的解空间用树来描述——解空间树。n=3的0-1背包解空间树(包括非可行解)(0,0,0)状态空间树举例1层2层3层最优解(1,0,0)根到叶的一条路径表示一个解向量Xk每条边表示一个解分量xi每一层构造一个解分量n=4节点完全图,旅行商问题的解空间树(可行解)(0,0,0,0)解空间树搜索的一般策略穷举搜索与解空间压缩——对整个解空

5、间(包括不可行解)进行穷举搜索。——利用约束条件和目标函数,对搜索过程进行评估和指导,以大大压缩搜索空间(剪枝)。活节点、死节点、e_节点活节点:不是叶节点,满足约束条件,使目标函数有所改善,儿子节点尚有未访问的(可继续搜索下去)。否则,死节点。e_节点:扩展节点,当前正在搜索的活节点。状态空间树的一般搜索过程从根开始搜索过程。当前e_节点,左→右判定子节点是否活节点?YES:存入活节点表,且把该边相应的解分量xi加入部分解。然后,从活节点表中取出下一个活节点作为e_节点,继续该过程。如果只要求找问题的

6、一个解,搜索到一个目标解即可。如果要求找问题的全部解,则搜索过程需进行到活节点表空为止。活节点表的存储结构决定了搜索方向。状态空间树的FIFO,LIFO搜索状态空间树搜索:FIFO,LIFO活节点表的存储结构决定搜索方向(BFS、DFS)栈:用栈存储活节点,LIFO(LastinFirstOut)搜索。DFS队列:队列存储活节点,FIFO(FirstinFirstOut)搜索。BFS12345671253467LIFO搜索过程FIFO搜索过程125说明:节点号表示搜索的顺序。LIFO访问节点顺序:1→2

7、→3→2→4→2→1→5→6→5→7→5→1活节点栈空:算法停止。活节点退栈:成为死节点时。123LIFO和FIFO搜索的缺陷LIFO和FIFO搜索的缺陷状态空间树很大时,两种搜索都不能很快到达答案节点,搜索过程带有盲目性。本例最佳搜索路线:1→18→29→30→31为提高搜索效率需改进搜索策略,后述分支界限法。B节点分支被剪除FIFO搜索完30节点后搜索32而非31圈内编号为LIFO圈外编号为FIFO回溯(Backtracking)回溯(Backtracking)——号称“通用解题法”剪枝函数回溯法搜

8、索的两种剪枝策略——避免无效搜索1.约束函数:在e_节点处剪去不满足约束条件的子树2.限界函数:剪去不能得到最优解的子树——这两类函数统称为剪枝函数。举例:0-1背包问题:用剪枝函数剪去导致不可行解的子树。旅行商问题:若从根到e_节点的部分路线费用超过前面已经找到的最低费用路线,则断定以这个e_节点为根的子树不可能产生最优解,因此,将该子树剪去。n皇后问题在一个n×n格棋盘上放n个皇后,使它们彼此不能攻击。国际象棋规则:一个皇后可攻击在同一

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。