- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第一单元搜索技术(上).ppt
第一单元 搜索技术 搜索技术是程序设计和求解算法中十分重要的一项技术。许多需要求解的问题是不能用公式推导、数学计算或者模拟等方法来找到答案的。这样的问题往往有一个庞大的问题状态空间,并且给出一些约束条件,要求寻找到解答空间的一个解。对于这样的问题,我们需要在状态空间中摸索,以某种方式或者顺序来试探不同的状态结点,使得尽可能快的寻找到目标结点,或者是从初始结点到目标结点的一个路径。 枚举算法 这是最简单,最直接的搜索方法。枚举方法的思路十分简单,就是列举问题的所有状态,从中进行比较,寻找到符合问题的解。 当然,枚举只能应用在一些状态结点比较少或者求解比较简单的问题上。 枚举算法 for i ? 问题的所有状态 { if 状态i 是问题的解 记录状态I } 广度优先搜索算法 广度优先搜索是从初始结点开始,应用算符生产第一层结点,同时检查目标结点是否在这些生成的结点中。若没有,再用算符将所有第一层的结点逐一扩展,得到第二层结点,并逐一检查第二层结点中是否包含目标结点。若没有,再用算符逐一扩展第二层的所有结点……,如此依次扩展,检查下去,直至发现目标结点为止。如果扩展完所有的结点,都没有发现目标结点,则问题无解。 广度优先搜索算法 在搜索过程中,广度优先搜索对于结点是沿着深度的断层扩展的。如果要扩展第n+1层的结点,必须先全部扩展完第n层的结点。那么,对于同一层结点来说,对于问题求解的价值是相同的。所以,这种搜索方法一定能保证找到最短的解序列。也就是说,第一个找到的目标结点,一定是应用算符最少的。因此,广度优先搜索算法比较适合求最少步骤或者最短解序列的题目。 广度优先搜索算法 广度优先搜索示例: 树 图 深度优先搜索算法 在深度优先搜索中,也是从初始结点开始扩展,但是扩展顺序却不同,深度优先搜索总是先扩展最新产生的结点。这就使得搜索沿着状态空间的某条单一的路径进行下去,直到最后的结点不能产生新结点或者找到目标结点为止。当搜索到不能产生新的结点的时候,就沿着结点产生顺序的反方向寻找可以产生新结点的结点,并扩展它,形成另一条搜索路径。 深度优先搜索算法 广度优先搜索中的结点是先产生的先扩展,而深度优先搜索中扩展结点的原则是先产生的后扩展,这是两种搜索方式的本质不同。因此,深度优先搜索第一个找到的解,并不一定是问题的最优解,要搜索完整个状态空间,才能确定哪个解是最优解。 深度优先搜索算法 深度优先搜索示例: 树 图 回溯算法 回溯算法实际上是深度优先搜索的一种改进,是更实用的一种搜索求解的方法。回溯算法与深度优先搜索算法的区别在于,在选取一个结点进行扩展时,深度优先搜索是将该结点的所有子结点全部扩展出来以后,再去考虑选取最新的一个结点进行扩展;而回溯算法是对于被扩展的结点,只扩展它所有子结点的其中一个,然后再以这个子结点去扩展下一个子结点,当某个结点不能在扩展出新的结点的时候,就删除这个结点,用其父结点来扩展新的结点。所以,在搜索的过程中,回溯算法的搜索路径是线性链状的。 * *
文档评论(0)