在选举中对响应者的顺序进行排序的算法

时间:2017-06-05 12:40:52

标签: algorithm

对于我们当地的选举,观众中的某个人会问一个问题然后候选人轮流接听它。主持人决定候选人应该为每个问题回答哪个顺序。

可能会有5名候选人参加竞选,但最多可以是7人或少至4人。

主持人希望为候选人提供最公平的回答问题的顺序,以便一名候选人不会比其他候选人更频繁地回答或更频繁地回答。此外,他希望候选人在彼此之前和之后以大致平等的方式进行交谈。

(我已经为每个候选人分配了A - E之间的一封信,然后候选人将在晚上从帽子中抽出来选择他们的信。)

所以,例如:

  • ABCDE后跟ADCBE会很糟糕,因为A开始,E完成两次。
  • ABCDE后面跟ABECD会很糟糕,因为B跟随A,D跟随C两次。
  • ABCDE后跟DCEBA将满足所有要求。

问题的数量是可变的 - 可以是4到15之间的任何地方。

主持人想要一个可重复的过程,必要时可以由选举委员会审计,以确定选择过程是公平的。这排除了我的初始方法"生成一个随机列表,然后手动编辑它#34;。性能并不重要 - 在具有16GB RAM的四核机器上运行可能需要长达10分钟。

到目前为止,我已经尝试过:

  • 只是生成一个随机列表。这往往会在约束条件下失败 - 如果我继续运行它,直到我得到一个感觉正确的列表,它就会失败“可重现的”。要求。
  • 以递归方式为所有组合调用levenshtein算法,并获取总分最高的组合。但是由于有这么多可能的组合,所以不可能尝试所有这些组合。它也没有产生很好的效果 - 它让很多B连续3次跟随A'类型问题。

我意识到我可能过度设计了解决方案,但如果需要坚如磐石,我对如何解决这个问题感兴趣。

1 个答案:

答案 0 :(得分:1)

非常好的问题,让我思考10分钟才能找到解决方案。

我有一个方法,我想在这里讨论。

因此,让我们举一个例子来了解我的想法。

function ReloadPage() {
setTimeout(function(){
 location.reload();
},0);
}

据我所知,这一流程可以更平等地分配回答问题的机会。

这个算法可能是一个起点,我们可以更新它的某些部分来随机选择指针或字符串等。

希望这有帮助!