繁体   English   中英

A *算法中的启发式值

[英]Heuristic value in A* algorithm

我正在学习A *算法和dijkstra算法。 并发现唯一的区别是A *算法使用的启发式值。 但是,如何在图表中获得这些启发式值? 我找到了A *算法的示例图(从A到J)。 你们能帮我这些启发式值的计算方式吗? 在此处输入图片说明

红色数字表示启发式值。

我当前的问题是创建迷宫逃生。

启发式方法是您到达目的地必须经过的额外距离的估计值。

它是特定于问题的,针对不同的问题以不同的形式出现。 对于您的图形,一个很好的启发法可能是: 从节点到目标的实际距离,以英寸胶带或厘米为单位进行度量。 有趣的权利,但是那正是我的大学教授是如何做到的。 他在黑板上放了一英寸的胶带,并提出了很好的启发法。

所以h(A)可以是10个单位,表示长度是通过一个从A到J的物理量尺来测量的。

当然,为了使算法起作用,启发式算法必须是可以接受的 ,否则可能会给您错误的答案。

为了获得一种启发式的方法来估计(下限)两个节点之间的最小路径成本,有两种可能性(我知道):

关于图形所包含的基础空间的知识

例如,假设节点是平面上的点(具有x和y坐标),并且每个边的代价是相应节点之间的欧式距离。 在这种情况下,您可以通过计算U.positionV.position之间的欧式距离来估计(下限)从节点U到节点V的路径成本。

另一个例子是道路网络,您知道它位于地球表面。 边缘的成本可能代表以分钟为单位的旅行时间。 为了估算从节点U到节点V的路径成本,您可以计算两者之间的大圆距离,然后将其除以可能的最大行进速度。

图嵌入

另一种可能性是将图形嵌入到可以有效估计两个节点之间的路径距离的空间中。 这种方法没有对基础空间进行任何假设,但需要进行预计算。

例如,您可以在图形中定义界标L 然后,您可以预先计算图的每个节点到地标之间的距离,并在该节点处确保该距离。 为了估计A *搜索期间的路径距离,现在可以按以下方式使用预先计算的距离:节点UV之间的路径距离由|dist(U, L) - dist(V,L)| 您可以通过使用多个地标来改进这种启发式方法。

对于您的图形,您可以将节点A和节点H用作界标,这将为您嵌入图形,如下图所示。 您必须预先计算节点A和H与所有其他节点之间的最短路径,以便计算此嵌入。 例如,当您要估计两个节点B和J之间的距离时,可以计算两个维中每个的距离,并使用两个距离中的最大值作为估计。 这对应于L-无穷大范数

图嵌入

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM