曼尔顿假设之MATLAB实现

                                                                                            by WC 1.6.2016                                                                                         

1.起源
曼尔顿是美国纽约市5个行政区之中人口最稠密的一个,城镇街道类似于正南正北、正东正西方向规则布局的方格子,如下图所示:
这里写图片描述
所以从A点到B点只能沿着红线或者类似于黄线,蓝线的路径走,而不能沿着绿色走,这里的红线就是曼尔顿距离,绿色代表欧氏距离,也就是直线距离,而蓝色和黄色代表等价的曼哈顿距离。曼哈顿距离——两点在南北方向上的距离加上在东西方向上的距离,即d(i,j)=|xi-xj|+|yi-yj|,同时,曼哈顿距离也称为城市街区距离(City Block distance)。

2.应用
2010年的MCM竞赛中有一道题,要求参赛小组根据以往的作案地点预测连环犯罪的位置。解答这道题的重点是分析犯罪的活动方式,题目的一条假是“犯罪的活动不受限制”,但犯罪在市区的活动,实际上会收到街道布局及街道两旁建筑物的限制。由于街道的布局通常类似于网络,所以我们将用“曼哈顿假设”来描述犯罪的活动方式。

3.MATLAB实现

X= [0 0 ; 1 0 ; 0 2;0 3]          【1D= pdist(X,'cityblock')           【2

【1】:构造 4行2列数组,每一行相当于一个坐标,即有四个坐标A(0,0),B(1,0),C(0,2),D(0,3)。
【2】:pdist(X,distance),X为点坐标的数组,用来获得两个点之间的距离。distance也可以用来表示其他距离,默认的是欧式距离,如果要计算曼尔顿距离,即使用cityblock。
这里写图片描述

猜你喜欢

转载自blog.csdn.net/u013414501/article/details/50467144