曼哈顿距离和切比雪夫距离
转载 https://www.cnblogs.com/zwfymqz/p/8253530.html
本文只讨论二维空间中的曼哈顿距离与切比雪夫距离
曼哈顿距离
定义
设平面空间内存在两点,它们的坐标为(x1,y1) (x2,y2) .
则
即两点横纵坐标差之和, 两点在南北方向上的距离加上在东西方向上的距离
煮个栗子
如图所示,图中A,B 两点的曼哈顿距离为AC+BC=4+3=7
切比雪夫距离
定义
设平面空间内存在两点,它们的坐标为(x1,y1),(x2,y2)
则dis=max(|x1−x2|,|y1−y2|)
即两点横纵坐标差的最大值
再煮个栗子
dis=max(AC,BC)=AC=4
两者之间的关系
两者的定义看上去好像毛线关系都没有,但实际上,这两种距离可以相互转化!
我们考虑最简单的情况,在一个二维坐标系中,设原点为(0,0)
如果用曼哈顿距离表示,则与原点距离为1的点会构成一个边长为√2的正方形
如果用切比雪夫距离表示,则与原点距离为1的点会构成一个边长为2的正方形
仔细对比这两个图形,我们会发现这两个图形长得差不多,他们应该可以通过某种变换互相转化。
事实上,
将一个点(x,y)的坐标变为 后,原坐标系中的曼哈顿距离 == 新坐标系中的切比雪夫距离
将一个点(x,y)的坐标变为 后,原坐标系中的切比雪夫距离 == 新坐标系中的曼哈顿距离
用处
切比雪夫距离在计算的时候需要取max,往往不是很好优化,对于一个点,计算其他点到该的距离的复杂度为O(n)
而曼哈顿距离只有求和以及取绝对值两种运算,我们把坐标排序后可以去掉绝对值的影响,进而用前缀和优化,可以把复杂度降为O(1) .
题目 : https://www.luogu.org/problemnew/show/P3964
曼哈顿距离和切比雪夫距离相关推荐
- 曼哈顿距离和切比雪夫距离链接
存一下链接慢慢看 曼哈顿距离和切比雪夫距离 这个更清晰一些: 关于曼哈顿距离和切比雪夫距离 NN中常用的距离计算公式:欧式距离.曼哈顿距离.马氏距离.余弦.汉明距离
- 曼哈顿距离与切比雪夫距离的转化及prufer序列
目录 曼哈顿距离与切比雪夫距离的相互转化 prufer序列 1. 曼哈顿距离 与 切比雪夫距离 的相互转化 曼哈顿距离 |x1−x2|+|y1−y2|=max(x1−x2+y1−y2,x1−x2−y1 ...
- ML:图像数据、字符串数据等计算相似度常用的十种方法(余弦相似性、皮尔逊、闵可夫斯基距离/曼哈顿距离/欧氏距离/切比雪夫距离、马氏距离、汉明距离、编辑距离、杰卡德相似系数、相对熵/KL散度、Helli
ML:图像数据.字符串数据等计算相似度常用的十种方法(余弦相似性.皮尔逊.闵可夫斯基距离/曼哈顿距离/欧氏距离/切比雪夫距离.马氏距离.汉明距离.编辑距离.杰卡德相似系数.相对熵/KL散度.Helli ...
- 什么是范数,及其对应的 “曼哈顿距离“、“欧式距离“、“闵氏距离“、“切比雪夫距离“
什么是范数,及其对应的 "曼哈顿距离"."欧式距离"."闵氏距离"."切比雪夫距离" 一.什么是范数 二.欧式距离(对应 ...
- 数据的距离度量 一、欧式距离,曼哈顿距离,闵氏距离,切比雪夫距离,兰氏距离,马氏距离
数据的距离度量 一.欧式距离,曼哈顿距离,闵氏距离,切比雪夫距离,兰氏距离,马氏距离 前言 欧式距离 标准欧式距离 曼哈顿距离 闵氏距离 切比雪夫距离 兰氏距离 马氏距离 前言 本篇记录一下常用的数据 ...
- 曼哈顿距离和切比雪夫距离转换
设平面空间内存在两点,它们的坐标为(x1,y1) (x2,y2) 曼哈顿距离 dis=|x1−x2|+|y1−y2|,即两点横纵坐标差之和. 切比雪夫距离 dis=max(|x1−x2|,|y1−y2 ...
- 曼哈顿距离与切比雪夫距离及其相互转化
文章目录 曼哈顿距离与切比雪夫距离及其相互转化 1.算法分析 1.1 曼哈顿距离 1.2 切比雪夫距离 1.3 两者之间的关系 1.4 用处 2.典型例题 曼哈顿距离与切比雪夫距离及其相互转化 1.算 ...
- 【计几】曼哈顿距离与切比雪夫距离
讲解链接: 距离 OI Wiki 曼哈顿距离与切比雪夫距离:为何要相互转化 我们设 dM(A,B)d_M(A,B)dM(A,B) 为点 AAA 和点 BBB 的曼哈顿距离, dQ(A,B)d_Q(A ...
- 三维马氏距离_各种距离(欧氏距离、曼哈顿距离、切比雪夫距离、马氏距离等)...
引用:http://blog.csdn.net/shiwei408/article/details/7602324 在做分类时常常需要估算不同样本之间的相似性度量(SimilarityMeasurem ...
最新文章
- pandas将dataframe中的内容为列表(list)的数据列裂变、拆分为多个新的数据列实战:拆分为多个新的数据列(并指定新数据列的名称)、数据列中的列表(不等长)拆分为多个新的数据列产生NaN
- oracle存clob,oracle数据库里保存clob字段-Oracle
- 腾讯微博即将关停,十年了,你用过吗?
- node开发环境(mac)和线上环境(linux)搭建
- C语言——球体体积判断素数用递归计算Fibonacci数列
- hadoop集群中的日志文件
- 解决Redmi 6 pro底部出现黑边问题
- 国家特级数学教授李毓佩:我们欠孩子真正的数学阅读 !
- java基础代码下载_Java基础(一)(示例代码)
- 2015年《大数据》高被引论文 Top10
- Unity3D学习笔记(二十七):MVC框架下的背包系统(2)
- zabbix-3.0.3 mysql表分区的方法
- 树莓派微型计算机教程,简单易用的树莓派平板 带你快速入门计算机编程
- windows 如何录制电脑自身内部的声音,无需 (Stereo mix )立体声混合选项
- java NEW一个对象之后加入大括号
- 【深度学习基础】02梯度下降算法改进:SGD、Momentum、NAG、RMSProp、Adam等
- php 的 yii 框架,详解PHP的Yii框架的运行机制及其路由功能
- 如何使用charles+mock替换接口返回来测试
- 【文献阅读】路径感知的图注意力做运动预测(Fang Da等人,ArXiv,ICRA 2022)
- 华为中国大学生ICT大赛2021实践赛网络赛道晋级赛试题解析(答案版)