【问题标题】:Understanding Cormen post office location solution了解Cormen邮局定位解决方案
【发布时间】:2012-07-21 15:13:14
【问题描述】:

Cormen 的《算法简介》一书在第 9 章中有一个问题邮局位置问题

给定 n 个点 p1,p2,...pn,权重为 w1,w2,....wn。找到一个点 p(不一定是输入点之一),它使总和 wi*d(pi,p) 最小化,其中 d(a,b) = 点 a,b 之间的距离。

查看相同的解决方案,我知道加权中位数将是解决此问题的最佳解决方案。

但是我对实际的编码部分和用法有一些基本的怀疑。

  • 如果所有元素的权重相等,那么要找到加权中位数,我们会找到所有权重总和

  • 给定一个真实场景,将要在各个房屋投递的信件数量作为权重,我们希望通过找到邮局的位置来最小化要行驶的距离,x 坐标给定(假设所有房子是一维的),我们实际上该怎么做?

有人可以帮助我消除疑虑并理解问题。

编辑:

我也在考虑一个非常相似的问题:有一个矩形网格(2d),不同地方的人数不同,都想在1点见面(肯定有整数坐标),那么会有什么区别从上面的问题,我们将如何解决它?

【问题讨论】:

  • 应该是d(pi, p),而不是d(pi, pj),不是吗?
  • 是的,很抱歉打错了。

标签: algorithm median


【解决方案1】:

您仍然想要权重总和为 1/2 的点。选择任意一点,并考虑从那里向左移动一个点还是向右移动一个点会更好。如果您向左移动一个点,您将与左侧所有点的距离减少 1,并将与右侧所有点的距离增加 1。输赢取决于左侧权重之和和右侧权重之和。如果权重的总和不是 1/2,您可以通过向权重 > 1/2 的方向移动来做得更好,所以唯一不能通过选择另一个来做得更好的点是权重为 1/2 的点- 或者,更准确地说,两侧的权重都

要使 1/2 成为正确答案,权重的总和必须为 1,因此如果您从作为字母数量的权重开始,则必须将它们除以字母的总数才能使它们总和为一。当然,除非您必须为要递送的每封信进行单独的旅行,否则此惩罚函数实际上没有意义,但我假设我们应该忽略这一点。

编辑

对于不止一个维度,您几乎最终会直接解决最小化距离加权和的问题。维基百科在http://en.wikipedia.org/wiki/Geometric_median 中对此进行了描述。你想考虑权重,但这并不会使问题复杂化。一种方法是http://en.wikipedia.org/wiki/Iteratively_reweighted_least_squares。不幸的是,这并不能保证它找到的解决方案将在一个网格点上,或者离解决方案最近的网格点将是最佳网格点。这可能不会太糟糕,但在所有可能的情况下找到最好的网格点可能会比较棘手。

【讨论】:

  • 我假设您的意思是权重总和为 (1/2)*(权重总和) 的点,对吧?
  • 是的。我有这本书的第 1 版,在似乎是相应的问题 10-2 中,它在一开始就说权重是正数的总和为 1。因此,如果权重总和不为 1,您将不得不通过将所有内容除以总和来对它们进行归一化。
  • 好的,您能否对我的问题的进一步编辑发表评论?
  • OK - 答案已编辑 - 不过,将答案限制在网格点可能是个问题。感觉应该不会太糟糕,因为问题是凸的,但它可能是,除非某处有一个聪明的把戏。
  • 感谢您的解释,如果您已经看到了简单加权中位数练习的解决方案,您能否还解释一下为什么不简单地找到权重总和为 1/2 的点而不是首先找到中位数然后试图得到权重总和为 1/2 的点?
【解决方案2】:

编辑:这个答案是错误的,见 cmets

您要查找的内容称为center of mass(TMHO 加权中位数是一维的质心)。

第一个问题我没给你,你能详细说一下吗?

对于您的示例,我们将计算与该职位相关联的每个办公室的信件数量加权的平均职位。这将给我们:x_center = sum(x_i * w_i) / sum(w_i) 和 y_center = sum(y_i * w_i) / sum(w_i)。

它是否正确回答了您的问题?

【讨论】:

  • 不,它没有。考虑以下场景:房屋 A 在 x = 1 ,字母 = 99 ,房屋 B 在 x = 1000 ,字母 = 1 (考虑没有字母作为重量),我们通过使用质心得到 x_center = 1*99 + 1000* 1/100 = 10.99 ,导致总距离更长,而不是邮局位于 x=1 的情况下,总距离 = 999。
  • 有趣的一点,...我正在考虑,但没有直接的答案。
  • 质心g最小化sum(w_i d(p_i, g)^2)
  • 我说的没有定义质心,你定义的是一个最佳距离点,这应该是质心的属性,而不是定义。
  • 最小平方距离表征实际上更通用,当您需要非向量空间设置中的质心时(即,您无法对点求和)时,它可以用作定义。此外,它有一个简单的物理解释:它是固体总惯性最小的点。无论如何,它与这里要求的(加权中位数)非常不同。
猜你喜欢
  • 1970-01-01
  • 2022-10-31
  • 2021-01-14
  • 2023-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多