图搜索策略

问题求解

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

    • 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 ,顺着一个方向检查,如果其后面的牌和目标状态中相应牌之间顺序不一致,则给分数2,否则给分数0
    • 中心有牌给分1,没牌给分0

你可能感兴趣的:(人工智能,数据结构,搜索)