找到最低的平均等级差异

时间:2013-12-13 20:29:19

标签: algorithm greedy

考虑到一个有n个男孩和n个女孩的班级,其中女孩们收到了成绩p1,...,pn,并且男孩们在考试中收到了成绩s1,...,sn,找到了一对女孩-boy以最小化夫妻成绩之间的平均差异的方式。 例如,如果p1 = 30,p2 = 60,s1 = 50,s2 = 90,我们应该将女孩#1与男孩#1(20分差异)和女孩#2与男孩#2(30分差异)配对,并且我们将获得(30 + 20)/ 2 = 25的最小平均差异。

证明以下算法是最佳的: 将成绩最低的女孩与成绩最低的男孩配对。然后将第二低等级的女孩与第二低等级的男孩配对,等等。


在我的解决方案中,我尝试使用贪婪的选择属性(显示存在一个最佳解决方案,其中某个元素在解决方案中,然后使用归纳来证明所有元素都在最佳解决方案中):

让A1< = ...< =一个女孩的成绩排序,B1< = ...< = Bn是男孩的成绩排序。

声明 - 存在一个最佳解决方案,其中包括A1-B1对(成绩最低的男孩与成绩最低的女孩配对)。

证明 - 假设该陈述是错误的。因此,没有最佳解决方案包括A1-B1作为一对。假设A1-Bi(i> 1)和B1-Aj(j> 1)在溶液中是成对的。我们知道A1< = Aj和B1< = Bi。我如何从这里继续?

提前致谢。

4 个答案:

答案 0 :(得分:2)

好的,我根据一些几何观察发现了一些东西 假设您现在只有4个数字:a1< = a2和b1< = b2(0)。

| A1-B1 | + | a2-b2 | < = | a1-b2 | + | a2-b1 | (1)

在这种情况下,我们想检查(1)是否为真。

我基于明显的等价关系重写(1):

(| a1-b1 | + | a2-b2 |)^ 2< =(| a1-b2 | + | a2-b1 |)^ 2(2)

-2 * a1 * b1 -2 * a2 * b2< = -2 * a1 * b2 -2 * a2 * b1(3)

我应该解释一下我从(2)到(3)的方式吗?我猜不是。

然后我们得到:

a1 * b1 + a2 * b2> = a1 * b2 + a2 * b1(4)

a1(b1-b2)> = a2 *(b1-b2)(5)

a1(b1-b2) - a2 *(b1-b2)> = 0(6)

a1(b1-b2)+ a2 *(b2-b1)> = 0(7)

但是(5)显然是正确的,因为b1-b2 <= 0且a1 <= a2(见(0))。

这是N = 2的严格证据。

我的直觉告诉我,这应该以某种方式推广 很容易就N的情况而言。也许我们可以尝试一下 从这里诱导(见过这些(1),(2),(3)等)。


在几何学上,你可以想象艾和Bj作为分数 在两个平行的数字线x(轴A,轴B)上。一个 配对配置通过连接配对来定义 A和B中的点与段。你的陈述基本上是 说最佳配对是没有两个的配对 段(Ai,Bj)彼此交叉(它们可以与
重叠 彼此/在最佳解决方案/但可能不相互交叉) 右?

现在,如果我们做同样的事情(我为N = 2做了),
对于任何N,你会得到这个问题:“是 a1(b1-bi1)+ a2(b2-bi2)+ a3(b3-bi3)+ ... + aN *(bN-biN)&gt; = 0(4')
true“,其中i1,i2,...,iN是(1,2,...,N)的任何排列,
并给出每个i的[i]&lt; = a [i + 1]和b [i]&lt; = b [i + 1]。

现在,我们在N上进行归纳以证明(4') 假设(4')对于N和对于所有K都是正确的,使得K (相反的情况类似)。所以现在as1 = aN + 1和bs2 = bN + 1,
但是s1和s2是新排序序列中的真实指数
但现在证明(4')N + 1成为一个问题 证明它为N = 2,因为只有这些术语(来自(4'))
当我们从N到N + 1的步骤时,这一点很重要。

as1 *(bs1 - bs2)+ as2 *(bs2 - bs1)&gt; = 0(7')
正如我们所看到的,N = 2是正确的(见上文(7))。

对于其他N-1项(从(4')继续),我们得到了 不平等(4')是真实的,因为归纳的假设(它是
适用于N-1)。因此,根据2和N-1的真相,我们得到了N + 1的真相 希望你能理解我是怎么做到的。在纸面上它更容易 写它,很难写在这里。

因此,这应该是您对N案件的严格证明

答案 1 :(得分:0)

行。说我们有:

P1&LT = P2&LT = ...&LT =光合速率, 和 S1和S2 = S2&LT = ...&LT; = Sn的

我们假设这个陈述不正确, 还有另一个最佳解决方案。 这意味着我们假设P1与Sk配对,其中k> 1在该解决方案中。

现在让我们来看看与S1配对的Pj(如果你画的是 它作为图形,这两条线P1-Sk和Pj-S1将相互交叉。)

所以我对前两行相互交叉感兴趣。

现在想想如果我们采用相同的配置但我们会改变会发生什么 通过将P1与S1配对,将Pj与Sk配对。总和将减少 (如果P1 = Pj或S1 = Sk,它可以保持不变。)

例:
1 3 5 7 100 150
2 4 6 8 120 120

但如果它保持不变,我们可以在两个序列中继续前进。

事实证明,我们的最佳解决方案并非最佳。 这是矛盾的,所以我们的假设是不正确的。

注1:实际上在我的证明中,我应该说不是P1, 但是具有最小m的Pm,使得Pm不与Sm配对 但是对于某些Sk,其中k> m。 为了简单起见,我在这里说P1。

注2:证明这一部分:
“现在想想如果采用相同的配置会发生什么 相反,我们将P1与S1和Pj与Sk配对。总和将减少。“ 试想如果你只有4个数字会发生什么 P1&lt; = P2
S1 <= S2

然后你应该配对他们:P1-S1和P2-S2或交叉像 P1-S2和S1-P2。这里需要解决几个不同的情况
1 1(夫妇1 - 相等的数字)
2 2(情侣2 - 也是相同的数字)

1 3(不同的数字)
2 2(相等数字)

1 5(不同的数字)
2 10(不同的数字)

注3:好的,我认为一些边界案例和细节应该是 得到解决:)但基本上这个想法应该有效

答案 2 :(得分:0)

Observe that: 
- no matter how you arrange the pairs, the sums of each set will be constant, and so will be the difference between the two sums. 
- the 'sum of differences' can only be equal or greater than the 'difference of sums'

那么是什么使得“差异总和”大于“总和差异”?

This is how I would structure the proof:
1) what you want to prove is that sorting minimizes the cases that make the 'sum of differences' greater.
2) what can make the 'sum of differences' greater than the 'difference of sums' are the pairs where the size relation is opposite to the size relation of the sums. For example, if in your sample the sum of all the P grades is greater than the sum of all the S grades (sumP > sumS), any pair where p < s.
3) Now, all you have to prove is that any non-sorted arrangement can only make things worse.

(Forgive the absence of proper math language and depth, I have an excuse for the first though, I'm new to SO and still trying to master the editor)

答案 3 :(得分:0)

您正在尝试找到最小的平均差异。那么什么是平均差异:1 / n *((p1-s1)+(p2-s2)+ ... +(pn-sn))它是1 / n *((p1 + p2 + .. + pn) - (s1 + s2 + .. + sn))似乎不依赖于排序。那么你可以对它进行排序和配对,它将具有最小的平均距离以及任何其他排序。