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