四舍五入以使成对距离的误差之和最小


25

有关以下问题的复杂性的已知信息:

  • 给定:有理数。x1<x2<<xn
  • 输出:整数。y1y2yn
  • 目标:最小化其中
    1i<jne(i,j),
    e(i,j)=|(yjyi)(xjxi)|.

也就是说,我们希望将有理数四舍五入为整数,以使成对距离的误差之和最小。对于每对我们希望使舍入距离尽可能接近真实距离。y jy i x jx ii,jyjyixjxi


动机:无聊的地铁旅行和一张海报,以1分钟的行进时间分辨率显示车站的“位置”。在这里,我们将人们使用海报查看站点和之间的行驶时间所产生的误差最小化,将所有对平均值。Ĵ < Ĵiji<j

路线地图

(资源)

例如,在这里我们可以读取以下四个站点之间的成对距离的近似值(为简便起见,使用A,B,C,D):

  • A–B≈1分钟,B–C≈2分钟,C–D≈2分钟
  • A–C≈3分钟,B–D≈4分钟
  • A–D≈5分钟

这是最好的近似值吗?如果您知道实际的旅行时间,是否可以找到更好的解决方案?


最初,这听起来像是动态编程中的简单练习,但是现在看来,需要一些实际的思考。

有谁认识到这个问题?还是看到一个解决问题的聪明算法?


编辑:在评论中已经提到了该问题的一些自然变体;让我们给他们起一些名字:

  • 地板/天花板版本:对于所有要求。yi{xi,xi}i

  • 整数版本:对于所有,就足够了。yiZi

  • 单调版本:要求。y1y2yn

  • 非单调版本:对于我们可以有。 i < jyi>yji<j

最初的问题考虑的是单调整数版本,但欢迎提供与这些版本中的任何一个相关的答案。


当您只关心相邻测量时,DP是否适合这种情况?
Suresh Venkat 2012年

1
@SureshVenkat:实际上,在这种情况下,问题变得非常简单:您只需为每个选择最佳积分距离。也就是说,您可以独立地最小化每个。 i e i 1 i yiyi1ie(i1,i)
Jukka Suomela 2012年

4
Estie Arkin的这份报告似乎是相关的:ams.sunysb.edu/~estie/papers/beautification.pdf 已经证明,将输出中不同点间距离的数量最小化是NP难题。这不是此问题中的总位移,但报告中的硬度小工具可能表明该问题的硬度证明。
2012年

2
我有种感觉,使用众所周知的技术当然可以解决这个问题。让我们看看赏金是否足以激发人们解决这个问题。:)
Jukka Suomela 2012年

1
@vzn:我对这个问题的计算复杂性感兴趣。如果可以证明有多项式时间局部搜索方法可以确保找到全局最优值,那么赏金就是您的。
Jukka Suomela 2012年

Answers:


9

好。DP算法似乎不必要地复杂。阅读评论后,我认为这可能会解决问题的单调版本(但我尚未检查所有细节)。

首先,假设各,其中X 是不可或缺的一部分,{ X }是小数部分。假设X 被四舍五入为X + v ,其中v 是一个非负整数(当然在一般的v 可以是负的,但我们可以总是移动,使得最小的v 是0)。xi=xi+{xi}xi{xi}xixi+vivivivi

现在,在进行四舍五入时考虑对x j的成本。费用应该是xixj

||vivj+xixj||{xi}{xj}+xixj||

由于绝对值,表达式很复杂。但是,请注意,我们具有单调性,因此两个内部绝对值内部的事物应具有SAME符号。由于我们有一个外部绝对值,因此该符号实际上并不重要,该表达式可以简化为

|vivj({xi}{xj})|

从现在开始,我们不假定解决方案是单调的,而是改为更改目标,以使所有对的上述总和最小。如果此问题的解决方案恰好是单调的,那么它当然也是单调版本的最佳解决方案。(以此类推:当解决方案不是单调时,原始问题的惩罚是无限的,新问题的惩罚是较小的,如果单调解决方案即使在新版本中获胜,也必须是单调版本的解决方案)

