展会信息港展会大全

人工智能搜索算法
来源:互联网   发布日期:2011-08-21 16:41:17   浏览:7526次  

导读:人工智能搜索算法_岁乐无痕_新浪博客,岁乐无痕,...

哈工大计算机科学与工程系的骆吉洲老师的《算法导论》PPT写得很不错,摘录如下

Hill Climbing算法
   1. 构造由根组成的单元素栈S;
   2.  If Top(S)是目标节点  Then  停止;
   3.  Pop(S);
   4.  S的子节点按照其启发测度由大到小的顺序压入S; 
   5.  If  S空  Then  失败  Else  goto 2.

Best-First Search算法
  1. 使用评价函数构造一个堆H, 首先构造由根组成的单元素堆;
  2.  If H 的根 r 是目标节点Then停止;
  3.  从 H 中删除 r, 把 r 的子节点插入H;
  4.  If H 空 Then 失败 Else goto 2.

BBS(分支界限策略)的原理
  一边搜索一边记录以前搜索过的最大(最小)界,以及时剪除不必要的搜索
  产生分支的机制(使用前面的任意一种策略)
  产生一个界限(可以通过发现可能解)
  进行分支界限搜索, 即剪除不可能产生优化解的分支.

A*算法与分支界限策略的比较
  分支界限策略是为了剪掉不能达到优化解的分支
  分支界限策略的关键是“界限”
  A*算法的核心是告诉我们在某些情况下, 我们得 
     到的解一定是优化解, 于是算法可以停止
  A*算法试图尽早地发现优化解
  A*算法经常使用Best-first策略求解优化问题
 

A*算法关键—代价函数
  对于任意节点n
  g(n)=从树根到n的代价
  h*(n)=从n到目标节点的优化路径的代价
  f*(n)=g(n) + h*(n)是节点n的代价
What is the value of h*(n)?
  不知道!
  于是, f*(n)也不知道
估计h*(n)
  使用任何方法去估计h*(n), 用h(n)表示h*(n)的估计
  h(n)<=h*(n)总为真
  f(n)=g(n)+h(n)<=g(n)+h*(n)=f*(n)定义为n的代价


 

A*算法

  (1). 使用Best-first策略搜索树;
  (2). 节点n的代价函数为f(n)=g(n)+h(n), g(n)是
       从根到n的路径代价,  h(n)是从n到某个目
       标节点的优化路径代价;
  (3). 对于所有n, h(n)h*(n);
  (4). 当选择到的节点是目标节点时, 算法停止, 返回一个优化解.

附注:STL里面进行堆操作可用下面函数。

make_heap 建大顶堆

sort_heap 利用堆进行堆排序

push_heap 和 make_heap 插入元素到堆里

pop_heap 删除堆顶元素

赞助本站

人工智能实验室
AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港