【发布时间】:2013-12-13 20:29:19
【问题描述】:
给定一个有 n 个男孩和 n 个女孩的班级,其中女孩的成绩是 p1,...,pn,而男孩的成绩是 s1,...,sn,请找到一对女孩- 男孩以最小化夫妻成绩之间的平均差异的方式。 例如,如果 p1=30, p2=60, s1=50, s2=90,我们应该将女孩 #1 与男孩 #1(相差 20 分)配对,将女孩 #2 与男孩 #2 配对(相差 30 分),并且我们将得到 (30+20)/2 = 25 的最小平均差。
证明以下算法是最优的: 将成绩最低的女孩与成绩最低的男孩配对。然后将成绩第二低的女孩与成绩第二低的男孩配对,以此类推。
在我的解决方案中,我尝试使用贪心选择属性(表明存在一个最优解,其中某个元素在解中,然后使用归纳法证明所有元素都在最优解中):
令 A1
声明 - 存在一个最优解,其中包括 A1-B1 对(成绩最低的男孩与成绩最低的女孩配对)。
证明 - 通过矛盾假设该陈述是错误的。因此,没有最优解包含 A1-B1 作为一对。假设 A1-Bi (i>1) 和 B1-Aj (j>1) 是解中的对。我们知道 A1
提前致谢。
【问题讨论】:
-
"因此 S1 和 P1 之间的差异小于 Sj 和 P1 之间的差异..."。这是有缺陷的。如果
S=[1,10], P=[10,20],那么|S2-P1| < |S1-P1|。 -
如果这有帮助,您将在 L1 范数下最小化两个向量的差异:en.wikipedia.org/wiki/… 如果您在 math.stackexchange.com 上提出这个问题,您一定会得到一个快速的答案。跨度>
-
我同意马特的建议。我认为你会在 math.stackexchange 上得到更快的答案,而且这类问题的质量可能会更高。