书签 分享 收藏 举报 版权申诉 / 14

改进的启发式A算法.pdf

  • 上传人:bo****18
  • 文档编号:6142951
  • 上传时间:2019-04-18
  • 格式:PDF
  • 页数:14
  • 大小:852.37KB
  • 摘要
    申请专利号:

    CN201410210514.X

    申请日:

    2014.05.19

    公开号:

    CN103971008A

    公开日:

    2014.08.06

    当前法律状态:

    撤回

    有效性:

    无权

    法律详情:

    发明专利申请公布后的视为撤回IPC(主分类):G06F 19/00申请公布日:20140806|||实质审查的生效 IPC(主分类):G06F 19/00申请日:20140519|||公开

    IPC分类号:

    G06F19/00(2011.01)I

    主分类号:

    G06F19/00

    申请人:

    浪潮电子信息产业股份有限公司

    发明人:

    史宏志

    地址:

    250014 山东省济南市高新区舜雅路1036号

    优先权:

    专利代理机构:

    济南信达专利事务所有限公司 37100

    代理人:

    姜明

    PDF完整版下载: PDF下载
    内容摘要

    本发明提供一种改进的启发式A*算法,优化了搜索运动的方向个数为四个,使用街区距离作为估价函数,提高了计算的速度和简易性。改进了OPEN表中排序算法,牺牲一部分性能换来整体改进形成的优势。此外通过使用改进的估价函数,且满足单调性的需求,虽然不能完全抛弃链表的数据结构,但因为无需对OPEN表和CLOSED表进行修改,所以可以使用二维数组进行标记以供算法查询节点是否已然被拓展使用,从而显著提高速度性能。

    权利要求书

    权利要求书
    1.  改进的启发式A*算法,其特征在于包括:
    (1)只允许四个基本方向的运动,即上下左右;
    (2)采用街区距离作为估价函数;
    (3)对OPEN表中的节点先按大小进行升序排序,相等时,按升序排序;
    (4)因为估价函数满足单调性,所以节点在进入CLOSED表后不会再次被选为后继,可以采用二维数组进行标记以供算法查询节点是否已然被扩展使用,从而显著提高速度性能;
    (5)由于(3)中排序方案,可以证明,已经被加入到OPEN表中的节点不可能通过其他节点而得到更加小的值,从而不存在修改OPEN表中节点信息的问题,因此可以用(4)中的二维数组进行标记。

    2.  根据权利要求1所述的方法,其特征在于因为算法只允许四个基本方向的运动,从而,整个迷宫可以看作一个二部图,而二部图中所有的回路长度均为偶数。

    3.  根据权利要求1所述的方法,其特征在于迷宫寻径系统可以分为三个子系统,分别为绘制地图子系统、迷宫寻径子系统已经数据显示子系统,而所要实现的功能就可以被划分到三个子系统当中。

    说明书

    说明书改进的启发式A*算法
    技术领域
    本发明涉及计算机游戏中NPC(Non-Player Character)行为的智能化和辅助计算能力,具体涉及一种改进的启发式A*算法,游戏中对大地图自动寻径和搜索算,二维甚至三维地图的设计。
    背景技术
    随着计算机软硬件技术的不断发展,电脑游戏行业不断发展,受众人群急剧增加,俨然已经成为计算机技术应用的中心领域。与此同时,人们对游戏中NPC(Non-Player Character)行为的智能化程度以及其中的辅助计算能力提出了越来越多的要求。而其中,由于地图的面积大以及环境中影响因素等原因,地图寻径问题解决的往往不尽人意。
    同时,搜索也是人工智能的一个基本问题,是推理不可分割的一部分。A*算法是一种典型的启发式搜索算法,在国内外都被广泛应用到游戏中解决地图寻径问题。然而传统的A*算法应用于具体问题时,通常由于问题的限制等,需要改进和优化。
    鉴于传统A*算法的一系列不足:
    1) 空间需求太大,OPEN和CLOSED表会随着搜索空间的扩大而越来越大直至不能满足空间需求,搜索时间会极大延长;
    2) 当问题不存在解时,A*算法会穷举所有可能;
    3) 对于不满足单调性的A*算法来说,已经进入CLOSED表中状态节点可能会被多次移出。
    自从A*算法被提出以来,其简洁有效的特性吸引了众多研究者的兴趣,而传统A*算法可以认为是普适的,对于具体问题的解决就显得有些不尽完美,因此针对A*算法不同方面以及面对具体问题人们提出了很多改进算法的方案。
    发明内容
    本发明对传统A*算法的改进策略,并从理论上证明了所做改进的优越性。为了更好地利用迷宫问题本身的特性,本发明对A*算法做了如下的改进。
    (1) 只允许四个基本方向的运动,即上下左右。如表3.1所表明的,对于八向运动而言,除了最终的路径长度会由于允许斜向运动而有理所当然的减少外,性能不能得到任何提高,甚至可能带来性能的降低。而这种路径长度的减少也是可以在最后对四向路径进行简单处理近似得到——这只需遍历一遍路径。而且,仅仅使用四个基本方向的话,有利于此后的改进。
    表1八向与四向运动的性能对比

    (2) 采用街区距离作为估价函数。因为不允许斜向运动,所以欧氏距离就不再试用,而且,街区距离计算更为简便,速度更快。且显然此时的估价函数是满足单调性的。
    (3) 对OPEN表中的节点先按 大小进行升序排序, 相等时,按 升序排序。这虽然会有一定的性能损失,但不会掩盖整个改进所形成的优势。
    (4) 因为估价函数满足单调性,所以节点在进入CLOSED表后不会再次被选为后继,虽然这不会使算法完全摒弃使用链表的方式来维持CLOSED表,但因为无需对CLOSED表进行修改,所以可以采用二维数组进行标记以供算法查询节点是否已然被扩展使用,而这种查询方式显然速度更为快捷。
    (5) 由于(3)中排序方案,可以证明,已经被加入到OPEN表中的节点不可能通过其他节点而得到更加小的 值,从而不存在修改OPEN表中节点信息的问题,因此可以用(4)中的二维数组进行标记,达到更高的性能。
    证明:
    a) 因为算法只允许四个基本方向的运动,从而,整个迷宫可以看作一个二部图,而二部图中所有的回路长度均为偶数。即若从初始节点到迷宫中某一图元存在多于一条路径,则这些路径中任意两条的长度差的绝对值必然为偶数。
    b) 设OPEN表中有一节点 ,其父节点为 ,且通过另一邻接点 使得的 值减小。则由于节点的 不会改变,所以必然有
    (3-3)
    又 在 之后被选作扩展节点,有
    (3-4)
    i) 当 时,由于式(3-5),所以 在 之前被扩展,矛盾。
    ii) 当 时,由a)可知
    (3-5)
    从而
    (3-6)
    因为算法采用街区距离作为估价函数,所以有
    (3-7)
    (3-8)
    其中 为取绝对值运算, 为取x坐标运算, 为取y坐标运算。
    (3-9)
    又 和 都与 相邻,即 到 的距离为2,从而

    (3-10)
    与(3-4)式矛盾。
    本发明的有益效果是:
    本发明针对传统A*算法的上述缺点进行了改进,优化了搜索运动的方向个数为四个,使用街区距离作为估价函数,提高了计算的速度和简易性。改进了OPEN表中排序算法,牺牲一部分性能换来整体改进形成的优势。此外通过使用改进的估价函数,且满足单调性的需求,虽然不能完全抛弃链表的数据结构,但因为无需对OPEN表和CLOSED表进行修改,所以可以使用二维数组进行标记以供算法查询节点是否已然被拓展使用,从而显著提高速度性能。
    附图说明
    附图1为功能分解图;
    附图2为统界面图;
    附图3为起点和终点较远的普通迷宫地图;
    附图4为起点和终点较近的普通迷宫地图;
    附图5为基本没有障碍的迷宫地图;
    附图6为无解迷宫地图;
    附图7为本发明寻径结果图;
    附图8为本发明迷宫无解的效果图。
    具体实施方式
    迷宫寻径系统设计:
    整个系统可以分为三个子系统,分别为绘制地图子系统、迷宫寻径子系统已经数据显示子系统,而所要实现的功能就可以被划分到三个子系统当中。最终的功能分解图如图1所示。
    主窗体模块中,如图2所示, 系统内部使用二维数组来表示地图。
    寻径算法:
    改进的A*算法
    使用的数据结构
    A*算法所使用的两个数据结构
    int map[MAP_HEIGHT][MAP_WIDTH]; //用于标记节点,IN_CLOSED表示已被加入CLOSED表中,IN_OPEN表示已被加入OPEN表中
    算法描述:
    (1) 初始化OPEN表和CLOSED表,初始化二维数组map为全0,把起点 放到OPEN表中,并计算 ,标记map的该坐标位置元素为IN_OPEN。
    (2) 如果OPEN表为空,则失败退出,问题无解。
    (3) 从OPEN表中把表首元素 删除,并加入到CLOSED中,标记二维数组map的该节点坐标元素为IN_CLOSED。
    (4) 若 为目标则成功退出。
    (5) 扩展 ,生成全部后继节点,对每个后继节点 作如下处理:
    a) 若 在CLOSED表或OPEN表中(即二维数组map的该坐标位置不为0),不作处理,转6);
    b) 计算 ;
    c) 先按 升序,如果 相等再按 升序将节点 加入到OPEN表,并使其父辈指向 ,标记二维数组map的该节点坐标元素为IN_OPEN;
    (6) 转(2)。
    地图种类可以分为四种,分别代表一个类型,其中第一种为起点和终点相隔较远的普通迷宫(如图3),第二种为起点和终点相隔较近的普通迷宫(如图4),第三种为基本没有障碍的迷宫(如图5),第四种为无解迷宫(如图6)。分别给出了,第一种和第四种比较有代表性地图的搜索结果(如图7和图8)。

    关 键  词:
    改进 启发式 算法
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:改进的启发式A算法.pdf
    链接地址:https://www.zhuanlichaxun.net/p-6142951.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1