- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
第4章高级搜索4.1爬山法搜索 4.2模拟退火搜索 4.3遗传算法 搜索算法在内存中保留一条或多条路径并且记录哪些是已经探索过的,哪些是还没有探索过的。当找到目标时,到达目标的路径同时也构成了这个问题的一个解。在许多问题中,问题的解与到达目标的路径是无关的。例如,在八皇后问题中,重要的是最终皇后的布局,而不是加入皇后的次序。局部搜索算法从单独的一个当前状态出发,通常只移动到与之相邻的状态。典型情况下,搜索的路径是不保留的。优点:(1)它们只用很少的内存(2)它们通常能在很大状态空间中找到合理的解地形图既有“位置”(用状态定义),又有“高度”(由启发式耗散函数或目标函数的值定义)。如果高度对应于耗散,那么目标是找到最低谷——即一个全局最小值;如果高度对应于目标函数,那么目标是找到最高峰——即一个全局最大值。局部搜索算法就象对地形图的探索,如果存在解,那么完备的局部搜索算法总能找到解;最优的局部搜索算法总能找到全局最小值/最大值。4.1爬山法搜索
爬山法搜索——局部搜索登高——一直向值增加的方向持续移动,将会在到达一个“峰顶”时终止,并且在相邻状态中没有比它更高的值。这个算法不维护搜索树,因此当前节点的数据结构只需要记录当前状态和它的目标函数值。爬山法不会预测与当前状态不直接相邻的那些状态的值。八皇后问题。局部搜索算法通常使用完全状态形式化,即每个状态都表示为在棋盘上放八个皇后,每列一个。后继函数返回的是移动一个皇后到和它同一列的另一个方格中的所有可能的状态(因此每个状态有8×7:56个后继)。启发式耗散函数h是可以彼此攻击的皇后对的数量,不管中间是否有障碍。该函数的全局最小值是0,仅在找到完美解时才能得到这个值。图4.1(a)显示了一个h=17的状态。图中还显示了它的所有后继的值,最好的后继是h=12。爬山法算法通常在最佳后继的集合中随机选择一个进行扩展,如果这样的后继多于一个的话。图4.1(a)(b)
(1)局部极大值:(2)山脊:山脊造成的是一系列的局部极大值,贪婪算法处理这种情况是很难的。(3)高原:在各种情况下,爬山法算法都会达到无法取得进展的状态。从一个随机生成的八皇后问题的状态开始,最陡上升的爬山法86%的情况下会被卡住,只有14%的问题实例能求解。这个算法速度很快,成功找到最优解的平均步数是4步,被卡住的平均步数是3步——对于包含88个状态的状空间,这已经是不错的结果了。前述算法中,如果到达一个高原,最佳后继的状态值和当前状态值相等时将会停止。如果高原其实是山肩,继续前进——即侧向移动通常是一种好方法。注意,如果在没有上山移动的情况下总是允许侧向移动,那么当到达一个平坦的局部极大值而不是山肩的时候,算法会陷入无限循环。一种常规的解决办法是设置允许连续侧向移动的次数限制。如,在八皇后问题中允许最多连续侧向移动100次。这使问题实例的解决率从14%提高到了94%。成功的代价是:算法对于每个成功搜索实例的平均步数为大约21步,每个失败实例的平均步数为大约64步。针对爬山法的不足,有许多变化的形式。如,随机爬山法,它在上山移动中随机地选择下一步;选择的概率随看上山移动的陡峭程度而变化。这种算法通常比最陡上升算法的收敛速度慢不少,但是在某些状态空间地形图上能找到更好的解。再如,首选爬山法,它在实现随机爬山法的基础上,采用的方式是随机地生成后继节点直到生成一个优于当前节点的后继。这个算法在有很多后继节点的情况下有很好的效果。爬山法算法是不完备的——它们经常会在目标存在的情况下因为被局部极大值卡住而找不到该目标。随机重新开始的爬山法,它通过随机生成的初始状态来进行一系列的爬山法搜索,找到目标时停止搜索。这个算法是完备的概率接近于1,原因是它最终会生成一个目标状态作为初始状态。如果每次爬山法搜索成功的概率为p,那么需要重新开始搜索的期望次数为1/p。对于不允许侧向移动的八皇后问题实例,p≈0.14,因此大概需要7次迭代就能找到目标(6次失败1次成功)。所需步数的期望值为一次成功迭代的搜索步数加上失败的搜索步数与(1-p)/p的乘积,大约是22步。如果允许侧向移动,则平均需要迭代约1/0.94≈1.06次,平均步数为(1×21)+(0.06/0.94)×64≈25步。那么对于八皇后问题,随机重新开始的爬山法实
文档评论(0)