现在,我们想证明,如果,在最佳的解决方案,我们必须有v v Ĵ{xi}>{xj}vivj

假设这是不正确的,我们有一对但是v i < v j。我们将证明,如果交换v i v j,则解决方案将变得更好。{xi}>{xj}vi<vjvi vj

首先我们比较一下j之间的项,在这里很明显交换是严格更好的,因为在非交换版本中,v iv j{ x j } { x i }具有相同的符号,即绝对值将是两个绝对值的总和。ijvivj{xj}{xi}

现在对于任何,我们比较i k j k 对的总和。也就是说,我们需要比较k(i,k)(j,k)

| v jv k{ x i } { x k } | + ||vivk({xi}{xk})|+|vjvk({xj}{xk})||vjvk({xi}{xk})|+|vivk({xj}{xk})|

使用Çd来表示的绝对值内的四个术语,很显然,+ = Ç + d。也很明显,| A B | | C D | 。通过绝对值的凸度,我们知道| A | + | B | | C | + | D | 。取所有x k的总和ABCDA+B=C+D|AB||CD||A|+|B||C|+|D|xk是的,我们知道交换只会更好。

请注意,现在我们已经有了单调地板/天花板版本的解决方案:必须有一个阈值,当较大时,总是向上舍入;当{ x i }较小时,总是向下舍入;当相等时,向上舍入某些值。下来,而解决方案的质量仅取决于数量。我们列举了所有这些解决方案,并选择了目标函数最小的解决方案。(所有这些解决方案都必须是单调的)。{xi}

最后,我们想转到问题的单调整数版本。实际上,我们可以证明最佳解决方案与单调地板/天花板版本相同。

vixivik v i > k v i = v i1 | { x i } { x j } | < 10,1,2,...,max{vi}kvi>kvi=vi1|{xi}{xj}|<1

现在我们将证明,平均的在组至少是平均的在组加。如果不是这样,则对于所有,简单地让,计算再次表明目标函数得到了改善。ķ + 1 { X } ķ 1 / 2 v = v - 1 v > ķ{xi}k+1{xi}k1/2vi=vi1vi>k

由于的平均值在范围内,所以实际上最多有两个组,它们对应于下限/上限版本。[ 0 1 {xi}[0,1)


1

只是一个扩展的评论……(也许是微不足道的和/或错误的:)

如果且是的最小公倍数,那么我们可以摆脱有理数:。中号b X ' = 中号* X xi=ai/biMbixi=Mxi

如果(地板,天花板限制),那么我们可以使用二进制变量来表达,即它与距离(或):v ý ' Xyi{xi,xi}viyi大号=X ' -中号*Xř=X ' -中号*XxiLi=xiMxiRi=xiMxi

yi=xi+Livi+Ri(1vi)=xi+(LiRi)vi+Ri=xi+Divi+Ri

原始问题(?!?)应该等同于找到最小化的:vi

1i<jn|DiviDjvj|

vi{0,1},DiZ


使用上面的误差fn想法扩展最后的求和,是否可以证明最优实际上只是每个二进制变量下限/上限接近?因此,只剩下如何以的形式舍入的情况,其中是整数。x n x n m n + 1e(i,j)xnxnmn+12m
vzn 2012年

1
@vzn:我认为这是一个反例。如果我们轮使用舍入标准,我们得到,其具有的误差,但具有的误差(结果是相同的,如果我们消除了用LCM乘以的合理性)。(0,1.4,8.7)0 1 9 1.4 0 2 9 1.2xi(0,1,9)1.4(0,2,9)1.2
Marzio De Biasi 2012年

好的,但是有新主意。再次考虑。扩展总和。它会用和减少到许多项。但是后者等于!因此,它以最小化的形式减少了一个问题,其中是0/1 行向量,是常数列向量。真正?那么这是微不足道的,只要选择,如果的对应元素为负,则为1,如果为正,则为0 .... QED?v i v 2e(i,j)vi viX*DXDXDvi2viXDXDXD
vzn

1
@vzn:如果您使用错误来消除绝对值函数,则您将获得 ; 您如何在最小化中处理它们? - 2 * d * d Ĵ * v * v Ĵ((yiyj)(xixj))22DiDjvivj
Marzio De Biasi 2012年

哎呀!您在意识到之后才​​有机会删除该评论之前回答了..无论如何,它似乎仍然可以归结为一些几乎线性的矩阵优化问题?也有项其中是列向量...? VVVTV
vzn

1

另一个扩展的评论...可能是错误的。

我也在考虑底线/底线限制的情况,并且我尝试使用动态编程来解决(我不能,但是当公共除数很小时,它可以工作)。

让是小数部分,我们考虑从最小的事情到最大。假设最大的是,并且因为我们正在进行动态编程,所以我们已经知道除以外的其他所有问题的最佳解决方案的“知识”(我将解释这是什么)。x i { x i } { x k } x k{xi}xi{xi}{xk}xk

现在考虑向上或向下舍入时目标函数的差异。如果最初将一些进行了四舍五入,则其差值只是1(实际上并没有非常仔细地检查,但似乎是这种情况,无论是位于的左侧还是右侧,差值都是非常重要的)总是一样);如果最初将向下舍入,则差为。因此:如果知道以下三个数量,我们知道应该做出什么决定:xkx i x k x i 2 { x k } 2 { x i } 1xixixkxi2{xk}2{xi}1

  1. 四舍五入
  2. 四舍五入
  3. 什么是总和那些之中的是四舍五入x i{xi}xi

