7月22日学习笔记——曼哈顿距离

· · 个人记录

定义:

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

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

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

曼哈顿距离的计算公式:

曼哈顿距离中的距离计算公式比欧几里得距离的计算公式看起来简洁很多,只需要把两个点坐标的 x 坐标相减取绝对值,y 坐标相减取绝对值,再相加即可。

公式背后

从公式定义上看,曼哈顿距离一定是一个非负数,距离最小的情况就是两个点重合,距离为 0,这一点和欧氏距离一样。曼哈顿距离和欧氏距离的意义相近,也是为了描述两个点之间的距离,不同的是曼哈顿距离只需要做加减法,这使得计算机在大量的计算过程中代价更低,而且会消除在开平方过程中取近似值而带来的误差。不仅如此,曼哈顿距离在人脱离计算机做计算的时候也会很方便。P1332 血色先锋队就是如此。之所以曼哈顿距离又被称为出租车距离是因为在像纽约曼哈顿区这样的地区有很多由横平竖直的街道所切成的街区(Block),出租车司机计算从一个位置到另一个位置的距离,通常直接用街区的两个坐标分别相减,再相加,这个结果就是他即将开车通过的街区数量,而完全没有必要用欧氏距离来求解——算起来超级麻烦还没有意义,毕竟谁也没办法从欧氏距离的直线上飞过去。如图 3 所示,假设一辆出租车要从上面的圆圈位置走到下面的圆圈位置,无论是左边的线路,还是右边的线路,都要经过 11 个街区,而这个 11 就是曼哈顿距离。

在棋盘上的距离计量

在国际象棋里,车(城堡)是以曼哈顿距离来计算棋盘格上的距离;而王(国王)与后(皇后)使用切比雪夫距离,象(主教)则是用转了45度的曼哈顿距离来算(在同色的格子上),也就是说它以斜线为行走路径。只有国王需要一步一步走的方式移动,皇后、主教与城堡可以在一或两次移动走到任何一格(在没有阻碍物的情况下,且主教忽略它不能走到的另一类颜色)。