优化锦标赛的括号

时间:2012-03-18 15:50:30

标签: c# algorithm tournament

我正在构建一个基于竞争者列表创建锦标赛的系统。

竞争者拥有的属性可能使他们无法与对方放在一起,如性别,体重,技能水平等。

在某些情况下,这变得相当复杂:

  • 竞争者可能会上升一个重量级,但永远不会下降
  • 性别可能在某个年龄段内混合。

将这些人放入最佳括号(例如,大小为4,8,16)的好方法是什么?没有尝试所有排列,是否有一个已知的算法?

1 个答案:

答案 0 :(得分:5)

这称为constraint satisfaction problem(CSP)。最简单且在许多情况下最有效的解决方法之一是使用回溯进行强力搜索。

在分配值时,可以遵循一些良好的启发式指南。

最小剩余值(MRV)启发式说明,在确定下一个要分配的括号中的哪个点时,选择可能分配给它的人数最少的那个。

最少约束值(LCV)启发式说明,在将某人分配到某个地点时,您应该选择排除最少选择的人。

AIMA在CSP上有一个很好的章节:http://aima.cs.berkeley.edu/newchap05.pdf