最小化曼哈顿距离

Posted yutianzuijin

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最小化曼哈顿距离相关的知识,希望对你有一定的参考价值。

曼哈顿距离

曼哈顿距离和欧式距离一样是一种距离度量标准,不同的是它定义在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 ∣ \\sumw_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=1w_i&lt; \\sum^n_i=k+1w_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=1w_i&gt;\\sum^n_i=k+1w_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=1w_i&lt; \\sum^n_i=kw_i i=1k1wi<i=knwi并且 ∑ i = 1 k w i ≥ ∑ i = k + 1 n w i \\displaystyle \\sum^k_i=1w_i \\geq \\sum^n_i=k+1w_i i=1kwii=k+1n以上是关于最小化曼哈顿距离的主要内容,如果未能解决你的问题,请参考以下文章

最小化曼哈顿距离

如何找到两个平行矩形之间的最小出租车/曼哈顿距离?

曼哈顿最小生成树

HDU 4311 Meeting point-1(曼哈顿距离最小)

1108 距离之和最小V2

关于货仓选址问题的方法及证明(在数轴上找一点使得该点到所有其他点的距离之和最小)