我的问题:我想做一个“善意”的彩票流程。如果可能,此算法将均匀分配奖品。这对于购买每张奖品的人来说可能被认为是不公平的,因为他会更灵活地赢得不受欢迎的奖品,但更别提,我们可以说奖品大致相同。该算法将有助于消除差异并减少dicerolling以赢取奖品。 (是的,无聊的)
我将参加N
比赛,你可以赢得奖品。人员M
可以为每N
个人购买一张票。
举个例子,这里有奖品和买票的人:
Prize1=[Pete,Kim, Jim]
Prize2=[Jim, Kim]
Prize3=[Roger, Kim]
Prize4=[Jim]
有4个奖项和4个唯一名称,因此应该可以均匀分配。
示例可能很容易解决,您应该在15秒内找到它,但是当M
和N
增加时,它会变得更糟。
我正在尝试制作一般算法,但这很难。我需要一些好的提示,甚至更好的解决方案或链接到解决方案。
答案 0 :(得分:1)
理论:你有Bipartite graph。你必须找到Perfect matching。在以下情况下,图表中存在完美匹配:
如果存在完美匹配,您可以运行Hungarian algorithm来查找它。
答案 1 :(得分:0)
您希望查找作业分配算法或匈牙利算法,例如二分图中的加权完美匹配,或者可能是全对Floyd Warshall算法。我的想法是,这可以表示为二分图。这不是一个容易解决的任务。