zoukankan      html  css  js  c++  java
  • [原]证明两个集合的划分最小绝对值差问题

    总的 解空间的大小 是

    C(2n, n)/2  =  2n!/(n!*n!)/2

    从2n个元素中取出n个元素的组合数目,  又由于对称性 , 所以除以2

    例如: 1234 ---》 取出两个元素的组合:  12  13 14 23 24 34

    分成两个集合的可能性是: (12, 34), (13, 24), (14, 23)

    生成组合的程序:

    n = 4
    p = range(0, n)
    def get(seq, k):
        m = len(seq)
        print m, k
        if k == 0:
            return [[]]
        if m < k:
            return []
        res = []
        for i in get(seq[1:], k-1):
            res.append([seq[0]]+i)
        res += get(seq[1:], k)
        return res
    r = get(p, n/2)
    print r

    当n=1 时候:唯一的解

    当n=2时候: 可以元素按照 从小到大排序,  a1 <= a2 <= a3<= a4

    那么最优解决是: (a1,a4 )  (a2,a3)

    证明如下:

    (a1, a2) (a3, a4) 组合 的差值的绝对值最大, 因为对于任意的 2n个元素中取出n个元素,头n个元素之和最小, 最后n个元素之和最大, 差值绝对值自然最大

    又有如下

    (a1, a3), (a2, a4) |a1-a2+a3-a4| = |a1-a2|+|a3-a4| >= |a1+a4-(a2+a3)|

    所以(a1,a4), (a2,a3) 组合解最优


    证明n=3 的情况的约束条件




    作者:liyong748 发表于2012/5/12 11:09:10 原文链接
    阅读:190 评论:0 查看评论
  • 相关阅读:
    Mysql实战面试题
    初探Google Guava
    Spring IOC核心源码学习
    用3句话像老太太讲清楚什么是数据库
    matlab如何读入mat型的矩阵
    工作记忆数据处理
    功能连接
    奖励学习
    格兰杰因果关系及其在医学影像数据中的应用
    GC wm
  • 原文地址:https://www.cnblogs.com/liyonghelpme/p/4273579.html
Copyright © 2011-2022 走看看