易腾的专栏

企业信息化论坛

融合成发展新趋势 中国软件业正在起飞时
          昨天看人工智能,几页A*算法的证明过程看了我几个小时,结果后来几句话就可以很直观的证明出来了.

首先是在一个有穷图中,弧必然要>某个正数,其次,对于节点n的估价函数h^(n)必须<=实际的估价函数h(n),

这样就保证了A*的可接纳性,也就是一定可以找到一条最优路径

其次,假设s2是s1的后继,则必须保证一致性(单调的性质),也就是g^(s2) - g^(s1) >= h^(s1) - h^(s2),也就

是F^(s2) >= F^(s1),一致性使得A*在每扩展节点N都可以找到达到N的一条最优秀路径。

对于一致性使得A*在扩展节点N的时候可以找到N的最优秀路径,我的直观的证明是这样的:

1)由于每次A*是取F^(x)最小的点,所以A*总是沿着已经扩展了的F^(x)点集的边缘向外扩展

2) 由于一致性,保证了F^(s2) >= F^(s1),所以在扩展F^(s2)之前,所有可能是s2父节点都将会被扩展(这是因

为s2父节点的F^肯定不大于s2的F^),按照这个推理,直到最顶层的n0(开始节点),他本身就是最小代价路

径了,于是s2所计算的F^自然会是最小值,而且由于可接纳性保证了可以找到最优(最小代价)路径,当扩展

s2的时候,就自然等于找到了s2的最优(最小代价)路径。当然可能有人会说,那如果s2的父亲节点的F^和s2

一样,而却先扩展了s2呢?对于这样的情况,由于一致性,s2父亲节点扩展的节点肯定 >= 他本身,所以s2依

然是最优的。


上面的过程非常不规范,谈不上证明吧,但是对于理解却很有帮助,因为真的比书上的证明过程直观得多了,

呵呵 
阅读更多
文章标签: 扩展 算法
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

融合成发展新趋势 中国软件业正在起飞时

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