あいさか たいがblogAisaka_Taiga的博客
//https://img2018.cnblogs.com/blog/1646268/201908/1646268-20190806114008215-138720377.jpg

题目中常见的几种距离

Toretto·2023-05-26 17:28·98 次阅读

题目中常见的几种距离

距离

在几何学里面距离并不单指直线距离,有很多其他的距离没有那么常用,但考场上可能会出现,为了防止题目不给出定义等,我们有必要认识一下各种距离。

后面的角标为了清楚直接打到字母后面了

欧几里得距离#

也被称作欧式距离,在平面直角坐标系中,设有两点 A(x1,y1),B(x2,y2),他们的欧几里得距离其实就是两点所连成的线段的长度,初中也讲过计算公式:

|AB|=(x2x1)2+(y2y1)2

这个公式怎么来的呢?看一下这张图:

image

我们可以看到我们的 A,B 两点,我们选了一个中转点 C 来帮助我们计算 |AB|,而选择的 C 点与 A,B 构成了一个三角形,而我们要求的就是 h,但是很明显是可以通过勾股定理来计算的,也就是 h=f2+g2,而 f 的值就是 |x2x1|g 的值为 |y2y1|,平方后绝对值可以不加,所以得到了上面的公式。

当然我们不一定只在平面上解决这个问题,有可能会遇到三维空间的问题,也就是立体空间里面求解欧几里得距离。

image

技术有限

我们可以看到我们要求的是 A(x1,y1,z1),G(x2,y2,z2) 两点的距离 |AG|,我们考虑这样来求解:

如果想要求 |AG|,我们从图中可以看出 AGA,G,C 所在平面的一个直角三角形的斜边,而 GC 的长度我们是可以求出来的,就是 |z2z1|,所以问题转化为求 AC 的长度;AC 所在的平面为 ABCD ,我们可以直接用上面的公式来计算出 AC2=(y2y1)2+(x2y1)2,然后跟 GC 勾股定理一下就可以得出以下公式:

|AG|=(x2x1)2+(y2y1)2+(z2z1)2

由此我们也可以推广到多维,但大多数情况用不到,而且我也不会证

虽然欧几里得距离很有用,但也有缺点,比如最后得出的答案往往都是带根号的,会存在一定的误差,在信息学里这是一个难以解决的问题。

曼哈顿距离#

在二维的空间内,两个点之间的曼哈顿距离为他们横坐标之差的绝对值与纵坐标之差的绝对值的和。设 A(x1,y1),B(x2,y2),则两点之间的曼哈顿距离可以表示为

d(A,B)=|x1x2|+|y1y2|

image

例如上图中的蓝线为欧几里得距离,黑线为曼哈顿距离。

当然曼哈顿距离也可以通过类似欧几里得距离的推理出 N 维空间的公式。

A(x1,x2,,xn),B(y1,y2,,yn),则有:

d(A,B)=|x1y1|+|x2y2|++|xnyn|=i=1n|xiyi|

性质#

曼哈顿距离有以下数学性质:

  • 非负性,这一点很明显就能看出来
  • 统一性,点到自身的曼哈顿距离为 0
  • 对称性,ABBA 的曼哈顿距离相等。
  • 三角不等式,从 ij 的直接距离不会大于途经的任何其他点 k 的距离。d(i,j)d(i,k)+d(k,j)

切比雪夫距离#

切比雪夫距离是向量空间中的一种度量,两个点之间的距离定义为其各坐标数值差的最大值。

在二维空间内,两个点之间的切比雪夫距离为他们横坐标之差的绝对值和纵坐标之差的绝对值的最大值。设 A(x1,y1),B(x2,y2),则 A,B 之间的切比雪夫距离可以用公式表示为:

d(A,B)=max(|x1x2|,|y1y2|)

n 维空间中 A(x1,x2,,xn),B(y1,y2,,yn) 的切比雪夫距离的公式可以表示为:

d(x,y)=max{|x1y1|,|x2y2|,,|xnyn|}

曼哈顿距离与切比雪夫距离的相互转化#

首先我们考虑曼哈顿距离为 1 的所有点组成的图像:

image

然后再来看看所有切比雪夫距离为 1 的图像:

image

对比一下,你会发现,这两个正方形是相似的。

所以我们可以找到曼哈顿距离与切比雪夫距离之间的关系!

我们假设 A(x1,y1),B(x2,y2),我们把曼哈顿距离中的绝对值拆开,能够得到四个值,这四个值中最大的是两个非负数之和,即曼哈顿距离。则 A,B 两点的曼哈顿距离为:

d(A,B)=|x1x2|+|y1y2|=max{x1x2+y1y2,x1x2+y2y1,x2x1+y1y2,x2x1+y2y1}=max(|(x1+y1)(x2+y2)|,|(x1y1)(x2y2)|)

欸,这不是 (x1+y1,x1y1)(x2+y2,x2y2) 两点的切比雪夫距离吗?

所以,将点 (x,y) 转化为 (x+y,xy),新坐标系下的切比雪夫距离即为原坐标系下的曼哈顿距离。

那我们是不是也可以用切比雪夫距离转化成曼哈顿距离呢?

A(x1,y1),B(x2,y2) 的切比雪夫距离为:

d(A,B)=max{|x1x2|,|y1y2|}=max{|x1+y12x2+y22|+|x1y12x2y22|}

为什么呢?

还记得上面的两张图吗?把切比雪夫的转 45 后再缩小至 12 不就是曼哈顿距离的了吗?所以都带有 12 这个系数。

也就是说,将每一个点 (x,y) 转化为 (x+y2,xy2),新坐标系下的曼哈顿距离即为原坐标系下的切比雪夫距离。

结论#

  • 曼哈顿坐标系是通过切比雪夫坐标系旋转 45 后,再缩小到原来的一半得到的。

  • 将一个点 (x,y) 的坐标转化为 (x+y,xy) 后,原坐标系中的曼哈顿距离等于新坐标系中的切比雪夫距离。

  • 将一个点 (x,y) 的坐标转化为 (x+y2,xy2) 后,原坐标系中的切比雪夫距离等于新坐标系中的曼哈顿距离。

碰到求切比雪夫距离或者曼哈顿距离的题目的时候,我们往往可以相互转化来求解。

Lm 距离#

一般的,我们定义平面上两点 A(x1,y1),B(x2,y2) 之间的 Lm 距离为

d(Lm)=(|x1x2|m+|y1y2|m)1m

容易发现 L2 就是欧几里得距离,L1 就是曼哈顿距离。

汉明距离#

汉明距离是两个字符串之间的距离,它表示两个长度相同的字符串对应位字符不同的数量

通常用于比较两个串的差异。

部分参考自https://www.luogu.com.cn/blog/xuxing/Distance-Algorithm

posted @   北烛青澜  阅读(98)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示
目录