用作启发函数时,曼哈顿距离是否单调?


25

我有一个基于正方形的地图。仅允许水平和垂直移动(禁止对角线)。移动成本始终为1。

我正在使用曼哈顿距离作为距离启发式算法在该地图上实现A *算法。这种启发式是一致的吗?我是否可以避免检查g(node)CLOSED集合中的节点?

编辑:一致我的意思是单调的。


1
如果您的移动成本在每个图块上都是均匀的,则可以将A *替换为跳转点搜索
Nick Caplinger 2013年

嘿,太好了!
Emiliano

Answers:


10

实际回答您的问题:当您被约束沿着未加权的网格垂直/水平移动时,曼哈顿距离是一致的(这可以通过Wikipedia上的定义轻松显示)。所以可以,在您的情况下,您可以避免重新检查封闭集中的节点。

但是,一旦允许对角线或任何角度的移动,曼哈顿距离就变得不可接受,因为它高估了对角线成本,这必然意味着不一致。


是的,这正是我一直在寻找的答案。知道启发式函数是什么会很好h(x) = min(manhattan(p1), manhattan(p2))(即p1或p2是很好的终点,我想到达最接近的那个)会很高兴。这h(x)仍然单调吗?
Emiliano

1
@happy_emi:是的,如果h(x, p1)h(x, p2)一致,那么min(h(x,p1), h(x,p2))也将一致。从Wikipedia的定义中可以很容易地看出这一点(我们需要显示min(h(x, p1), h(x, p2)) <= distance(x,y) + min(h(y, p1), h(y, p2))所有节点xy在它们之间有一条边。现在假设这h(x, p1)是最小的;您可以证明它绝对<=是右边的事实吗?两种启发式方法是否一致?)
BlueRaja-Danny Pflughoeft

31

是的,两点之间的曼哈顿距离始终相同,就像两点之间的常规距离一样。您可以认为曼哈顿距离是两点之间的直线的X和Y分量。

该图像(来自Wikipedia)很好地说明了这一点:

曼哈顿距离

绿线是实际距离。

蓝色红色黄色的线都表示相同的曼哈顿距离(12个单位)。无论您从左下角点到右下角进行向上向右的运动组合,都将获得相同的曼哈顿总距离。


2
很好的答案:简短,甜美,要有重点,而且要有漂亮的图画。
汤姆·布鲁德·皮多克(Tom'Blue'Piddock),

1
这个答案很接近,但是不正确。此图像不显示,曼哈顿距离是一致的 (事实上,如果考虑绿色的线是距离,它是不是一致的!) ,和推理,他并不需要重新检查的节点,因为“之间的曼哈顿距离“两点总是相同”并不成立(该陈述也是正确的h(x) = 1000,显然是不一致的)。他避免复查节点,但仅仅是因为曼哈顿距离是一致的,它这个答案不显示。
BlueRaja-Danny Pflughoeft13年

2
我相信根据您所链接的定义,曼哈顿距离是一致的。绿线距离将使用不同的试探法。红线,蓝线和黄线表示两个节点之间的距离保持相同(当使用相同的试探法时)。靠近会减少启发式,而远离会增加启发式。这符合OP的单调要求。在构建图时,在每个“交叉点”都有一个节点,曼哈顿距离是一致的。如果是不同的情况(例如允许对角线移动),则启发式方法将是不好的。
MichaelHouse

2
我已经说过曼哈顿距离是一致的,但不是出于您提到的原因。您的答案没有显示出一致性,注释中的论点也没有。“一致/单调启发式”有一个精确的定义(在我上面的链接中给出),与您似乎会混淆的单调函数不同。声明“靠近会减少启发式,而移远会增加启发式”,不足以表明它的一致性。2*manhatten满足,但不一致。
BlueRaja-Danny Pflughoeft13年

3
我不知道您为什么说这是不正确的,您似乎坚持认为此答案不完整。答案中的证据似乎同样微弱:“曼哈顿距离是一致的……”,然后您继续重申问题的原始说明,然后说明在不同情况下如何不予受理。我觉得答案似乎并不需要一个完整的数学证明。如果您认为这个问题有此要求,请在回答中包括它,我将对它投赞成票。感谢您的建设性批评。
MichaelHouse

6

在扩展Byte56的答案时,我想指出,在您的特定数据集中,使用“ 曼哈顿距离”作为启发式函数实际上始终是完美的启发式,因为它将始终返回实际路径成本(假设存在没有“阻塞”路径)。

您还应注意,正确方向(水平或垂直)上的所有节点都将产生相同的预期距离(因为到目标的路径很多同样短)。您应该意识到,如果优先级绑定,优先级队列(开放集)应首先使最新添加的节点出队(LIFO-后进先出)。这样,您将只检查将以最佳路径结束的节点。如果以FIFO(先进先出)的方式检查同样合适的节点,则将有效地检查属于最佳路径的所有节点。出现此问题的原因是,存在通往目标节点的多个同样好的路径。


“(假设没有阻碍路径)” -这是一个很大的假设。如果没有什么阻碍路径,则无需寻找路径算法!
BlueRaja-Danny Pflughoeft13年

@ BlueRaja-DannyPflughoeft:是的,当查看Byte56的图像时,这只是一个想法。其余的都是正确的。
Thorkil Holm-Jacobsen 2013年

4

我不确定“始终”是什么意思。固定距离上的曼哈顿距离是否与所走的路径无关?是的,正如Byte56的回答所说。

但是,例如,曼哈顿距离在旋转下不是不变的。例如,原点和点之间的曼哈顿距离(L1-norm(10,10)|10-0| + |10-0| = 20。但是,如果将坐标旋转45度(因此现在您的固定点位于网格的方向之一上),那么您现在会发现相同的点位于(10sqrt(2),0),因此到的原点与曼哈顿的距离也是如此10sqrt(2)~14.14


+1指出这一点;OTOH,曼哈顿距离在90度的旋转,这是真的,可以在离散网格进行“持续”唯一的不变。
Steven Stadnicki

1
不错,尽管他确实提到只允许水平和垂直移动。
Thorkil Holm-Jacobsen

1
最初的问题是关于单调的一致性。
Emiliano
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.