- 1、本文档共32页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ACM专题讲座——搜索算法 ACM专题 ——搜索算法 搜索算法 1. 搜索问题 2. 搜索方法分类 3. 回溯方法 4. 一般图搜索算法 5. 启发式搜索算法 1.搜索问题 人类的思维过程,可以看作一个搜索过程。我们遇到的很多智力游戏问题,如传教士和野人问题。 有3个传教士和3个野人来到河边准备渡河,河岸有一条船,每次最多可乘坐2个人。问传教士为安全起见,应如何规划摆渡方案,使得在任何时刻,在河的两岸以及船上传教士人数不能少于野人的人数?对这个问题,在每一次渡河后,都会有几种渡河方案供选择,究竟哪种方案最有利? 这就是搜索问题。 1.搜索问题 对这类问题,一般我们都转换为状态空间的搜索问题。 如传教士和野人问题,可用在河左岸的传教士人数、野人人数和船的情况来表示。即,初始时状态为(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 1 1.搜索问题 由此,可以看出这类问题的解,就是一个合法状态的序列,其中序列中第一个状态是问题的初始状态,而最后一个状态则是问题的结束状态。如图所示即搜索问题的示意图: Sg S0 解路径 搜索空间 全状态空间 2.搜索方法分类 不可撤回方法 试探性方法 回溯方法 图搜索方法 3. 回溯方法 回溯方法,属于盲目搜索的一种,它是这样一种策略:首先将规则给出一个固定的排序,在搜索时,对当前状态依次检测每一条规则,在当前状态未使用过的规则中找到第一条可应用规则,应用于当前状态,得到的新状态重新设置为当前状态,并重复以上搜索。如果当前状态无规则可用,或者所有规则已经被试探过仍未找到问题的解,则将当前状态的前一个状态(即直接生成该状态的状态)设置为当前状态。重复以上搜索,直到找到问题的解,或已试探过所有可能仍找不到问题的解为止。 3. 回溯方法 对于用回溯法求解的问题,首先要将问题进行适当的转化,得出状态空间树。 这棵树的每条完整路径都代表了一种解的可能。通过深度优先搜索这棵树,枚举每种可能的解的情况;从而得出结果。但是,回溯法中通过构造约束函数,可以大大 提升程序效率,因为在深度优先搜索的过程中,不断的将每个解(并不一定是完整的,事实上这也就是构造约束函数的意义所在)与约束函数进行对照从而删除一些 不可能的解,这样就不必继续把解的剩余部分列出从而节省部分时间。 3. 回溯方法 回溯法中,首先需要明确下面三个概念: ? (一)约束函数:约束函数是根据题意定出的。通过描述合法解的一般特征用于去除不合法的解,从而避免继续搜索出这个不合法解的剩余部分。因此,约束函数是对于任何状态空间树上的节点都有效、等价的。 ? (二)状态空间树:刚刚已经提到,状态空间树是一个对所有解的图形描述。树上的每个子节点的解都只有一个部分与父节点不同。 ? (三)扩展节点、活结点、死结点:所谓扩展节点,就是当前正在求出它的子节点的节点,在DFS中,只允许有一个扩展节点。活结点就是通过与约束函数的对照,节点本身和其父节点均满足约束函数要求的节点;死结点反之。由此很容易知道死结点是不必求出其子节点的(没有意义)。 3. 回溯方法 深度优先搜索(DFS)和广度优先搜索(FIFO) ? 在分支界限法中,一般用的是FIFO或最小耗费搜索;其思想是一次性将一个节点的所有子节点求出并将其放入一个待求子节点的队列。通过遍历这个队列(队列在 遍历过程中不断增长)完成搜索。而DFS的作法则是将每一条合法路径求出后再转而向上求第二条合法路径。而在回溯法中,一般都用DFS。为什么呢?这是因 为可以通过约束函数杀死一些节点从而节省时间,由于DFS是将路径逐一求出的,通过在求路径的过程中杀死节点即可省去求所有子节点所花费的时间。FIFO 理论上也是可以做到这样的,但是通过对比不难发现,DFS在以这种方法解决问题时思路要清晰非常多。 ? 因此,回溯法可以被认为是一个有过剪枝的DFS过程。 ? 3. 回溯方法 利用回溯法解题的具体步骤 ? 首先,要通过读题完成
您可能关注的文档
最近下载
- 慢性阻塞性肺病伴有急性下呼吸道感染护理查房.pptx
- 肺结核合并糖尿病(共23张PPT)【23页】.pptx
- 慢性阻塞性肺疾病护理疑难病历讨论.pptx VIP
- 安全管理体系与措施及环境保护管理体系与措施 .doc VIP
- 食材配送分拣管理制度内容.docx VIP
- 上汽通用雪佛兰-迈锐宝XL-产品使用说明书-全混动锐尊版-SGM7186EACHEV-17MYCHE2SCSOM26248143_20170629.pdf
- (完整版)软件项目开发计划书.pdf
- 增程式燃料电池电动汽车动力系统设计研究.pptx VIP
- 【增程式电动汽车能量管理策略研究开题报告文献综述5600字】.doc VIP
- 牛津上海版小学英语5年级下册 Module 3 Unit 3 Changes 公开课PPT课件12.ppt
文档评论(0)