Python实现三种常见距离测量算法:欧式、街区与棋盘距离

山海之间
山海之间
发布时间:2026-10-13| 4人浏览过
原创

本文介绍Python中三种基础的距离测量方式:欧式距离、街区距离和棋盘距离。详细解析了各自的数学公式及其在路径规划(如A*算法)中的应用场景,并通过Python代码示例直观展示不同距离度量生成的几何区域形状,帮助开发者理解距离概念在算法中的实际作用。

撰写本文的初衷在于帮助读者建立对距离概念的直观理解。尽管这是计算机科学中的基础知识,但正如千里之行始于足下,它是许多高级路径搜索算法(例如A*算法)不可或缺的核心组件。

在计算机图形学和路径规划中,主要存在三种距离测量方式。

第一种是欧式距离(Euclidean Distance),这是最常用且最符合几何直观的距离度量方式。

其计算公式为:((x1-x2)^2 + (y1-y2)^2)^0.5

基于该公式计算出的等距点集合,会形成一个圆形的原型区域。

#设起始坐标是原点,即(0,0)
y_result = []
for y in range(10,-10,-1):
 x_result = []
 for x in range(-10,10,1):
  #((0-x)**2 + (0-y)**2)**0.5
  if ((0-x)**2 + (0-y)**2)**0.5 <= 9:
   x_result.append('*')
  else:
   x_result.append(' ')
 y_result.append(''.join(x_result))

for i in y_result:
 print i

第二种是街区距离(Manhattan Distance),这种度量方式在游戏开发中应用广泛。之所以被称为“街区”距离,是因为西方城市的街道布局通常呈现东南、东北、西南、西北的网格状走向,移动必须沿街道平行或垂直进行。

其计算公式为:|x1-x2| + |y1-y2|

使用该公式计算出的等距点集合,会形成一个菱形的区域。

#设起始坐标是原点,即(0,0)
y_result = []
for y in range(10,-10,-1):
 x_result = []
 for x in range(-10,10,1):
  #(abs(0-x) + abs(0-y))
  if (abs(0-x) + abs(0-y)) <= 9:
   x_result.append('*')
  else:
   x_result.append(' ')
 y_result.append(''.join(x_result))

for i in y_result:
 print i

第三种是棋盘距离(Chebyshev Distance),其概念较为直观,类似于国际象棋棋盘上的方格移动。

其计算公式为:max(|x1-x2|, |y1-y2|)

基于该公式计算出的等距点集合,会形成一个正方形的区域。

#设起始坐标是原点,即(0,0)
y_result = []
for y in range(10,-10,-1):
 x_result = []
 for x in range(-10,10,1):
  #max(abs(0-x),abs(0-y))
  if max(abs(0-x),abs(0-y)) <= 9:
   x_result.append('*')
  else:
   x_result.append(' ')
 y_result.append(''.join(x_result))

for i in y_result:
 print i

以上即为本文关于Python中三种距离测量方法的全部内容,希望能为读者的学习提供有益的帮助,也欢迎大家继续支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。