图搜索策略

问题求解

  • 状态空间表示
  • 状态改变:算符和重写规则
  • 状态空间搜索方法

    • BF–Breadth First
      open表 close表
      open表是一个队列,close起记录的作用
    • DF–Depth First
      open表是一个栈
      深度限制
    • (和数据结构里学的一个不同是,数据结构中强调被访问过就不再访问,就没有找父节点判断是否是祖先的问题)
    • 等费用搜索
      BF的推广,在每一层的时候,选择队列中费用最小的路径扩展
      找到到目标节点G的最短路径–发展G的一个子节点时停止
    • 爬山法
      扩展open表中距离目标节点的结点(曼哈顿距离)
      连续问题上适合单峰函数的寻优,因为它强调每次的下一步都比当前这步要离目标节点更近(局部最优)。
    • 启发式搜索
      • 优先考虑最有希望的节点加以扩展
      • 考虑已经走过的路和距离目标节点的路的总的带价值
      • A*算法中注意事项:
          如果当前待加入的节点 ni 已经在open表中,则比较 f(ni) ,若新节点的比较小,则代替原来节点,改变指针方向
          如果当前待加入的节点 ni 已经在close表中,则比较,若新节点的比较小,则把该节点移回open表
          不注意这点会导致内存占用大(open表长)以及算法复杂度高。
  • 算法的性质

    • 完备性
    • 可采纳性
  • 影响A*算法搜索性能的因素
    • 扩展节点数目
    • h(n) 的计算量
算法举例:重排九宫

h(n)=P(n)+3S(n)

  • P(n) 是每一张牌距离其目标位置的距离的和
  • S(n) 是所有牌的分数之和。
    • 对于非中心位置的牌 i <script type="math/tex" id="MathJax-Element-5">i</script>,顺着一个方向检查,如果其后面的牌和目标状态中相应牌之间顺序不一致,则给分数2,否则给分数0
    • 中心有牌给分1,没牌给分0
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值