- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
从人类的思维方式中寻找启示
——宏观~微观寻径算法(2)
遗留问题及其解决方案
在六月所发表的文章中我简单地概述了宏观-微观算法应用于游戏寻径的整个流程。并留下了一个关系到算法是否有效的问题:当一个分块本身并不连通的时候(从同一个分块上面的某一个非障碍物点到同一个分块上面另外一个非障碍物点不存在一条仅仅经过该分块的路径),算法会发生错误吗?如果发生错误,该如何解决?
下面我们先来回答第一个问题:会发生错误吗?我们观察下面的图片,按照上一篇所介绍测试两分块联通的方法,分块A和分块B是联通的(因为两个格子接壤的地方并没有障碍物)。这会导致什么问题呢?假设我们需要有哪些信誉好的足球投注网站图中s点到t点的路径。从宏观上来看(就是大的分块)是相通的,但从微观上看,实际它们之间并不存在路径。现在我们回想一下整个算法的流程,这样的话就导致宏观上有哪些信誉好的足球投注网站出的路径会因为这条路径经过一些本身不联通的格子而可能导致微观上有哪些信誉好的足球投注网站的时候无路可走,最终无法正确找出路径。我们不可能要求每一个格子自身是联通的,一旦存在不联通的格子,这个算法就存在潜在性的错误的可能。
那么我们能够解决这个问题吗?产生这个问题的原因是格子本身的不联通导致分块违反了设计这个算法的原则——同一个分块里面的点相互之间的距离是很短的。也就是说我们不能把同一个格子里面的点笼统地看作同一“类”。如果我们改变一下这个分类的基准,也许问题就迎刃而解了。再来看回之前提出的那个问题,如果我们把原来的分块A和B分成A1,A2,B1,B2四个分块或者说分成四类的话。A1和A2是不联通的,尽管A2和B1是联通的,但是从宏观上来看,A1跟B1还是不联通的,所以不存在从s到t的路径。同样道理,A1和B2,A2和B2之间都不存在路径的。这也符合实际的情况了。
那么我们的结论是什么呢?为了让大家逐步理解这个宏观-微观算法,在上一篇文章里面所用的分块方法是不严谨的。而严谨的分块方法应该是以格子的一个联通部分作为单位,而不一定是用整个格子作为分块单位。(当然,如果整个格子内部的点都联通,那么这个格子就是一个分块。分块小的时候,大部分情况下整个格子就是一个分块。)一些大的格子可能由很多个分块组成。如图1中红框1标示的格子有4个分块,图2中红框标示的格子有5个分块。(蓝色的是障碍)这种分块方式就符合了同一个分块里面的点之间的距离相对短的前提假设。使到算法不会出现致命错误。
分块方案示例1
分块方案示例2
那么我们接着就会有一个问题:我们如何得知一个格子里面有多少个分块呢?这就要用到广度优先有哪些信誉好的足球投注网站算法,(有些书上叫墨滴算法,我比较喜欢叫水波算法,因为算法演示的时候太像水波在扩散了。)通过这个算法,我们就可以从一个点出发,把所有与之联通的点找出来,从而把一个格子分成相互不联通的几个分块。接着延续上一篇文章所介绍的算法流程,分块后,测试所有分块之间的连通性(当然,同一个格子里面的分块之间的连通性不必测试。)最后同样得到一个表,但是这个表的基本单位不是格子而是一个格子里面相互不联通的一个个区域。至此,整个预处理过程结束。
因为分块的基本单位改变了,所以寻径的过程也要做相应的小改动——对某一点位置的判断要具体到哪个格子的哪个分块。通过这一系列的改进后,整个宏观-微观算法就可以无错地投入使用了。
算法的优点,缺点及其改进方向
首先要说明的是,我在这里进行算法比较的比较对象主要是广度优先有哪些信誉好的足球投注网站与及AStar等传统的寻径算法。而对于近年来研究得比较多的导航点法,分解矩形法等,由于只是表面上了解过,并没有用程序实现并测试过,所以只能下猜测性的结论。
算法的优点:
1,这个算法最大的优点就是快,节约CPU资源。在足够大的地图上,总寻径时间比AStar和广度优先算法等要快两个数量级以上。
2,这个算法另外一个大的特点就是可以把寻径开销“分期付款”。因为通过宏观有哪些信誉好的足球投注网站后,智能体就已经可以知道下一个要走的分块是哪一个,那么仅仅要有哪些信誉好的足球投注网站出在本分块里面的微观路径就可以,等到走到下一个分块,再有哪些信誉好的足球投注网站下一个分块里面的微观路径,这样有哪些信誉好的足球投注网站微观路径的时间就被分摊了!这使到过去即时战略游戏运行中的尴尬场景不会出现:没有大量单位同时寻径的时候游戏运行的很顺畅,一旦大量单位同时寻径的时候,游戏要卡住一段时间。这种分摊有效地解决了CPU运算峰值的问题。这个算法本身的总寻径时间就已经很短,加上这些时间可以分摊,迭加起来,这个算法要比传统算法快很多个数量级。
3,而且,分摊的不单单是有哪些信誉好的足球投注网站时间,还有储存整条路径的内存(把内存的需求分摊了,就相当于节约了大量内存),对于单位数目庞大的即时战略游戏来说,每一个智能体都要存储一条很长的路径的话,花费的内存是相当客观的,而在宏观-微观算法里面不需要存储整条路径,仅仅需要存储所在的微观分块里面的很短的一条路径,当走到下一个格子的时候再刷新这条路径就可以了。
文档评论(0)