曼哈顿距离

来源:互联网 发布:连云港 核废料 知乎 编辑:程序博客网 时间:2024/04/30 18:35

我们可以定义曼哈顿距离的正式意义为L1-距离或城市区块距离,也就是在欧几里德空间的固定直角坐标系上两点所形成的线段对轴产生的投影的距离总和。

例如在平面上,坐标(x1, y1)的i点与坐标(x2, y2)的j点的曼哈顿距离为:

d(i,j)=|X1-X2|+|Y1-Y2|.

要注意的是,曼哈顿距离依赖坐标系统的转度,而非系统在坐标轴上的平移或映射。

曼哈顿距离的命名原因是从规划为方型建筑区块的城市(如曼哈顿)间,最短的行车路径而来(忽略曼哈顿的单向车道以及只存在于3、14大道的斜向车道)。任何往东三区块、往北六区块的的路径一定最少要走九区块,没有其他捷径。

出租车几何学满足除了SAS全等定理之外的希伯特定理,SAS全等指任两个三角型两个边与它们的夹角均分别对应相等,则这两个三角型全等。

在出租车几何学中,一个圆是由从圆心向各个固定曼哈顿距离标示出来的点围成的区域。因此这种圆其实就是旋转了45度的正方形。如果有一群圆,任两圆皆相交,则整群圆必在某点相交;因此曼哈顿距离会形成一个超凸度量空间Injective metric space)。对一个半径为r 的圆来说,这个正方形的圆每边长√2r。此'"圆"的半径r对切比雪夫距离 (L∞ 空间)的二维平面来说,也是一个对座标轴来说边长为2r的正方形,因此二维切比雪夫距离可视为等同于旋转且放大过的二维曼哈顿距离。然而这种介于L1与L∞的相等关系并不能延伸到更高的维度

数学性质

非负性:d(i,j)≥0 距离是一个非负的数值

同一性:d(i,i)= 0 对象到自身的距离为0

对称性:d(i,j)= d(j,i)距离是一个对称函数

三角不等式:d(i,j)≤d(i,k)+d(k,j)从对象i到对象j的直接距离不会大于途经的任何其他对象k的距离

 

曼哈顿距离算法

首先介绍一下曼哈顿,曼哈顿是一个极为繁华的街区,高楼林立,街道纵横,从A地点到达B地点没有直线路径,必须绕道,而且至少要经C地点,走AC和 CB才能到达,由于街道很规则,ACB就像一个直角3角形,AB是斜边,AC和CB是直角边,根据毕达格拉斯(勾股)定理,或者向量理论,都可以知道用AC和CB 可以表达AB的长度。
在早期的计算机图形学中,屏幕是由像素构成,是整数,点的坐标也一般是整数,原因是浮点运算很昂贵,很慢而且有误差,如果直接使用AB的距离,则必须要进 行浮点运算,如果使用AC和CB,则只要计算加减法即可,这就大大提高了运算速度,而且不管累计运算多少次,都不会有误差。因此,计算机图形学就借用曼哈 顿来命名这一表示方法。
在我们常用的平面CAD中,都会有格点,他是基本单位,定义了格点大小后,就可以使用整数来表示和运算,不会引入计算误差,又快又精确。

 

 

曼哈顿与欧几里得距离:红、蓝与黄线分别表示所有曼哈顿距离都拥有一样长度(12),而绿线表示欧几里得距离有6×√2 ≈ 8.48的长度。

 

 

HDU4311 Meeting point-1(曼哈顿距离)

题意:

给定n个点,选其中的一个点作为起点,然后使其他点到这个点的曼哈顿距离最小,求这个最小的距离

 

分析:

我们设P作为这个点作为起点

然后 ans = sum(abs|pi.x-p.x|+|pi.y-p.y| )(1<=i<=n)

我们可以对其分别按x,y进行排序,就可以去掉绝对值符号

然后化简后的公式就可以变成

设这个点在按x排完序后的位置为i;

tot[i],表示到序号i为止的点的横坐标的和。

ansx = (i-1)*p.x+(tot[n]-tot[i])-(n-i)*p.x

同理可以求出

设这个点在按t排完序后的位置为i;

ansy= (i-1)*p.y+(tot[n]-tot[i])-(n-i)*p.y

ans = ansx + ansy

然后取最小的ans 即可

时间复杂度为O(nlog(n));


0 0
原创粉丝点击