【问题标题】:Minimizing the Sum of Square of Distances on a straight line最小化直线上的距离平方和
【发布时间】:2017-07-21 06:11:18
【问题描述】:

一共有 n 栋公寓楼即将在一条新街道上建成。邮政服务想在街上放置一个邮箱。他们的目标是最大程度地减少居民每天领取邮件所需步行的总距离。

建筑物 i 有 r[i] 个住户,距离 d[i] 街道。设计一种算法,计算从街道起点到邮箱的距离 m,以最小化居民前往邮箱的总距离平方。

我的计划是根据与街道起点的距离对建筑物进行分类。然后,求居民总数并计算中位数。然后将邮箱放置在与居民中位数相对应的建筑物中。是不是正确的解决方法?

【问题讨论】:

  • 没有。拿一张方格纸并标记 x 和 y 轴。将邮箱放在街道的尽头。计算居民必须步行到邮箱的总(加权)平方和。在你的方格纸上标记一个点(0,y(0))。将邮箱移动十分之一距离到街道的另一端。在图表上标记(0.1,y(0.1)) 的一个点。一直重复到街道的另一端。你刚刚画了一条有点像抛物线的曲线。你的任务是找到x 的值,它使y 最小化。
  • 如何根据r[i]^2 * d[i]^2 的值进行排序,因为这是目标最小值,然后选择该数组的中值?简而言之,您希望最小化看起来的加权平方距离

标签: algorithm


【解决方案1】:

你想最小化:

sum(r[i](m-d[i])^2)

要解决这个问题,请对 m 进行微分:

sum( 2.r[i].(m-d[i]) )

要找到最小值,请将导数设置为 0:

0 = sum( 2.r[i].(m-d[i]) )
m.sum(r[i]) = sum(r[i].d[i])
m = sum(r[i].d[i]) / sum(r[i])

即m 是距离的加权平均值。

(如果你想最小化绝对距离的总和,那么答案将由中位数代替。)

【讨论】:

    猜你喜欢
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 2013-12-12
    • 2011-10-16
    • 1970-01-01
    相关资源
    最近更新 更多