zoukankan      html  css  js  c++  java
  • 关于A*估价函数的总结

    估价函数的优劣决定一个A*算法的好坏

    360百科上是这样说的:

    (https://baike.so.com/doc/6223470-6436780.html)

    关于估价函数h(n)与实际距离d(n)的大小关系导致的搜索范围的不同,一些同学表示不理解

    这里给出一个不是很严谨的证明:

    首先,d(n)+g(n)即为当前路径到目标状态的总距离,

    而我们在估价后,认为这条路径的总距离为h(n)+g(n)

    以第一种情况(h(n)<d(n))为例  八数码

    在八数码中的估价中,我们发现一次操作最多使两个元素接近于目标状态,

    所以把每个数字距离目标的状态的曼哈顿距离之和除以二,这样是一个最理想的距离,

    也就是说,h(n)<d(n)。

    而每次取出队首元素,向下扩展,我们可以想到,

    随着深度的增大,该路径的g(n)+h(n)会越来越大,一直趋向g(n)+d(n)

    所以当这个值比其他路径的估价大时,就不会再继续搜这条路径了

    可以理解为,深度越大,一条路径的优势越小,从而搜到的范围比较大

    为什么一定能搜出最优解:

    最优解的g(n)+d(n)<非最优解的g(n)+d(n),而h(n)<d(n),

    因此,不会存在一种情况,使最优解的g(n)+h(n)>非最优解的g(n)+d(n)

    而随着深度的增大,每个路径g(n)+h(n)都是会趋向g(n)+d(n)的

    在一个非最优解的路径中,随着深度增大,

    在搜到目标之前,一定会在某一层出现都比最优解估价大的情况

     而最终先搜到目标的,就是最优解。

  • 相关阅读:
    关于如何Debug进MVC3源代码
    浏览文件按钮
    C#多线程学习(五) 多线程的自动管理(定时器)
    记录总数
    Json对象格式化字符串输出
    数据与通信之WebRequest.Web
    ASP.NET MVC3中的ViewBag动态性
    SQL Server 2005的XML数据修改语言(XML DML)
    SOCKET与TCP/IP与HTTP的关系
    WPF绑定方式
  • 原文地址:https://www.cnblogs.com/yjkhhh/p/8994285.html
Copyright © 2011-2022 走看看