Ruby 给定一组人,其中每对都有一个值,如何找到总值最小的对的配置?

Ruby 给定一组人,其中每对都有一个值,如何找到总值最小的对的配置?,ruby,algorithm,grouping,combinatorics,np,Ruby,Algorithm,Grouping,Combinatorics,Np,它非常类似于,除了一个完整的无向图,而不是一个二部图 最愚蠢、最野蛮的解决方案是这样的: 获取所有可能的对配置 groups=people.composition(2).to_a.composition(people.size/2).to_a …多次拒绝包含同一个人的所有配置 groups.reject!{| group | group.flatte.uniq.size

它非常类似于,除了一个完整的无向图,而不是一个二部图

最愚蠢、最野蛮的解决方案是这样的:

  • 获取所有可能的对配置

    groups=people.composition(2).to_a.composition(people.size/2).to_a

  • …多次拒绝包含同一个人的所有配置

    groups.reject!{| group | group.flatte.uniq.size

  • 然后找到具有最小值的配置

    groups.min_by{| group | group.inject(0){| pair | value_for(pair)}

  • 是否对的分支定界解决方案进行了修改,以考虑到此处的Job和Person都是

    会不会有另一个更像我所说的组合数学问题

    如何在不损坏CPU的情况下获得最佳解决方案


    谢谢!

    这在多项式时间内是可能的。

    对不起,学究气,但如果每对人都有一个值,那么找到值最低的一对就很简单了——大概你只需要选择存储该值的结构?我猜你是指其他东西。@AndyJones我为我的含糊不清道歉。我不是我不是在寻找值最低的一对,我是在寻找总值最低的一对超集。假设你有10个人,我想找出5对可能的配置中哪一个产生的总值最低。谢谢你——我可能是唯一一个读到这篇文章而没有立即理解的人!