最小化曼哈顿距离

曼哈顿距离

曼哈顿距离和欧式距离一样是一种距离度量标准,不同的是它定义在L1范数下,也即用绝对值来衡量两点之间的距离。在一维空间下,曼哈顿距离定义如下:
d ( x , y ) = ∣ x − y ∣ d(x,y)=|x-y| d(x,y)=xy
在二维空间下,曼哈顿距离定义如下:
d ( x , y ) = ∣ x 1 − y 1 ∣ + ∣ x 2 − y 2 ∣ d(x,y)=|x_1-y_1|+|x_2-y_2| d(x,y)=x1y1+x2y2
类似的,我们可以获得在n维空间下的曼哈顿距离定义。

最小化一维曼哈顿距离

有了距离定义之后,我们看一个有趣的问题:给定n个一维空间下的点,求使 ∑ ∣ x i − a ∣ \sum{|x_i-a|} xia最小的点 a a a。针对该问题我们有明确的答案: a a a的取值就是 n n n个点的中位数。在quora上有一个比较浅显易懂的解释:在笔直的公路上种了n颗树,假设我们从中间颗树的位置开始往两个方向走,我们会发现不管往哪个方向走,我们都距离至少n/2颗树越来越远,而距离至多n/2颗树越来越近,所以上述距离总是在变大,从而说明使上述距离最小的点是中位数。下面给出数学证明:
我们假定使上述距离最小的点可以出现在数轴任意位置,既可以是n个点中的任意一个,也可以不属于n个点,我们分这两张情况讨论:

  1. 假设n个点已排序,选择第k个点计算距离,则有
    在这里插入图片描述
    同理,选择第k+1个点计算距离,则有
    在这里插入图片描述
    我们想知道当k逐渐变大时,距离的变化趋势,所以我们将上述两个距离做差
    在这里插入图片描述
    由于我们已经将n个点排序,所以 x k − x k + 1 x_k-x_{k+1} xkxk+1始终小于等于0,当k小于等于n/2时,2k-n小于等于0,从而上式大于等于0;当k大于等于n/2时,2k-n大于等于0,从而上式小于等于0。这表明随着k逐渐增大,距离先变小再变大,在k=n/2时取得最小值。具体的,当n=2k为偶数时,上式在k和k+1位置处相等并取得最小值;当n=2k+1为奇数时,上式在k+1位置处取得最小值,此时即是中位数。将奇偶两种情况统一考虑,在k+1也即n/2+1位置处我们可以获得距离最小值。
  2. 假设使距离最小的点不是给定的n个点,则最优位置可以是数轴上的任意位置。很显然的,首先可以将n个数确定范围之外的区间都排除掉,也即最优点既不可能小于n个点中的最小值也不可能大于n个点中的最大值。这样剩余需要考虑的最优点就可能是n个点之间的小区间。我们研究一下曼哈顿距离在这段区间上的变化趋势。选择任意一段区间 x k &lt; c 1 &lt; c 2 &lt; x k + 1 x_k&lt;c_1&lt;c_2&lt;x_{k+1} xk<c1<c2<xk+1,重新计算
    在这里插入图片描述
    从上面的公式我们可以看出,当k小于等于n/2时,距离公式满足 d ( x k ) &gt; d ( c 1 ) &gt; d ( c 2 ) &gt; d ( x k + 1 ) d(x_k)&gt;d(c_1)&gt;d(c_2)&gt;d(x_{k+1}) d(xk)>d(c1)>d(c2)>d(xk+1),当k大于等于n/2时, d ( x k ) &lt; d ( c 1 ) &lt; d ( c 2 ) &lt; d ( x k + 1 ) d(x_k)&lt;d(c_1)&lt;d(c_2)&lt;d(x_{k+1}) d(xk)<d(c1)<d(c2)<d(xk+1)。也即在整个连续空间上距离先减后增。从而当n=2k为偶数时,区间 [ x n / 2 , x n / 2 + 1 ] [x_{n/2},x_{n/2+1}] [xn/2,xn/2+1]之间的任意数均可以取得最小值,当我们取 ( x n / 2 + x n / 2 + 1 ) / 2 (x_{n/2}+x_{n/2+1})/2 (xn/2+xn/2+1)/2时即表示中位数;当n=2k+1为奇数时,距离在k+1位置处取得最小值,此时还是中位数。
    通过对离散和连续两种情况的考虑,我们可以得到结论:使上述公式取最小值的元素为中位数,不过我们可以统一选择排序之后的第n/2+1个元素,奇偶均如此。

最小化高维曼哈顿距离

由于在高维曼哈顿距离中只有加法操作,所以我们可以将每个维度分开考虑,在每个维度上分别按照一维的情况求排序后的第n/2+1个元素,然后组合起来即是最小化的高维曼哈顿距离。

最小化带权曼哈顿距离

有时我们还会遇到比上面更复杂的情况:每个点除了坐标 x i x_i xi还都附带一个权重 w i w_i wi,求使 ∑ w i ∣ x i − a ∣ \sum{w_i|x_i-a|} wixia最小的点 a a a。在此我们也给出推导过程,看看使距离最小的点在什么位置。在上面的证明中我们分离散和连续两种情况考虑,在此我们直接考虑n个点确定的连续区间。假定给n个点已排序,给定点c满足 x k ≤ c &lt; x k + 1 x_k \leq c&lt;x_{k+1} xkc<xk+1我们求
在这里插入图片描述
通过推导我们发现,影响距离变化的因素只是受制于权重,更确切地说是受制于前半部分权重和与后半部分权重和的差值。当 ∑ i = 1 k w i &lt; ∑ i = k + 1 n w i \displaystyle \sum^{k}_{i=1}{w_i}&lt; \sum^{n}_{i=k+1}{w_i} i=1kwi<i=k+1nwi时, d ( c ) &gt; d ( x k + 1 ) d(c)&gt;d(x_{k+1}) d(c)>d(xk+1),此时距离在连续区间上逐渐变小;当 ∑ i = 1 k w i &gt; ∑ i = k + 1 n w i \displaystyle \sum^{k}_{i=1}{w_i}&gt;\sum^{n}_{i=k+1}{w_i} i=1kwi>i=k+1nwi时, d ( c ) &lt; d ( x k + 1 ) d(c)&lt;d(x_{k+1}) d(c)<d(xk+1),距离在连续区间上又开始逐渐变大。所以使距离最小的位置k满足 ∑ i = 1 k − 1 w i &lt; ∑ i = k n w i \displaystyle \sum^{k-1}_{i=1}{w_i}&lt; \sum^{n}_{i=k}{w_i} i=1k1wi<i=knwi并且 ∑ i = 1 k w i ≥ ∑ i = k + 1 n w i \displaystyle \sum^{k}_{i=1}{w_i} \geq \sum^{n}_{i=k+1}{w_i} i=1kwii=k+1nwi,含义就是前半部分权重和原本小于后半部分权重和,加上下一个位置的权重之后大小关系发生转变的位置。所以针对带权曼哈顿距离,我们需要做的就是将n个点排序,然后累加权重直到左侧权重大于右侧权重停止,此时就是使距离最小的位置。特别地,当n个点的权重均为正,且和为1时,分界点就是累加之后权重之和超过0.5的位置,这个位置被称为带权中位数(详细定义请参考算法导论)。
可以看出不管曼哈顿距离是否带权重,使距离最小的位置总是和中位数相关。希望上面的推导能有助于大家理解最小化曼哈顿距离。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值