数学中有很多不同种类的距离,常用于几何、高等代数等数学研究。
多种多样的距离在数学建模、计算机学习中有着不小的应用。
比如,A*搜索时的评估函数。
比如,在机器学习中,做分类时常常需要估算不同样本之间的相似性度量(Similarity Measurement),这时通常采用的方法就是计算样本间的距离。采用什么样的方法计算距离是很讲究,甚至关系到分类的正确与否。
欧氏距离(Euclidean Distance)
欧氏距离是最易于理解的一种距离计算方法,源自欧几里得几何中两点间的距离公式。
(1)二维平面上两点 a(x1,y1) 与 b(x2,y2) 间的欧氏距离:

(2)两个n维向量 a(x11,x12,…,x1n) 与 b(x21,x22,…,x2n) 间的欧氏距离:

也可以用表示成向量运算的形式:

(4)Matlab计算欧氏距离
Matlab计算距离主要使用pdist函数。若 X 是一个
例子:计算向量 (0,0)、(1,0)、(0,2) 两两间的欧式距离
X = [0 0 ; 1 0 ; 0 2]
D = pdist(X,'euclidean') %大家可以去查一查pdist的参数
结果:
D =
1.0000 2.0000 2.2361
曼哈顿距离(Manhattan Distance)
从名字就可以猜出这种距离的计算方法了。想象你在曼哈顿要从一个十字路口开车到另外一个十字路口,驾驶距离是两点间的直线距离吗?显然不是,除非你能穿越大楼。实际驾驶距离就是这个“曼哈顿距离”。而这也是曼哈顿距离名称的来源, 曼哈顿距离也称为城市街区距离(City Block distance)。
(1)二维平面两点 a(x1,y1) 与 b(x2,y2) 间的曼哈顿距离

(2)两个n维向量 a(x11,x12,…,