当前位置: 首页 > news >正文

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

引言

假设有两个点 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 的切比雪夫距离的点的集合

相关文章:

  • IDEA的安装与使用
  • Python标准库中的logging
  • Verilog 代码题练手(1)
  • java课程线上线下教学平台 ssm638
  • 搭建ELK+Filebead+zookeeper+kafka实验
  • DES、AES、IDEA —— 一文搞懂分组密码
  • 【贪心 || 动态规划】最长对数链
  • Java-基础语法
  • java医药配送服务系统ssm447
  • golang设计模式——创建模式
  • Java8中的函数式接口(你知道几个?)
  • JavaScript-jQuery
  • 十分钟学会动态路由
  • Docker高级-2.DockerFile与微服务打包案例
  • Django--ORM 常用字段及属性介绍
  • canvas 高仿 Apple Watch 表盘
  • css选择器
  •  D - 粉碎叛乱F - 其他起义
  • Hibernate最全面试题
  • JS字符串转数字方法总结
  • k个最大的数及变种小结
  • linux安装openssl、swoole等扩展的具体步骤
  • Nacos系列:Nacos的Java SDK使用
  • PHP面试之三:MySQL数据库
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • 阿里云前端周刊 - 第 26 期
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 第十八天-企业应用架构模式-基本模式
  • 分布式任务队列Celery
  • 理解在java “”i=i++;”所发生的事情
  • 如何选择开源的机器学习框架?
  • 网页视频流m3u8/ts视频下载
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 我建了一个叫Hello World的项目
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • RDS-Mysql 物理备份恢复到本地数据库上
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​configparser --- 配置文件解析器​
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • (1)STL算法之遍历容器
  • (145)光线追踪距离场柔和阴影
  • (C语言)字符分类函数
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • .describe() python_Python-Win32com-Excel
  • .NET CLR Hosting 简介
  • ??如何把JavaScript脚本中的参数传到java代码段中
  • @软考考生,这份软考高分攻略你须知道
  • [ vulhub漏洞复现篇 ] Jetty WEB-INF 文件读取复现CVE-2021-34429
  • [100天算法】-实现 strStr()(day 52)