【问题标题】:A self selecting team自选团队
【发布时间】:2013-01-27 02:33:52
【问题描述】:

将从 1000 名申请者中组建一个由 100 名成员组成的团队。 每位申请者都可以选择他/她想成为队友的其他 99 名申请者。

每个可能的团队都会获得一个分数,以衡量其满足其成员的队友偏好的程度。如果 Lisa 在一个团队中,并且 Lisas 愿望清单上的 11 人也在团队中,则该团队为 Lisa 获得 11 分。所有成员的积分相加。任何可能的团队可以获得的理论最大值是 99*100。最小值为 0。

现在我们要找到得分最高的球队。试图通过计算每个可能组合的分数(≈10^140)来暴力破解这个问题不是一种选择。

是否有一种聪明的算法可以找到最佳答案的捷径,还是必须满足于找到一个好答案的算法?

【问题讨论】:

  • 一个有趣的问题。我确信有一些方法可以改进对 C(1000,100) 确定性解决方案的蛮力搜索,但我怀疑它们充其量只是几何改进。对于一个易于处理的解决方案,我认为您必须采用启发式方法。
  • 对我来说似乎是一个特征值问题。谷歌的“权力迭代”
  • 该客户项目现已启动。 Curatron Equation 是用于众包艺术策展过程的 Saas 平台。
  • 我最终做了一个简单的遗传算法,我从具有高“队友偏好”分数的成对或三胞胎申请者开始。

标签: algorithm combinations genetic-algorithm mathematical-optimization


【解决方案1】:

我认为,如果你能有效地解决这个问题,你就可以有效地解决http://en.wikipedia.org/wiki/Clique_problem - 在两个节点之间存在链接的情况下,将每个节点放在另一个节点想要使用的节点列表中。看看这篇文章,我想你会发现即使是保证好的近似值也很难找到,除非你的问题有一些特殊的结构。

【讨论】:

  • 好收获。我同意,这看起来很像 Clique 问题的一个实质性超集。鉴于 Clique 问题非常难以处理,我们可以相当肯定这个问题太难了(或者很可能,甚至更难)。因此,不太可能有一个易于处理的确定性解决方案。
【解决方案2】:

您可以尝试hill climbing 算法。从“受欢迎”的成员(最常被其他成员挑选)开始,然后逐步添加增加团队得分最多的新成员。不幸的是,这不能保证找到最佳解决方案,但它可能会找到好的解决方案。要改进您的解决方案,您可以尝试simulated annealing

【讨论】:

  • 如果我正确理解了这个问题,分数计算为 99(来自选择他的团队的人 - 因为他们都必须在他的名单上)+ 其他 99 个团队成员的总和团队中的愿望清单上的申请人。您已经知道理论上的最大团队得分,所以我不明白为什么您需要检查所有组合。遍历所有 1000 个团队以找到最佳分数应该是相对微不足道的。 1000 个团队 * 每个团队 100 名成员很容易解决。
  • Bob:有超过 1000 个团队。有1000!/900!团队(1000种挑选队员#1、999种挑选队员#2等)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-22
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-02
  • 2019-10-19
相关资源
最近更新 更多