曼哈顿距离和三角不等式

时间:2017-10-05 17:28:44

标签: algorithm geometry distance

问题出现在CSAcademy Programming Contest Round 51中。问题陈述如下: - "给定曼哈顿距离a,b和c,在2D空间中产生3个点,使得它们之间的曼哈顿距离满足上述值"。
我的方法
给定的距离应满足: -

(a+b+c)%2==0

原因是: 首先对距离进行排序

a<=b<=c

然后我们有以下

|x2-x1|+|y2-y1|=a
|x3-x2|+|y3-y2|=b
|x3-x1|+|y3-y2|=c

现在,如果3点有x1,x2,x3,y1,y2,y3坐标,那么: -

x1<=x2<=x3
y1<=y2<=y3

然后我们可以安全地打开模数来获得: -

2*(x3-x1)+2*(y3-y1)=a+b+c

此后,我修复了(0,0)和(a,0),并得出第3点为: -

x3=(a+b-c)/2
y3=(b+c-a)/2

但是,我无法在比赛中解决,因为我没有注意到排序后的事实

a+b>=c should hold (Triangle inequality over Manhattan Distance)

相同here的代码。
因此,我的问题如下: -

  1. 曼哈顿距离如何满足三角不等式?
  2. 是否有任何一般距离指标保持三角不等式? (如曼哈顿,Levehnstein(编辑距离),汉明距离)。
  3. 三角不等式是否是所有距离测量的必要条件? (那应该从根本上说)。

1 个答案:

答案 0 :(得分:1)

我认为这意味着你所产生的要点不符合基本要求。

我认为没有明确要求这些点满足三角不等式,这只是一个新兴属性。

假设a = 0,b = 2,c = 4.

您的方法将产生分数:

x1,y1 = 0,0
x2,y2 = 0,0
x3,y3 = -1,3

现在距离1到2是0,距离2到3是4,但距离1到3也是4.

提到三角不等式的原因是,在这种情况下,你可以立即证明由于这种不等式而没有解决方案。

三角形不等式将适用于距离度量,其中距离被定义为受约束的最短路径。这是因为它相当于说“从a到b到c”总是至少和“直接从a到c”一样长。