zoukankan      html  css  js  c++  java
  • 关于曼哈顿距离和切比雪夫距离的转换和应用

    看到曼哈顿距离就不难想到可以与切比雪夫距离进行转换。

    切比雪夫距离:

      平面上两个点$(x1,y1),(x2,y2)$ 之间的距离为$max(|x1-x2 | , | y1 - y2 |)$.

    如何转换呢?考虑把原来的坐标系旋转45°,原来的坐标$(x,y)$就变成了$(x+y,x - y )$

    然后原图上两点的曼哈顿距离就变成了切比雪夫距离了。

    在转换之后,我们就可以转化成对于两个点其中一维的差值刚好为D,另一维度为<=D

    为了方便讨论,我们先假设x差值为D,

    这样来讨论:

    $x1−x2=D$

    $−D≤y1−y2≤D$

    我们固定了一维x,那么另外一维y就处于一个范围内,我们就可以快速的处理每一个点有多少与之曼哈顿距离为D的节点了。

    具体实现是按照x排序,如果x相同就按照y排序。

    然后我们只需要找一个点x的两个距离为D的点,$x+D$和$ x-D$,对应有多少个y之差小于等于D

    本博客为本人原创,如需转载,请必须声明博客的源地址。 本人博客地址为:www.cnblogs.com/qieqiemin/ 希望所写的文章对您有帮助。
  • 相关阅读:
    快速排序
    Java LinkedList
    Java ArrayList
    Java ReentrantLock
    Java Timer
    Java 管道PipedInputStream PipedOutStream PipedReader PipedWriter
    6. Samba服务和防火墙配置笔记
    5. 网络配置与FTP服务笔记
    3.vi 和软件安装
    2 . Linux常见命令
  • 原文地址:https://www.cnblogs.com/qieqiemin/p/10816446.html
Copyright © 2011-2022 走看看