带权中位数定义如下:
邮局位置问题定义如下:
上一篇文章输油管道问题里面证明了,当权值Wi都为1的时候,中位数就是最佳的解。但是,现在Wi已经不一定是1了。所以,现在
需要证明在任意Wi的取值情况下,带权中位数能够成为邮局位置的最佳解。假设,所有Wi都是1的倍数,如果是小数的话,可以所有的
Wi都乘以一定的倍数。那么wi*d(p,pi) =
Σ(p,pi)(i从1到wi),这个意思是把距离乘以了wi倍。
但是,现在可以换一种看法,换成了pi位置有wi个重合的点,且每一个点的权值都是1,那么其和也是wi*d(p,pi)。那么对所有的pi
都这样分解,就把问题重新转换成了输油管道问题了。输油管道问题的最优解就是中位数,那么邮局问题的最优解就是转换之后的
这些点的中位数点。而这个点一定存在于带权中位数那个点分解出的一堆点中。
二维邮局问题的解法是把x和y分开求2次一维邮局问题,然后把解组和起来,得到答案。
求带权中位数的算法比较简单,直接的做法是,先把n个点按照位置排序,然后按点的位置从小到大遍历,找到满足要求的点即可。
不算排序点位置的预处理,因为很多时候点应该就是按顺序给出的,所以其时间复杂度是O(n)。
要求: