电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

八皇后问题详细的解法-ppt课件

24页
  • 卖家[上传人]:葱**
  • 文档编号:184745522
  • 上传时间:2021-06-28
  • 文档格式:PPT
  • 文档大小:1.18MB
  • / 24 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、1,八皇后问题,2,1八皇后问题背景 2盲目的枚举算法 3加约束的枚举算法 4回溯法及基本思想 5 回溯法应用 6八皇后问题的递归回溯算法 7八皇后问题的非递归回溯算法,3,【背景】 八皇后问题是一个以国际象棋为背景的问题: 如何能够在 88 的国际象棋棋盘上放置八个皇后,使得任何一个皇后都无法直接吃掉其他的皇后?为了达到此目的,任两个皇后都不能处于同一条横行、纵行或斜线上。,4,八皇后问题,要在8*8的国际象棋棋盘中放8个皇后,使任意两个皇后都不能互相吃掉。规则:皇后能吃掉同一行、同一列、同一对角线的任意棋子。求所有的解。 八皇后的两组解,5,【问题分析】,设八个皇后为xi,分别在第i行(i=1,2,3,4,8); 问题的解状态:可以用(1,x1),(2,x2),(8,x8)表示8个皇后的位置; 由于行号固定,可简单记为:(x1,x2,x3,x4,x5,x6,x7,x8); 问题的解空间:(x1,x2,x3,x4,x5,x6,x7,x8),1xi8(i=1,2,3,4,8),共88个状态; 约束条件:八个(1,x1),(2,x2) ,(3,x3),(4,x4) ,(5,x5), (6

      2、,x6) , (7,x7), (8,x8)不在同一行、同一列和同一对角线上。,原问题即:在解空间中寻找符合约束条件的解状态。,按什么顺序去搜? 目标是没有漏网之鱼,尽量速度快。,6,枚举得有个顺序,否则轻则有漏的、重复的;重则无法循环表示。,2 【问题设计】盲目的枚举算法,a 盲目的枚举算法 通过8重循环模拟搜索空间中的88个状态; 按枚举思想,以DFS的方式,从第1个皇后在第1列开始搜索,枚举出所有的“解状态”: 从中找出满足约束条件的“答案状态”。,约束条件?,1.按什么顺序去查找所有的解 a.盲目的枚举算法 void main() int x100; for (x1=1;x1=10;x1+) for (x2=1;x2=10;x2+) for (x3=1;x3=10;x3+) for (x4=1;x4=10;x4+) for (x5=1;x5=10;x5+) for (x6=1;x6=10;x6+) for (x7=1;x7=10;x7+) for (x8=1;x8=10;x8+) if (check(x)=0) printf(x); ,该如何解决冲突的问题呢? 1.行;我们是按照

      3、行枚举的,保证了一行一个皇后; 2.列:判断是否存在xi=xj 3.对角线:主对角线的i-j与从对角线的i+j存在特殊关系,如图:,9,盲目的枚举算法,约束条件? 不在同一列:xixj; 不在同一主对角线上:xi-i xj-j; 不在同一负对角线上:xi+i xj+j。,违规的情况可以整合改写为: abs(xi - xj)=abs( i-j ) or (xi = xj),10,盲目的枚举算法,queen1( ) int a9; for(a1=1;a1=8;a1+) for(a2=1;a2=8;a2+) for(a3=1;a3=8;a3+) for(a4=1;a4=8;a4+) for(a5=1;a5=8;a5+) for(a6=1;a6=8;a6+) for(a7=1;a7=8;a7+) for(a8=1;a8=8;a8+) if (check(a,8)=0) continue; else for(i=1;i=8;i+) print(ai); ,check1(a,n) int i,j; for(i=2;i=n;i+) for(j=1;j=i-1;j+) if (ai=aj) or (a

      4、bs(ai-aj)=abs(i-j) return(0); return(1); ,双重循环,任意两个皇后之间都必须检查。,用a1a8存储x1x8,11,有“通用的解题法”之称。 回溯法的基本做法是搜索,或是一种组织得井井有条的,能避免不必要搜索的穷举式搜索法。这种方法适用于解一些组合数相当大的问题。 回溯法在问题的解空间树中,按深度优先策略,从根结点出发搜索解空间树。算法搜索至解空间树的任意一点时,先判断该结点是否包含问题的解。如果肯定不包含,则跳过对该结点为根的子树的搜索,逐层向其祖先结点回溯;否则,进入该子树,继续按深度优先策略搜索。,1 回溯法,回溯法指导思想走不通,就掉头。,12,求问题所有解:要回溯到根,且根结点的所有子树都已被搜索遍才结束。 求任一解:只要搜索到问题的一个解就可结束。,1 回溯法,13,1 回溯算法设计过程,step1 确定问题的解空间; step2 确定结点的扩展规则; step3 搜索解空间。,14,2 回溯法应用-加约束的枚举算法,如果能够排除那些没有前途的状态,会节约时间;,如何提前发现?,回溯法指导思想走不通,就掉头,如(1,1, x3,x4,x

      5、5,x6,x7,x8)没有必要再扩展;,这种状态扩展后会产生86个结点;,同样的(1,2, x3,x4,x5,x6,x7,x8),也应被排除。,在每一次扩展E结点后,都进行检查;,对检查结果如何处理?,检查合格的才继续向下扩展; 遇到不合格的“掉头就走”。,只要当前枚举到的状态可行,就继续枚举下去。当找到一种方案或者无法继续枚举下去时,就退回到上一状态。退回到上一状态的过程叫做回溯,枚举下一个状态的过程叫做递归。 回溯就是像人走迷宫一样,先选择一个前进方向尝试,一步步试探,在遇到死胡同不能再往前的时候就会退到上一个分支点,另选一个方向尝试,而在前进和回撤的路上都设置一些标记,以便能够正确返回,直到达到目标或者所有的可行方案都已经尝试完为止。,16,2 回溯法应用-例1 b加约束的枚举算法,我们可以依次确定每一行皇后的位置,如果在某一列可以放下一个皇后,我们就在这里放下,并搜索下一行,若无法放下皇后则回到上一行,即回溯,当n行的皇后都已确定后,我们就找到了一种方案,18,2 例1 b加约束的枚举算法,queen1( ) int a9; for(a1=1;a1=8;a1+) for(a2=

      6、1;a2=8;a2+) if ( check(a,2)=0 ) continue; for(a3=1;a3=8;a3+) if (check(a,7)=0) continue; for(a8=1;a8=8;a8+) if (check(a,8)=0)continue; else for(i=1;i=8;i+) print(ai); ,此算法可读性很好,体现了“回溯”。但它只能解决八皇后问题,而不能解决任意的n皇后问题。,check2 (int a ,int n)/多次被调用,只是一重循环 int i; for(i=1;i=n-1;i+) if (abs(ai-an)=abs(i-n) or (ai=an) return(0); return(1);,19,2 回溯法应用-算法说明,八皇后问题中的核心代码: 遍历过程函数; check函数。,解决此类问题的核心内容: 解空间树的搜索算法; 估值/判断函数:判断哪些状态适合继续扩展,或者作为答案状态。,20,2 回溯法应用-n皇后问题,介绍过的方法: c递归回溯算法; d非递归回溯算法;,策略:能进则进,不能进则换,不能换则退。,21,2 回溯法应用-算法框架-递归算法框架,int an; Queens(int k) if (kn) 即表示最后一个皇后摆放完毕,输出结果; else for(i=下界 ; i=上界; i+) /枚举K个皇后所有可能的路径 依次从列顶端开始搜索,一直到列底端,直到找到合适位置,如果未找到,自动返回上层递归 ak=i; if (check(a,k) /满足限界函数和约束条件,不冲突 /递归摆放下一个皇后Queens (k+ 1); ,22,23,2 回溯法应用-算法框架-非递归回溯框架,int an,i; 初始化数组a ; i=1; While (i0(有路可走) and (未达到目标) /还未回溯到头 if (i=n) 搜索到一个解,输出; /搜索到叶结点 else /正在处理第i个元素 ai第一个可能的值; while (ai不满足约束条件且在搜索空间内) ai下一个可能的值; if (ai在搜索空间内) 标识占用的资源; i=i+1; /扩展下一个结点 else 清理所占的状态空间;i=i-1; /回溯 ,24,八皇后问题,

      《八皇后问题详细的解法-ppt课件》由会员葱**分享,可在线阅读,更多相关《八皇后问题详细的解法-ppt课件》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
     
    收藏店铺
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.