




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ACM专题讲座搜索算法 12搜索算法1. 搜索问题2. 搜索方法分类3. 回溯方法4. 一般图搜索算法 5. 启发式搜索算法31.搜索问题人类的思维过程,可以看作一个搜索过程。我们遇到的很多智力游戏问题,如传教士和野人问题。 有3个传教士和3个野人来到河边准备渡河,河岸有一条船,每次最多可乘坐2个人。问传教士为安全起见,应如何规划摆渡方案,使得在任何时刻,在河的两岸以及船上传教士人数不能少于野人的人数?对这个问题,在每一次渡河后,都会有几种渡河方案供选择,究竟哪种方案最有利? 这就是搜索问题。41.搜索问题对这类问题,一般我们都转换为状态空间的搜索问题。如传教士和野人问题,可用在河左岸的传教士
2、人数、野人人数和船的情况来表示。即,初始时状态为(3,3,1),结束状态为(0,0,0),而中间状态可表示为(2,2,0)、(3,2,1)等等。 初始状态 结束状态 L R L R m 3 0 m 0 3 c 3 0 c 0 3 B 1 0 B 0 151.搜索问题由此,可以看出这类问题的解,就是一个合法状态的序列,其中序列中第一个状态是问题的初始状态,而最后一个状态则是问题的结束状态。如图所示即搜索问题的示意图:SgS0解路径解路径搜索空间搜索空间全状态空间全状态空间62.搜索方法分类不可撤回方法不可撤回方法试探性方法试探性方法回溯方法回溯方法图搜索方法图搜索方法73. 回溯方法回溯方法,属
3、于盲目搜索的一种,它是这样一种策略:首先将规则给出一个固定的排序,在搜索时,对当前状态依次检测每一条规则,在当前状态未使用过的规则中找到第一条可应用规则,应用于当前状态,得到的新状态重新设置为当前状态,并重复以上搜索。如果当前状态无规则可用,或者所有规则已经被试探过仍未找到问题的解,则将当前状态的前一个状态(即直接生成该状态的状态)设置为当前状态。重复以上搜索,直到找到问题的解,或已试探过所有可能仍找不到问题的解为止。83. 回溯方法 对于用回溯法求解的问题,首先要将问题进行适当的转化,得出状态空间树。 这棵树的每条完整路径都代表了一种解的可能。通过深度优先搜索这棵树,枚举每种可能的解的情况;
4、从而得出结果。但是,回溯法中通过构造约束函数,可以大大 提升程序效率,因为在深度优先搜索的过程中,不断的将每个解(并不一定是完整的,事实上这也就是构造约束函数的意义所在)与约束函数进行对照从而删除一些 不可能的解,这样就不必继续把解的剩余部分列出从而节省部分时间。93. 回溯方法回溯法中,首先需要明确下面三个概念: (一)约束函数:约束函数是根据题意定出的。通过描述合法解的一般特征用于去除不合法的解,从而避免继续搜索出这个不合法解的剩余部分。因此,约束函数是对于任何状态空间树上的节点都有效、等价的。 (二)状态空间树:刚刚已经提到,状态空间树是一个对所有解的图形描述。树上的每个子节点的解都只有
5、一个部分与父节点不同。 (三)扩展节点、活结点、死结点:所谓扩展节点,就是当前正在求出它的子节点的节点,在DFS中,只允许有一个扩展节点。活结点就是通过与约束函数的对照,节点本身和其父节点均满足约束函数要求的节点;死结点反之。由此很容易知道死结点是不必求出其子节点的(没有意义)。103. 回溯方法深度优先搜索(DFS)和广度优先搜索(FIFO) 在分支界限法中,一般用的是FIFO或最小耗费搜索;其思想是一次性将一个节点的所有子节点求出并将其放入一个待求子节点的队列。通过遍历这个队列(队列在 遍历过程中不断增长)完成搜索。而DFS的作法则是将每一条合法路径求出后再转而向上求第二条合法路径。而在回
6、溯法中,一般都用DFS。为什么呢?这是因 为可以通过约束函数杀死一些节点从而节省时间,由于DFS是将路径逐一求出的,通过在求路径的过程中杀死节点即可省去求所有子节点所花费的时间。FIFO 理论上也是可以做到这样的,但是通过对比不难发现,DFS在以这种方法解决问题时思路要清晰非常多。 因此,回溯法可以被认为是一个有过剪枝的DFS过程。 113. 回溯方法利用回溯法解题的具体步骤 首先,要通过读题完成下面三个步骤: (1)描述解的形式,定义一个解空间,它包含问题的所有解。 (2)构造状态空间树。 (3)构造约束函数(用于杀死节点)。 123. 回溯方法然后就要通过DFS思想完成回溯,完整过程如下:
7、(1)设置初始化的方案(给变量赋初值,读入已知数据等)。 (2)变换方式去试探,若全部试完则转(7)。 (3)判断此法是否成功(通过约束函数),不成功则转(2)。 (4)试探成功则前进一步再试探。 (5)正确方案还未找到则转(2)。 (6)已找到一种方案则记录并打印。 (7)退回一步(回溯),若未退到头则转(2)。 (8)已退到头则结束或打印无解。13 修道士和野人问题编程实现 过河问题的求解:三个修道士和三个野人过河,船一次最多只能载两个人,在任何时候修道士的人数不能少于野人人数,否则野人会吃掉修道士。找出六个人顺利过河的所有方案。 14整体思想 采用四元组(修道士人数03,会划船野人数02
8、,不会划船野人数0/1,船所在岸0/1)描述结点状态,开始状态为(3,2,1,0),目标状态为(0,0,0,1)。采用带回溯的深度优先搜索策略,共定义了7种合法操作2,0,0,1,0,0,1,1,0,0,1,0,0,2,0,0,1,1,1,0,1代表上船的人数,根据船所在位置决定在状态上是加或者减操作。扩展结点时按顺序应用操作,直到回溯到初始状态且所有操作用完,程序结束。 15类设计 state类:描述状态结点,包括描述状态的相关成员变量和操作变量的成员函数 river类:描述和解决过河问题 16【算法和数据结构】 1算法 采用带回溯的深度优先策略。 在每个合法结点上应用所有7种操作,生成所有
9、结点,然后判断结点的合法与否,确定是否回溯。每找到一种方法只要没有生成所有结点则回溯继续搜索。直到回溯到初始结点并且初始结点的所有操作已经应用完毕,则整个搜索过程结束。 2.数据结构 采用链表结构,结点是生成的状态,当前结点在链表头。结点中包含状态信息和程序需要的相关控制信息。新扩展生成的结点放在链表头,回溯时删除头结点并移动头指针。当找到一种过河方案时,当前链表中的所有结点就是按顺序生成的状态结点,只要遍历链表输出状态就可以得到该种方法经过的状态和所用的操作。17N皇后问题 问题描述: 在一个N*N的棋盘上放置N个皇后,且使得每两个之间不能互相攻击,也就是使得每两个不在同一行,同一列和同一斜
10、角线上。183. 回溯方法n例:皇后问题QQQQ193. 回溯方法( )( )203. 回溯方法( )( )(1,1)Q213. 回溯方法( )( )(1,1)(1,1) (2,3)QQ223. 回溯方法( )( )(1,1)(1,1) (2,3)Q233. 回溯方法( )( )(1,1)(1,1) (2,3)(1,1) (2,4)QQ243. 回溯方法( )( )(1,1)(1,1) (2,3)(1,1) (2,4)(1,1) (2,4) (3.2)QQQ253. 回溯方法( )( )(1,1)(1,1) (2,3)(1,1) (2,4)(1,1) (2,4) (3.2)QQ263. 回溯方
11、法( )( )(1,1)(1,1) (2,3)(1,1) (2,4)(1,1) (2,4) (3.2)Q273. 回溯方法( )( )(1,1)(1,1) (2,3)(1,1) (2,4)(1,1) (2,4) (3.2)283. 回溯方法( )( )(1,1)(1,1) (2,3)(1,1) (2,4)(1,1) (2,4) (3.2)(1,2)Q293. 回溯方法( )( )(1,1)(1,1) (2,3)(1,1) (2,4)(1,1) (2,4) (3.2)(1,2)(1,2) (2,4)QQ303. 回溯方法( )( )(1,1)(1,1) (2,3)(1,1) (2,4)(1,1) (2,4) (3.2)(1,2)(1,2) (2,4)(1,2) (2,4) (3,1)QQQ313. 回溯方法( )( )(1,1)(1,1) (2,3)(1,1) (2,4)(1,1) (2,4) (3.2)(1,2)(1,2) (2,4)(1,2) (2,4) (3,1)(1,2) (2,4) (3,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030中国硫酸氨基葡萄糖片剂行业竞争动态及供需形势研究报告
- 2025至2030中国电子纸封边胶市场营销模式及未来运行态势展望报告
- 2025至2030中国混炼胶行业运行状况及投资潜力研究报告
- 2025至2030中国液体包装薄膜行业盈利态势及竞争趋势研究报告
- 2025至2030中国水果行业消费方向及营销动态研究报告
- 2025至2030中国植物营养土市场现状趋势及前景战略研究报告
- 2025至2030中国数字孪生行业发展现状及趋势前景研究报告
- 2025至2030中国微生物发酵行业推广策略与营销渠道战略规划报告
- 2025至2030中国干粉灭火剂行业需求态势及应用前景研究报告
- 2025至2030中国宠物浴盐市场应用规模及未来竞争力优势研究报告
- 机场运营效率提升策略与创新模式-洞察阐释
- 安徽省1号卷A10联盟2025届高三5月最后一卷生物试题及答案
- 网络安全等级保护备案表(2025版)
- 共情研究的历史发展及其当前状况分析
- 山东省临沂市2025年普通高等学校招生全国统一考试(模拟)语文及答案(临沂二模)
- 济南幼儿师范高等专科学校招聘真题2024
- 定额〔2025〕1号文-关于发布2018版电力建设工程概预算定额2024年度价格水平调整的通知
- 宫颈癌护理查房-4
- 数字媒体技术概论(融媒体版) 课件 1融媒体技术基础
- Q∕GDW 10364-2020 单相智能电能表技术规范
- 批发零售大个体 E204-3批发和零售业产业活动单位(个体经营户)商品销售和库存
评论
0/150
提交评论