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

2009-2010.2《算法》-10回溯法题稿.ppt

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
克服困难性 克服困难性 穷举法、归纳法、分治法、动态规划、贪心法、图的搜索等方法是有效的算法,但是,大量的实际问题尚无有效的算法,这些问题的时间测度常常需要用年或世纪。 这些困难问题的解决有三套方案: 1、基于搜索剪枝技术。 2、基于精确的概率概念。 3、基于近似的解。 基于搜索剪枝技术 此方法适用于那些在平均情况下能够显示出良好的时间复杂性,但在最坏情况下很难得到多项式解法的问题。此方法对问题的状态空间进行搜索,并在搜索过程中进行剪枝。 两个搜索剪枝技术: 回溯法 分支限界法 基于精确的概率概念 一个简单的决策或测试过程,能够精确的完成一个任务,经过这样的反复测试,将能够构造解,或者增加解的可信度到所期望的程度。 方法:随机算法 基于近似的解 适用于得到渐进的解,利用此方法,可以通过在解的质量上的妥协以换得更快的(多项式时间)解。 方法:近似算法 回溯法 学习要点 理解回溯法的深度优先搜索策略。 思路:状态空间--- 穷举设计 求解过程--- 深度优先搜索+剪枝 通过应用范例学习回溯法的设计策略。 (1)图的3着色问题 (2)8皇后问题; 3着色问题: 3着色问题: 求解过程--- 深度优先搜索+剪枝 输入:无向图G=(V,E) 输出:G的顶点的3着色,其中每个c[j]为1,2,3 1. for k=1 to n 2. c[k]=0 3. end for 4. flag= flase 5. k=1 6. while k=1 7. while c[k]=2 8. c[k]=c[k]+1 9. if c 为合法着色 then set flag =true 且退出 10. else if c 是部分解 then k=k+1 {前进} 11. end while 12. c[k]=0 13. k=k-1 {回溯,就是剪枝} 14. end while 15. if flag then output c 16. else output “no solution” 8皇后问题 如何在8*8的国际象棋棋盘上安排8个皇后,使得没有两个皇后能互相攻击? 约束条件:如果两个皇后在同一行、同一列、同一条对角线上,她们能互相攻击。 可以推导到N皇后问题。在n×n格的棋盘上放置彼此不受攻击的n个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n后问题等价于在n×n格的棋盘上放置n个皇后,任何2个皇后不放在同一行或同一列或同一斜线上。 4皇后举例 4皇后举例:P316,图 12.2 问题的解空间 递归回溯 输入:集合X1,X2,…,Xn的清楚的或隐含的描述 输出:解向量v=(x1,x2,…,xi),0=i=n 1. v={} 2. flag=false 3. advance(1) 4. if flag then output v 5. else output “no solution” advance(k) 1. for x ? Xk 2. xk =x ;将xk 加入 v 3. if v 为最终解 then set flag=true and exit 4. else if v 是部分解 then advance (k+1) 5. end for 输入:集合X1,X2,…Xn的清楚的或隐含的描述 输出:解向量v=(x1,x2,…,xi),0=i=n 1. v={} 2. flag= flase 3. k=1 4. while k=1 5. while Xk 没有被穷举 6. xk中的下一个元素;将xk 加入v 7. if v 为合法着色 then set flag =true 且退出 8. else if v 是部分解 then k=k+1 {前进} 9. end while 10. 重置Xk ,使得下一个元素排在第一位 11. k=k-1 {回溯,就是剪枝} 12. end while 13. if flag then output v 14. else output “no solution” * * 图的m着色问题 给定无向连通图G和m种不同的颜色。用这些颜色为图G的各顶点着色,每个顶点着一种颜

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

我是一名原创力文库的爱好者!从事自由职业!

1亿VIP精品文档

相关文档