A寻路初探.pdfVIP

  1. 1、本文档共9页,可阅读全部内容。
  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文档。上传文档
查看更多
A*寻路初探 A*寻路初探 GameD 作者: PatrickLester 译者:Panic2005年3月18日 译者序:很久以前就知道了A*算法,但是从未认真读过相关的文章,也没有看过代码,只是脑子里 有个模糊的概念。这次决定从头开始,研究一下这个被人推崇备至的简单方法,作为学习人工智能的 开始。 这篇文章非常知名,国内应该有不少人翻译过它,我没有查找,觉得翻译本身也是对自身英文水平的 锻炼。经过努力,终于完成了文档,也明白的A*算法的原理。毫无疑问,作者用形象的描述,简洁 诙谐的语言由浅入深的讲述了这一神奇的算法,相信每个读过的人都会对此有所认识(如果没有,那 就是偶的翻译太差了--b)。 现在是2005年7月19日的版本,应原作者要求,对文中的某些算法细节做了修改。 原文链接:http: /reference/articles/article2003.asp 原作者文章链接:http: /games/aStarTutorial.htm 以下是翻译的正文。 会者不难,A*(念作A星)算法对初学者来说的确有些难度。 这篇文章并不试图对这个话题作权威的陈述。取而代之的是,它只是描述算法的原理,使你可以在进 一步的阅读中理解其他相关的资料。 最后,这篇文章没有程序细节。你尽可以用任意的计算机程序语言实现它。如你所愿,我在文章的末 尾包含了一个指向例子程序的链接。 压缩包包括C++和BlitzBasic两个语言的版本,如果你只是 想看看它的运行效果,里面还包含了可执行文件。 我们正在提高自己。让我们从头开始。。。 假设有人想从A点移动到一墙之隔的 B点,如下图,绿色的是起点A,红色是 终点B,蓝色方块是中间的墙。 [图1] 你首先注意到,搜索区域被我们划分成了方形网格。像这样,简化搜索区域, 是寻路的第一步。这一方法把搜索区域简化成了一个二维数组。数组的每一个 元素是网格的一个方块,方块被标记为可通过的和不可通过的。路径被描述为 从A到B我们经过的方块的集合。一旦路径被找到,我们的人就从一个方格的 中心走向另一个,直到到达目的地。 这些中点被称为“节点”。当你阅读其他的寻路资料时,你将经常会看到人们讨 论节点。为什么不把他们描述为方格呢?因为有可能你的路径被分割成其他不 是方格的结构。他们完全可以是矩形,六角形,或者其他任意形状。节点能够 被放置在形状的任意位置-可以在中心,或者沿着边界,或其他什么地方。我 们使用这种系统,无论如何,因为它是最简单的。 开始搜索 正如我们处理上图网格的方法,一旦搜索区域被转化为容易处理的节点,下一 步就是去引导一次找到最短路径的搜索。在A*寻路算法中,我们通过从点A 开始,检查相邻方格的方式,向外扩展直到找到目标。 我们做如下操作开始搜索: 1,从点A开始,并且把它作为待处理点存入一个“开启列表”。开启列表就 像一张购物清单。尽管现在列表里只有一个元素,但以后就会多起来。你的路 径可能会通过它包含的方格,也可能不会。基本上,这是一个待检查方格的列 表。 2,寻找起点周围所有可到达或者可通过的方格,跳过有墙,水,或其他无 法通过地形的方格。也把他们加入开启列表。为所有这些方格保存点A作为“父 方格”。当我们想描述路径的时候,父方格的资料是十分重要的。后面会解释它 的具体用途。 3,从开启列表中删除点A,把它加入到一个“关闭列表”,列表中保存所有 不需要再次检查的方格。 在这一点,你应该形成如图的结构。在图中,暗绿色方格是你起始方格的中心。 它被用浅蓝色描边,以表示它被加入到关闭列表中了。所有的相邻格现在都在 开启列表中,它们被用浅绿色描边。每个方格都有一个灰色指针反指他们的父 方格,也就是开始的方格。 [图2] 接着,我们选择开启列表中的临近方格,大致重复前面的过程,如下。但是, 哪个方格是我们要选择的呢?是那个 F值最低的。 路径评分 选择路径中经过哪个方格的关键是下面这个等式: F=G+H 这里: *G= 从起点A,沿着产生的路径,移动到网格上指定方格的移动耗费。 *H= 从网格上那个方格移动到终点 B的预估移动耗费。这经常被称为启 发式的,可能会让你有点迷惑。这样叫的原因是因为它只是个猜测。我们没办 法事先知道路径的长度,因为路上可能存在各种障碍(墙,水,等等)。虽然本 文只提供了一种计算 H的方法,但是你可以在网上找到很多其他的方法。 我们的路径是通过反复遍历开启列表并且选择具有最低F值的方格来生成的。 文章将对这个过程做更详细的描述。首先,我们更深入的看看如何计算这个方 程。 正如上面所说,G表示沿路径从起点到当

文档评论(0)

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

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

1亿VIP精品文档

相关文档