• 曼哈顿距离和切比雪夫距离的转换


    引言

    假设有两个点 A ( x 1 , y 1 ) A(x_1, y_1) A(x1,y1) B ( x 2 , y 2 ) B(x_2,y_2) B(x2,y2)

    曼哈顿距离 = ∣ x 1 − x 2 ∣ + ∣ y 1 − y 2 ∣ |x_1-x_2|+|y_1-y_2| x1x2+y1y2

    切比雪夫距离 = m a x ( ∣ x 1 − x 2 ∣ , ∣ y 1 − y 2 ∣ ) max(|x_1-x_2|,|y_1-y_2|) max(x1x2,y1y2)

    一个是折线的距离,一个是 x,y 方向上更大的那个距离,这二者有什么关系呢?

    数学角度

    ∣ x 1 − x 2 ∣ + ∣ y 1 − y 2 ∣ = m a x { x 1 − x 2 + y 1 − y 2 , x 1 − x 2 + y 2 − y 1 , x 2 − x 1 + y 1 − y 2 , x 2 − x 1 + y 2 − y 1 } = m a x ( ∣ ( x 1 + y 1 ) − ( x 2 + y 2 ) ∣ , ∣ ( x 1 − y 1 ) − ( x 2 − y 2 ) ∣ ) |x_1-x_2|+|y_1-y_2| = max\{x_1-x_2+y_1-y_2, x_1-x_2+y_2-y_1, x_2-x_1+y_1-y_2,x_2-x_1+y_2-y_1\} \\ = max(|(x_1+y_1)-(x_2+y_2)|,|(x_1-y_1)-(x_2-y_2)|) x1x2+y1y2=max{x1x2+y1y2,x1x2+y2y1,x2x1+y1y2,x2x1+y2y1}=max((x1+y1)(x2+y2),(x1y1)(x2y2))

    即: ( x 1 , y 1 ) (x_1, y_1) (x1,y1) ( x 2 , y 2 ) (x_2,y_2) (x2,y2)的曼哈顿距离 = ( x 1 + y 1 , x 1 − y 1 ) (x_1+y_1,x_1-y_1) (x1+y1,x1y1) ( x 2 + y 2 , x 2 − y 2 ) (x_2+y_2,x_2-y_2) (x2+y2,x2y2)的切比雪夫距离

    反过来,解一个二元一次方程组可得, ( x 1 , y 1 ) (x_1, y_1) (x1,y1) ( x 2 , y 2 ) (x_2,y_2) (x2,y2)的切比雪夫距离 = ( x 1 + y 1 2 , x 1 − y 1 2 ) (\frac{x_1+y_1}2,\frac{x_1-y_1}2) (2x1+y1,2x1y1) ( x 2 + y 2 2 , x 2 − y 2 2 ) (\frac{x_2+y_2}2,\frac{x_2-y_2}2) (2x2+y2,2x2y2)的曼哈顿距离

    图形角度

    请添加图片描述

    红色是曼哈顿距离为 1 的点的集合,橙色是距离为 1 的切比雪夫距离的点的集合

  • 相关阅读:
    【Linux:进程概念】
    Pandas 使用教程 JSON
    2594. 修车的最少时间(Java)
    中小商家,也能在抖音电商找到星辰大海
    NLog详解
    动态规划——区间DP
    ArduPilot开源代码之H743+BMI270x2+ChibiOS配置适配
    Codeforces Round #812 (Div. 2)A.B.C.D
    Spring_AOP的理解
    ABAP Json和对象的转换
  • 原文地址:https://blog.csdn.net/weixin_43544179/article/details/126681546