Algorithm 启发式算法是如何工作的?

Algorithm 启发式算法是如何工作的?,algorithm,artificial-intelligence,a-star,heuristics,Algorithm,Artificial Intelligence,A Star,Heuristics,我最近在学习一些启发式算法,比如搜索算法。我知道一些关于启发式搜索算法的基本事实,比如f(n)=g(n)+h(n),我也知道每种算法的可容许性和一致性意味着什么。但让我困惑的是启发式算法是如何工作的?为什么启发值更接近成本的实际值更好?谢谢 启发式只是一种经过良好教育的猜测。近似值保证在一定的范围内。christofides算法是一种近似算法,但仅适用于满足三角形不等式的图(度量tsp)。来源:启发式函数的作用类似于对完成端到端路径的最低剩余成本的估计f(n)=g(n)+h(n)从底部开始限定扩

我最近在学习一些启发式算法,比如搜索算法。我知道一些关于启发式搜索算法的基本事实,比如f(n)=g(n)+h(n),我也知道每种算法的可容许性和一致性意味着什么。但让我困惑的是启发式算法是如何工作的?为什么启发值更接近成本的实际值更好?谢谢

启发式只是一种经过良好教育的猜测。近似值保证在一定的范围内。christofides算法是一种近似算法,但仅适用于满足三角形不等式的图(度量tsp)。来源:

启发式函数的作用类似于对完成端到端路径的最低剩余成本的估计
f(n)=g(n)+h(n)
从底部开始限定扩展和完成路径的最低成本
g(n)
。因此,对于可容许的启发式函数,可以保证搜索将成功


启发式函数越接近,搜索速度越快。想想极端情况,
h(n)=0
,你将有一个搜索,而如果
h(n)
恰好是剩余成本,这意味着
f(n)
是实际成本,那么搜索就完成了。

考虑一个完美的启发式h(n)。它给出了从n到目标的精确最短距离

因此,最短路径上每个节点s的成本函数f(s)将相同并等于最短路径的长度:到目前为止行驶的距离加上到目标的确切最短距离

所以不难看出,对于所有最短路径节点s和任何给定的非最短路径节点n,我们有f(s) 现在想想A*算法将如何在这样的启发式条件下运行:在每个节点上,要扩展到队列的选定下一个节点也将是最短路径上的下一个节点,因为它必须具有最小的可能值f。因此,该算法将沿着最短路径直接从起始节点移动到目标节点,不会出现错误

如果您没有完美的启发式,那么该算法显然会出错,因为f(n) 该算法的优点在于,只要启发式算法是可接受的,它仍然会找到最短路径,只是比完美路径要慢