A算法和A*算法详解

字太多了 直接放笔记的图片吧,如有不对请指正

A算法和A*算法都适用
1、用初始节点初始化搜索图G (动态变化),将初始节点放入open表(还没有扩展的节点)中,然后初试closed(已经扩展完成的节点)表赋空NULL
2、如果open表不为空进入循环
    2.1 将open表中的第一个元素的指针赋给临时变量n表示当前遍历的节点,然后将当前节点n的指针假如到closed表表示扩展完成
    2.2 如果当前节点n是目标节点,任务完成 结束算法
    2.3 扩展当前节点n
        使用临时集合M存储n后面的若干个(≥1)子节点m,且m不可以是n的祖先
        将解图G并上M,表示前一轮循环定义的解空间+当前节点所能得到的可能的后续节点
    2.4 判断M中的节点m,
        如果m不属于closed也不属于open则建立m——>n的指针,并将m节点加入到open表中
        如果m属于open,则考虑是否修改m的指针,看n节点下m的f(n)和open表中m节点f(n)的大小
        如果m属于closed,则考虑是否修改m以及G中后裔的指针
    2.5 重新排列open表中的节点(根据估价函数)
下面是例子

图上面边和点的值在最后一张图有解释

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值