从人类的思维方式中寻找启示:宏观——微观寻径算法(二).docVIP

从人类的思维方式中寻找启示:宏观——微观寻径算法(二).doc

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

从人类的思维方式中寻找启示:宏观——微观寻径算法(二) 一TECHZONE技道馆 口口口口口口 ●●●从人类的思维方式中寻找启示 宏观 文/华南理工大学张颖鹏 微观寻径算法 遗留问题及其解决方案 在六月《游戏创造》发表的文章中,笔者简单地概述 了”宏观——微观算法”应用于游戏寻径的整个流程,并 留下了…个关系到算法是否有效的问题:当一个分块本身 并不连通的时候(从同一个分块上面的某一个非障碍物点 到同一个分块上面另外一个非障碍物点不存在一条仅仅经 过该分块的路径),算法会发生错误吗?如果发生错误,该 如何解决? 下面我们先来回答第一个问题:会发生错误吗?我们 观察下面的图片,按照上一篇所介绍测试两分块联通的方 法,分块A和分块B是联通的(因为两个格子接壤的地方并 没有障碍物)这会导致什么问题呢?假设我们需要搜索图 中s点到t点的路径.从宏观上来看(就是大的分块)是相 通的,但从微观上看,实际它们之间并不存在路径现在我 们回想一下整个算法的流程,这样的的情况在宏观上搜索 出的路径会因为这条路径经过一些本身不联通的格子而可 能导致微观上搜索的时候无路可走,最终无法正确找出路 . . . ‘ : 一 __l… _.lll】’-一. l_lll_|_ -, :. 68游髓创造2006年12月号 ■●一 ●●■_ 径.我们不可能要求每一个格子自身是联通的,一旦存在不 联通的格子,这个算法就存在潜在性的错误可能. 那么我们能够解决这个问题吗?产生这个问题的原因 是格子本身的不联通导致分块违反了设计这个算法的原则 一一 周一个分块里面的点相互之间的距离是很短的.也就 是说我们不能把同一个格子里面的点笼统地看作同一”类”. 如果改变一下这个分类的基准,也许问题就迎刃而解了. 再来看回之前提出的那个问题,如果我们把原来的分 块A和B分成A1,A2,BI,B2四个分块或者说分成四类的 话.A1和A2是不联通的,尽管A2和B1是联通的,但是从 宏观上来看,AI跟B1还是不联通的,所以不存在从s到t的 路径.同样道理,Al和P,2,A2和B2之间也都不存在路径. 这样就符合实际的情况了. 那么我们的结论是什么呢?为了让大家逐步理解这个 宏观——微观算法,在上一篇文章里面所用的分块方法是不 严谨的.而严谨的分块方法应该是以格子的一个联通部分 作为单位,而不一定是用整个格子作为分块单位.(当然,如 果整个格子内部的点都联通,那么这个格子就是一个分块 分块小的时候,大部分情况下整个格子就是一个分块.)一 些大的格子可能由很多个分块组成.如图o3中红框标示的 格子有4个分块,图O4中红框标示的格子有5个分块(蓝色 的是障碍).这种分块方式就符合同一个分块里面的点之 间的距离相对短的前提假设,让算法不会Hj现致命错误. 那么接着就会出现另一个问题:我l’I]~tn何得知一个格 子里面有多少个分块呢?这就要用到广度优先搜索算法, (有些书上叫”墨滴算法”,笔者比较喜欢称其为”水波算 法”,因为算法演示的时候太像水波往扩散了.)通过这个算 法,我们就可以从一个点出发,把所有与之联通的点找出 来,从而把一个格子分成相互联通的几个分块.接着延续 上一篇文章所介绍的算法流程,分块后,测试所有分块之间 的连通性(当然,同一个格了里面的分块之间的连通性不必 测试)最后同样得到一个表,但是这个表的基本单位不是 格子而是一个格子里面相互不联通的一个个区域.至此,整 个预处理过程结束. 为分块的基本单位改变了,所以寻径的过程也要做 相应的小改动一~对某一点位置的判断要具体到哪个格子 TECHZONE技道馆一 的哪个分块.通过这一系列的改进后,整个宏观一微观算法 就可以无错地投人使用了. 算法的优点,缺点及其改进方向 首先要说明的是,笔者在这里进行算法比较的对象主 要是广度优先搜索与及AStar等传统的寻径算法.而对于近 年来研究得比较多的导航点法,分解矩形法等,由于只是表 面__卜了解过,井没有用程序实现并测试过,所以只能得到猜 测性的结论. 算法的优点 1.这个算法最大的优点就是快,节约CPU资源.在足 够大的地图上,总寻径时间比AStar和广度优先算法等要快 两个数量级以上. 2.这个算法另外一个特点就是可以把寻径开销”分期 付款”因为通过宏观搜索后,智能体就已经可以知道下一 个要走的分块是哪?个,那么仅仅搜索出在本分块里面的 微观路径就可以了,等到走到下一个分块,再搜索一个分 块里面的微观路径,这样搜索微观路径的时间就被分摊了. 这使得过去即时战略游戏运行中的尴尬场景不会出现:没 有大量单位同时寻径的时候游戏运行得很顺畅,一旦大量 单位同时寻径的时候,游戏要.住一段时间.这种分摊有效 地解决了CPU运算峰值的问题.这个算法本身的总寻径时 间就已经很短,加上这些时间可以分摊,

文档评论(0)

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

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

1亿VIP精品文档

相关文档