Machine learning 距离度量启发式信息量

Machine learning 距离度量启发式信息量,machine-learning,artificial-intelligence,shortest-path,Machine Learning,Artificial Intelligence,Shortest Path,有曼哈顿距离启发法和一个 greater value of (square root(x1-x2),square root(y1-y2)) P>你如何考虑它们的信息,它们是否可以从A到B的最短路径中搜索,只允许水平和垂直运动? 在所有情况下对其进行测试时,第二种启发式方法总是采用对角方式,有时发现的节点数明显小于曼哈顿。但情况并非总是如此,这让我感到困惑。给定当前点a=x1,y1和目标b=x2,y2。我让dist1a,b表示曼哈顿距离,dist2a,b表示你提出的另一个启发式。我们有: 区

有曼哈顿距离启发法和一个

 greater value of (square root(x1-x2),square root(y1-y2))
<> P>你如何考虑它们的信息,它们是否可以从A到B的最短路径中搜索,只允许水平和垂直运动?

在所有情况下对其进行测试时,第二种启发式方法总是采用对角方式,有时发现的节点数明显小于曼哈顿。但情况并非总是如此,这让我感到困惑。

给定当前点a=x1,y1和目标b=x2,y2。我让dist1a,b表示曼哈顿距离,dist2a,b表示你提出的另一个启发式。我们有:

区1a,b=| x1-x2 |+| y1-y2|

dist2a,b=maxsqrt | x1-x2 |,sqrt | y1-y2|

请注意,我对您提出的新启发式进行了一些修改,以获取绝对差的平方根,而不仅仅是差,因为获取负数的平方根会导致问题。无论如何,应该很容易看出,对于任何a和b,dist1a,b>=dist2a,b

由于这两种启发式算法都适用于仅允许垂直和水平移动的网格,这通常意味着这两种算法中最大的启发式算法曼哈顿距离更有效,因为它更接近真实值

在OP中,您实际上提到,您正在测量发现的节点数,对于第二个启发式,这有时更小。在这里,我将假设您的意思是运行A*算法,并且您正在测量从frontier/open list/priority queue/任何您想要使用的术语中弹出的节点数


我的猜测是,当多个节点在边界(通常称为f)上的分数相等时,情况会很糟糕。您提出的第二种启发式方法确实倾向于沿着当前节点和目标之间的对角线选择节点,而曼哈顿距离没有这种倾向。当边界中的多个节点具有相等的f分数时,一个好的平局破坏者是优先考虑具有高实际成本(目前通常称为g)和低启发式成本(通常称为h)的节点。这可以通过在f分数相等的情况下显式比较g或h分数来实现,也可以通过简单地将所有启发式分数乘以略大于1的数字来实现,例如,1.0000001。有关这方面的更多信息,请参见

为什么您说dist1>=dist2?我认为dist2中的平方根使dist2>dist1?这是我在搜索时打印两个启发式的时候:自定义16-4;海关25-5;海关9-3;这意味着你用的是平方,不是平方根。这种启发式不再是可接受的,因此您将不再保证找到最优路径。你确实可以更快地找到一条路,特别是在几乎没有障碍的情况下,但这可能是次优的。一旦开始为网格添加更多障碍,您也会发现性能很快下降。请参阅示例:我使用square,您是对的,但启发式总是寻找最短路径。@JasonPer always?我很肯定它不会总是找到最短的路径。试着重新创建一个类似的场景,如果你看一下我之前评论的链接,你会发现它是可视化的,那就是启发式欧几里德距离的平方。您提出的启发式与平方欧几里德不同,但仍然有些相似,也不可接受。我怀疑问题尤其是当dx和dy都很大,大致相等但不完全相等时,以及当有障碍物阻挡对角线路径时,如图所示。