将从1000名申请者中组建一个由100名成员组成的团队。每个申请者都可以选择他/她希望成为队友的99个其他申请者。
每个可能的团队都会得到一个分数,用来衡量它满足其成员的队友偏好的程度。如果Lisa在一个团队中,Lisas wishlist上的11个人也在这个团队中,那么这个团队会为Lisa得到11分。所有成员的积分都加起来了。理论上,任何可能的团队可以获得的最大值是99*100。最小值为0。
现在我们要找到得分最高的队伍。试图通过计算每个可能的组合(≈10^140)的分数来强行解决这个问题是不可行的。
有没有一种聪明的算法可以找到通向最佳答案的捷径,还是只能满足于找到好答案的算法?
发布于 2013-02-12 06:36:11
您可以尝试hill climbing算法。从“受欢迎”的成员开始(最常由其他成员挑选),逐步添加提高团队分数最多的新成员。不幸的是,这并不能保证找到最好的解决方案,但它可能会找到好的解决方案。要改进您的解决方案,您可以尝试simulated annealing。
https://stackoverflow.com/questions/14821495
复制相似问题