Algorithm 最大化集合中元素之间的最小差异
我最近想到了这个问题,我想到了一个“本能的”贪婪的解决方案,但我无法证明它的最优性 给定N个整数,V1,V2,…,VN和K集(KAlgorithm 最大化集合中元素之间的最小差异,algorithm,partitioning,greedy,Algorithm,Partitioning,Greedy,我最近想到了这个问题,我想到了一个“本能的”贪婪的解决方案,但我无法证明它的最优性 给定N个整数,V1,V2,…,VN和K集(K
谢谢。是的,这是最好的。我们将显示,如果使用您的过程出现差异D,那么对于任何数字排列,在同一集中有一对数字,它们的差异最大为D 为了证明这一点,考虑将分类数逐个加在K集上。让我们把排序后的数字称为x[i]。假设我们将x[n]加到其中一个集合中。该集合中的最大值是x[n-k],对于某些D,x[n]-x[n-k]=D 现在,集合x[n-k],x[n-k+1],…,x[n]是k+1个数的集合,所有这些数彼此之间最多相差D(对于x[n]-x[n-k]=D) 根据鸽子洞原理,无论您如何排列,这些k+1数字中的两个必须落在同一组中,因此最大最小距离必须最多为D 这证明,如果在您的过程中出现距离D,则可达到的最大最小距离最多为D
让D_min是使用您的过程的同一集合中两个数字之间的最小差值。然后我们证明了,可以达到的最大最小距离是,例如,在1,2,3,101,102,103和3个集合中,我们可以如下划分:{1,101},{2,102},{3,103},所以答案是100。