OK,1和2基本相同,我们可以让f [N,Ndown,Sdown]为前N个点的最佳解(当点以升序排序时),向下舍入的为Ndown,向下舍入的x的和为Sdown。因此,不难写出如何从f [N-1]转换为f [N]。x i {{xi}xi{xi}

问题当然在于,Sdown可以具有成倍的指数值。但是它在公共除数很小的情况下有效,或者我们可以首先将所有内容四舍五入到网格点并获得FPTAS(如果上述动态程序正确...)


刚刚注意到@Marzio De Biasi的评论。考虑使用该目标函数的动态编程要容易得多。由于我们本质上是根据排序,因此当我们尝试考虑最后一个时,所有绝对值都会消失。附加成本为或。D i v iN 1 D kD i v iDiDivi(N1)DkDivi
戎革

OK不必肯定。但这也可以解决。我们只需要告诉和。Ndown是以前的数目的是等于0,N up个是以前的数目的等于1| D i v i | N d o w n |Di|Divi|v Ĵ v ĴNdown|Dk|+NupDkDivivjvj
肜咯

这看起来很有希望,但是我认为如果输入值彼此之间太接近,则会遇到更多的困难。考虑例如和。现在,如果我们可以对四舍五入,而对四舍五入,则不再具有根据是向上舍入还是向下舍入而使误差精确地改变1的好属性。另一方面,如果我们禁止舍入而改变点的顺序(就像我在原始问题中一样),那么似乎我们需要跟踪动态程序中仍然可用的舍入;我们能做到吗?x k = 1.9 x i x k x kxi=1.1xk=1.9xixkxk
Jukka Suomela 2012年

1
@Jukka Suomela,看到您的评论后,我意识到我们绝不应该舍弃东西,而舍弃小的东西。如果您检查所有情况,就可以证明这一点。然后,问题的答案(具有舍入限制)就很清楚了:必须有一个阈值,高于该阈值应向上舍入,低于该阈值则应舍入,在该阈值下也许应向上舍入并降低一些,但仅是质量取决于数量。这些解决方案很容易列举。{ x i }{xi}{xi}
戎阁

1
通过检查所有我所指的情况,假设,想到由和划分的三个区域之一中的另一个,并且向上或向下取整。在所有6种情况下,将向下舍入和向上舍入都不比将向下舍入和向上舍入更差。{ x k } { x i } { x j } { x k } x i x j x j x i{xi}<{xj}{xk}{xi}{xj}{xk}xixjxjxi
戎阁
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.