网站大量收购独家精品文档,联系QQ:2885784924

启发式算法在计算机程序搜索中简单应用.docVIP

启发式算法在计算机程序搜索中简单应用.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
启发式算法在计算机程序搜索中简单应用

启发式算法在计算机程序搜索中简单应用   摘 要:对于不能直接计算求解的问题,往往需要搜索算法在解空间中寻找最优解或更优解。为了高效地搜索,加入了启发式算法,让机器程序像人一样作出更优的决策。阐述了启发式算法中的作用原理,介绍了启发式算法与搜索的联系,讲解了启发式算法在计算机程序搜索中的简单应用的案例,对比分析了启发式算法与普通宽度优先搜索或深度优先搜索算法的优势与不足。   关键词:启发式算法,解空间,搜索,更优解,估价函数   0、引言 搜索是用计算机解决问题时常用的算法策略。但往往相对于要求的最优解或次优解而言,解空间很大。直接简单地运用搜索解决问题,往往会花费大量的时间,因为无用的搜索方向或问题状态相对目标解来说太多。在已知目标状态或如何衡量待求解的优劣时,利用减枝技巧可以避免搜索部分无用解空间,但是计算机搜索仍然会试探一些无用的解空间。启发式算法可以估计当前状态到目标状态的代价,从而作出好的策略,帮助机器像人一样聪明地向更优解目标方向搜索。   1、启发式算法的作用原理   启发式算法是根据机器计算当前状态到目标状态的所有可能性或所需花费,从中选出到达目标状态可能性最高的或者花费最少的下一步。就这样不断地计算概率花费,不断迭代优化更优解,进而得到更优解或者最优解。计算机程序可能并不会准确地计算出到达目标解的代价,但是可以利用数学计算进行估计。若要得估价接近实际花费,就得设计好评价函数。这也是启发性的关键。   2、启发式算法应用在搜索中   机械的搜索算法会浪费大量时间等计算机资源在无用状态转换上。若要让计算机程式像人拥有感觉作出合理的判断,就是给程序使用启发式算法了。让机器智能地搜索下一个状态。本科期间常见或用到的启发式算法有A*算法,遗传算法,蚁群算法,BP神经网络等。BP神经网络可用于仿真机器人学习上,在大学上机器人竞赛中常用。让机器人不断地学习,修改参数,作出更优的策略。A*算法可用于ACM大学生程序设计竞赛中,比较容易实现,常用于搜索。   3、启发式算法应用于搜索中的案例   3.1 计算机软件能力认证-游戏[3]   题目转述:在N行M列的棋盘上,计算玩家从左上角移动到右下角所需的最少时间,期间某些位置在一段连续时间不能移动到(危险)。详细描述请参照原题[3]。   分析:这是一道棋盘搜索题,求解最短时间。很容易想到宽度优先搜索,可以利用三维数组来表示棋盘状态(根据数组在内存中是线性存储的,所以也可以将三维数组转化为一维。但是内存消耗是一样的,所以没有必要转化。三维数组的维度分别表示位置横坐标,纵坐标,时间戳)。直接宽度优先搜索可以解决改问题,只是搜索了大量的无用的棋盘状态,效率不高。   虽然可以在该题时间限制内解决问题,但是若用了A*算法,加入启发式思想。从当前搜索过的状态中选择到目标状态的曼哈顿距离最小的位置状态开始搜索,因为玩家每秒都要移动,所以曼哈顿距离越小的状态到达目标的用时最少。在保证结果正确的前提下,提高了解决问题的效率。   给出估价函数:   从当前状态(x, y)到目标状态(m, n)的估价函数 h = abs(x - m) + abs(y - n),即??前位置到目标位置的曼哈顿距离。   初始状态到当前状态的实际代价:每移动一次,该代价g 加1。   初始状态经当前状态到达目标状态的估价:f = h + g。   实际测试用时比较:普通BFS[4]用时109ms, 启发式算法A*算法[5]用时62ms。可见启发式算法有方向地搜索比较省时。   具体算法实现见附解(参考文献)。北大测评系统1077也可用A*算法解答。   3.2 启发式算法在机器人中的应用   在大学生机器人竞赛中,在对机器人进行策略安排时,有的同学是把机器人场地进行划分,对每个机器人都设计一套策略。根据不同的局面状态,调整机器人的策略。总的来说就是判断判断再判断,根据判断作出反应。这样直接的判断状态的策略,机器人下一步该怎样做,设计者可以预测个大概。这并不能说是人工智能。机器人缺少随机应变的启发性决策。   西北工业大学的机器人配合得很好,很好地根据对手机器人的动作作出适当的改变。若不加入启发性算法、机器学习,很难得到好的策略。   利用BP神经网络,让机器人自主学习,不断地修改参数,做到更优。蚁群算法,模拟自然界中蚂蚁寻找食物,在路上留下信息素。信息素在一段时间内逐渐消散。其他蚂蚁可以根据信息素的分布情况作出相应的动作。可以运用到11V11机器人轮式足球比赛上面。   其他启发式算法,例如遗传算法等也常用到机器人策略编写上。   4、启发式搜索与普通宽度优先搜索的比较   启发式搜索每次有向着更接近目标解的状态搜索,避免了大量无效解空间的试探。如案例1测试结

文档评论(0)

bokegood + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档