《改进的启发式A算法.pdf》由会员分享,可在线阅读,更多相关《改进的启发式A算法.pdf(14页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103971008 A (43)申请公布日 2014.08.06 CN 103971008 A (21)申请号 201410210514.X (22)申请日 2014.05.19 G06F 19/00(2011.01) (71)申请人 浪潮电子信息产业股份有限公司 地址 250014 山东省济南市高新区舜雅路 1036 号 (72)发明人 史宏志 (74)专利代理机构 济南信达专利事务所有限公 司 37100 代理人 姜明 (54) 发明名称 改进的启发式 A* 算法 (57) 摘要 本发明提供一种改进的启发式 A* 算法, 优化 了搜索运动的方向个数为四个, 使用街。
2、区距离作 为估价函数, 提高了计算的速度和简易性。 改进了 OPEN 表中排序算法, 牺牲一部分性能换来整体改 进形成的优势。 此外通过使用改进的估价函数, 且 满足单调性的需求, 虽然不能完全抛弃链表的数 据结构, 但因为无需对OPEN表和CLOSED表进行修 改, 所以可以使用二维数组进行标记以供算法查 询节点是否已然被拓展使用, 从而显著提高速度 性能。 (51)Int.Cl. 权利要求书 1 页 说明书 4 页 附图 8 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书1页 说明书4页 附图8页 (10)申请公布号 CN 103971008 A CN 1039。
3、71008 A 1/1 页 2 1. 改进的启发式 A* 算法, 其特征在于包括 : (1) 只允许四个基本方向的运动, 即上下左右 ; (2) 采用街区距离作为估价函数 ; (3) 对 OPEN 表中的节点先按大小进行升序排序, 相等时, 按升序排序 ; (4) 因为估价函数满足单调性, 所以节点在进入 CLOSED 表后不会再次被选为后继, 可 以采用二维数组进行标记以供算法查询节点是否已然被扩展使用, 从而显著提高速度性 能 ; (5) 由于 (3) 中排序方案, 可以证明, 已经被加入到 OPEN 表中的节点不可能通过其他节 点而得到更加小的值, 从而不存在修改 OPEN 表中节点信息。
4、的问题, 因此可以用 (4) 中的二 维数组进行标记。 2. 根据权利要求 1 所述的方法, 其特征在于因为算法只允许四个基本方向的运动, 从 而, 整个迷宫可以看作一个二部图, 而二部图中所有的回路长度均为偶数。 3. 根据权利要求 1 所述的方法, 其特征在于迷宫寻径系统可以分为三个子系统, 分别 为绘制地图子系统、 迷宫寻径子系统已经数据显示子系统, 而所要实现的功能就可以被划 分到三个子系统当中。 权 利 要 求 书 CN 103971008 A 2 1/4 页 3 改进的启发式 A* 算法 0001 技术领域 0002 本发明涉及计算机游戏中 NPC(Non-Player Chara。
5、cter) 行为的智能化和辅助计 算能力, 具体涉及一种改进的启发式 A* 算法, 游戏中对大地图自动寻径和搜索算, 二维甚 至三维地图的设计。 背景技术 0003 随着计算机软硬件技术的不断发展, 电脑游戏行业不断发展, 受众人群急剧增加, 俨然已经成为计算机技术应用的中心领域。与此同时, 人们对游戏中 NPC(Non-Player Character) 行为的智能化程度以及其中的辅助计算能力提出了越来越多的要求。而其中, 由于地图的面积大以及环境中影响因素等原因, 地图寻径问题解决的往往不尽人意。 0004 同时, 搜索也是人工智能的一个基本问题, 是推理不可分割的一部分。 A*算法是一 。
6、种典型的启发式搜索算法, 在国内外都被广泛应用到游戏中解决地图寻径问题。然而传统 的 A* 算法应用于具体问题时, 通常由于问题的限制等, 需要改进和优化。 0005 鉴于传统 A* 算法的一系列不足 : 1) 空间需求太大, OPEN 和 CLOSED 表会随着搜索空间的扩大而越来越大直至不能满足 空间需求, 搜索时间会极大延长 ; 2) 当问题不存在解时, A* 算法会穷举所有可能 ; 3) 对于不满足单调性的 A* 算法来说, 已经进入 CLOSED 表中状态节点可能会被多次移 出。 0006 自从 A* 算法被提出以来, 其简洁有效的特性吸引了众多研究者的兴趣, 而传统 A* 算法可以。
7、认为是普适的, 对于具体问题的解决就显得有些不尽完美, 因此针对 A* 算法不同 方面以及面对具体问题人们提出了很多改进算法的方案。 发明内容 0007 本发明对传统 A* 算法的改进策略, 并从理论上证明了所做改进的优越性。为了更 好地利用迷宫问题本身的特性, 本发明对 A* 算法做了如下的改进。 0008 (1) 只允许四个基本方向的运动, 即上下左右。如表 3.1 所表明的, 对于八向运动 而言, 除了最终的路径长度会由于允许斜向运动而有理所当然的减少外, 性能不能得到任 何提高, 甚至可能带来性能的降低。而这种路径长度的减少也是可以在最后对四向路径进 行简单处理近似得到这只需遍历一遍路。
8、径。 而且, 仅仅使用四个基本方向的话, 有利于 此后的改进。 0009 表 1 八向与四向运动的性能对比 说 明 书 CN 103971008 A 3 2/4 页 4 (2) 采用街区距离作为估价函数。 因为不允许斜向运动, 所以欧氏距离就不再试用, 而 且, 街区距离计算更为简便, 速度更快。且显然此时的估价函数是满足单调性的。 0010 (3) 对 OPEN 表中的节点先按 大小进行升序排序, 相等时, 按 升序排序。这虽然 会有一定的性能损失, 但不会掩盖整个改进所形成的优势。 0011 (4) 因为估价函数满足单调性, 所以节点在进入 CLOSED 表后不会再次被选为后 继, 虽然这。
9、不会使算法完全摒弃使用链表的方式来维持CLOSED表, 但因为无需对CLOSED表 进行修改, 所以可以采用二维数组进行标记以供算法查询节点是否已然被扩展使用, 而这 种查询方式显然速度更为快捷。 0012 (5) 由于 (3) 中排序方案, 可以证明, 已经被加入到 OPEN 表中的节点不可能通过 其他节点而得到更加小的 值, 从而不存在修改 OPEN 表中节点信息的问题, 因此可以用 (4) 中的二维数组进行标记, 达到更高的性能。 0013 证明 : a) 因为算法只允许四个基本方向的运动, 从而, 整个迷宫可以看作一个二部图, 而二部 图中所有的回路长度均为偶数。即若从初始节点到迷宫中。
10、某一图元存在多于一条路径, 则 这些路径中任意两条的长度差的绝对值必然为偶数。 0014 b) 设 OPEN 表中有一节点, 其父节点为, 且通过另一邻接点使得的 值减小。则由于节点 的不会改变, 所以必然有 (3-3) 又在之后被选作扩展节点, 有 (3-4) i) 当时, 由于式 (3-5) , 所以在之前被扩展, 矛盾。 说 明 书 CN 103971008 A 4 3/4 页 5 0015 ii) 当时, 由 a) 可知 (3-5) 从而 (3-6) 因为算法采用街区距离作为估价函数, 所以有 (3-7) (3-8) 其中为取绝对值运算,为取 x 坐标运算,为取 y 坐标运算。 001。
11、6 (3-9) 又和都与相邻, 即到的距离为 2, 从而 (3-10) 与 (3-4) 式矛盾。 0017 本发明的有益效果是 : 本发明针对传统 A* 算法的上述缺点进行了改进, 优化了搜索运动的方向个数为四个, 使用街区距离作为估价函数, 提高了计算的速度和简易性。改进了 OPEN 表中排序算法, 牺 牲一部分性能换来整体改进形成的优势。此外通过使用改进的估价函数, 且满足单调性的 需求, 虽然不能完全抛弃链表的数据结构, 但因为无需对 OPEN 表和 CLOSED 表进行修改, 所 以可以使用二维数组进行标记以供算法查询节点是否已然被拓展使用, 从而显著提高速度 性能。 附图说明 001。
12、8 附图 1 为功能分解图 ; 附图 2 为统界面图 ; 附图 3 为起点和终点较远的普通迷宫地图 ; 附图 4 为起点和终点较近的普通迷宫地图 ; 附图 5 为基本没有障碍的迷宫地图 ; 附图 6 为无解迷宫地图 ; 附图 7 为本发明寻径结果图 ; 附图 8 为本发明迷宫无解的效果图。 具体实施方式 0019 迷宫寻径系统设计 : 整个系统可以分为三个子系统, 分别为绘制地图子系统、 迷宫寻径子系统已经数据显 说 明 书 CN 103971008 A 5 4/4 页 6 示子系统, 而所要实现的功能就可以被划分到三个子系统当中。最终的功能分解图如图 1 所示。 0020 主窗体模块中, 如。
13、图 2 所示 , 系统内部使用二维数组来表示地图。 0021 寻径算法 : 改进的 A* 算法 使用的数据结构 A* 算法所使用的两个数据结构 int mapMAP_HEIGHTMAP_WIDTH ; / 用于标记节点, IN_CLOSED 表示已被加入 CLOSED 表中, IN_OPEN 表示已被加入 OPEN 表中 算法描述 : (1) 初始化 OPEN 表和 CLOSED 表, 初始化二维数组 map 为全 0, 把起点放到 OPEN 表 中, 并计算, 标记 map 的该坐标位置元素为 IN_OPEN。 0022 (2) 如果 OPEN 表为空, 则失败退出, 问题无解。 0023 。
14、(3) 从 OPEN 表中把表首元素 删除, 并加入到 CLOSED 中, 标记二维数组 map 的该 节点坐标元素为 IN_CLOSED。 0024 (4) 若 为目标则成功退出。 0025 (5) 扩展 , 生成全部后继节点, 对每个后继节点作如下处理 : a) 若在 CLOSED 表或 OPEN 表中 (即二维数组 map 的该坐标位置不为 0) , 不作处理, 转 6) ; b) 计算; c) 先按升序, 如果相等再按升序将节点加入到 OPEN 表, 并使其父辈指向 , 标记二维数组 map 的该节点坐标元素为 IN_OPEN ; (6) 转 (2) 。 0026 地图种类可以分为四种。
15、, 分别代表一个类型, 其中第一种为起点和终点相隔较远 的普通迷宫 (如图 3) , 第二种为起点和终点相隔较近的普通迷宫 (如图 4) , 第三种为基本没 有障碍的迷宫 (如图 5) , 第四种为无解迷宫 (如图 6) 。分别给出了, 第一种和第四种比较有 代表性地图的搜索结果 (如图 7 和图 8) 。 说 明 书 CN 103971008 A 6 1/8 页 7 图 1 说 明 书 附 图 CN 103971008 A 7 2/8 页 8 图 2 说 明 书 附 图 CN 103971008 A 8 3/8 页 9 图 3 说 明 书 附 图 CN 103971008 A 9 4/8 页 10 图 4 说 明 书 附 图 CN 103971008 A 10 5/8 页 11 图 5 说 明 书 附 图 CN 103971008 A 11 6/8 页 12 图 6 说 明 书 附 图 CN 103971008 A 12 7/8 页 13 图 7 说 明 书 附 图 CN 103971008 A 13 8/8 页 14 图 8 说 明 书 附 图 CN 103971008 A 14 。