用于均匀分配"奖品的算法" /没有差异抽奖

时间:2011-04-02 01:56:38

标签: php algorithm graph distribution

我的问题:我想做一个“善意”的彩票流程。如果可能,此算法将均匀分配奖品。这对于购买每张奖品的人来说可能被认为是不公平的,因为他会更灵活地赢得不受欢迎的奖品,但更别提,我们可以说奖品大致相同。该算法将有助于消除差异并减少dicerolling以赢取奖品。 (是的,无聊的)

我将参加N比赛,你可以赢得奖品。人员M可以为每N个人购买一张票。

举个例子,这里有奖品和买票的人:

Prize1=[Pete,Kim, Jim]
Prize2=[Jim, Kim]
Prize3=[Roger, Kim]
Prize4=[Jim]

有4个奖项和4个唯一名称,因此应该可以均匀分配。

示例可能很容易解决,您应该在15秒内找到它,但是当MN增加时,它会变得更糟。

我正在尝试制作一般算法,但这很难。我需要一些好的提示,甚至更好的解决方案或链接到解决方案。

2 个答案:

答案 0 :(得分:1)

理论:你有Bipartite graph。你必须找到Perfect matching。在以下情况下,图表中存在完美匹配:

如果存在完美匹配,您可以运行Hungarian algorithm来查找它。

答案 1 :(得分:0)

您希望查找作业分配算法或匈牙利算法,例如二分图中的加权完美匹配,或者可能是全对Floyd Warshall算法。我的想法是,这可以表示为二分图。这不是一个容易解决的任务。