- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第3章 搜索的基本策略 3.1 盲目的搜索方法 盲目搜索方法又叫非启发式搜索,是一种无信息搜索,一般只适用于求解比较简单的问题。下面我们要讨论的几个搜索方法,它们均属于盲目搜索方法。 3.1.1 宽度优先搜索 如果搜索是以同层邻近节点依次扩展节点的, 那么这种搜索就叫宽度优先搜索,这种搜索是逐层进行的, 在对下一层的任一节点进行搜索之前,必须搜索完本层的所有节点。 3.1.1 宽度优先搜索 宽度优先搜索算法如下: 1. 令N为一个由初始状态构成的表; 2. 若N为空退出,标志失败; 3. 令n为N中第一个点,将n从N中删除; 4. 若n是目标,则退出,标态成功; 5. 若n不是目标,将n的后继点加入到N表的尾部,转2。 3.1.1 宽度优先搜索 宽度优先搜索的优点是:若问题有解,则可找出最优解; 宽度优先搜索的缺点是:效率低,组合爆炸问题难以解决。 3.1.2 深度优先搜索 在深度优先搜索中,我们首先扩展最新产生的(即最深的)节点。深度相等的节点可以任意排列。 3.1.2 深度优先搜索 深度优先搜索算法如下: 1. 令N为一个由初始状态构成的表; 2. 若N为空退出,标态失败; 3. 令n为N中第一个点,将n从N中删除; 4. 若n是目标,则退出,标态成功; 5. 若n不是目标,将n的后继加入到N表的首部转2。 3.1.2 深度优先搜索 深度优先搜索的优点:节省大量时间和空间; 深度优先搜索的缺点:不一定能找到解。因为在无限搜索树的情况下,最坏的情况可能是不停机。 3.1.3 分枝有界搜索(Branch-and-Bound) 分枝有界搜索也是一种深度优先搜索,但每个分支都规定了一个统一的搜索深度,搜索到这个深度后,如果没有找到目标便自动退回到上一层,继续搜索。 3.1.3 分枝有界搜索 1. 令N为一由初始状态构成的表; 2. 若N为空退出,标志失败; 3. 令n为N中第一个点,将n从N中删除; 4. 若n是目标,则退出,标态成功; 5. 若n深度=预先定好的一个界dmax,则转2; 6. 若n不是目标,将n的后继加入到N表的首部转2; 3.1.4 迭代加深搜索(Iterative deepening) 迭代加深搜索是在分枝有界搜索的基础上,对dmax进行迭代,即逐步加深。这是一种同时兼顾深度和广度的搜索方法。在限定的深度内,保证了对广度节点的搜索,如果没有找到解,再加深深度。 3.2 启发式搜索方法 如果能够找到一种方法用于排列待扩展节点的顺序,即选择最有希望的节点加以扩展,那么,搜索效率将会大大提高。启发式搜索就是基于这种想法,它是深度优先的改进。搜索时不是任取一个分枝,而是根据一些启发式信息,选择最佳一个分枝或几个分枝往下搜索。 3.2.1 启发式信息的表示 1.启发式搜索的依据 (1)人们善于利用一些线索来帮助自己选择搜索方向,这些线索统称为启发式(Heuristics)信息。 (2)现实问题往往只需一个解,而不要求最优解或全部解。 (3)启发式信息可以避免某些领域里的组合爆炸问题。 3.2.1 启发式信息的表示 启发信息按其形式可分为下列2种: (1)表示为估计函数 确定一个启发式函数f(n), n 为被搜索的节点,它把问题状态的描述映射成问题解决的程度,通常这种程度用数值来表示,就是启发式函数的值。这个值的大小用来决定最佳搜索路径。 3.2.1 启发式信息的表示 (2)表示成规则 如程序AM的一条启发式规则为: 如果存在一个有趣的二元函数f(x,y),那么看看两变元相同时会发生什么? 若f表示乘法:导致发现平方; 若f表示集合并运算:导致发现恒等函数; 若f表示思考:导致发现反省; 若f表示谋杀:导致发现自杀。 3.2.1 启发式信息的表示 2.启发式函数的表示方法 启发式函数是一种映射函数,它把对问题状态的描述映射成一种希望的程度。 启发式函数设计得好,对有效引导搜索过程有着重要的作用。非常简单的启发式函数搜索路径能够作出非常令人满意的估计。 3.2.1 启发式信息的表示 如何构造启发式函数? (1)启发式函数能够根据问题的当前状态,确定用于继续求解问题的信息。 这样的启发式函数能够有效地帮助决定那些后继节点应被产生。 3.2.1 启发式信息的表示 3.2.1 启发式信息的表示 各状态间的转换规则为: Pr1: 空格上移 ↑ If □i,j and i≠1 then ai-1,j ←→□i,j ? Pr2: 空格下移 ↓ If □i,j and i≠3 then aI+1,j ←→□i,j 3.
原创力文档


文档评论(0)