2011-04-02 8 views
3

私の問題:私は「優しい」宝くじプロセスを作りたいと思っています。このアルゴリズムは、可能であれば賞品を均等に配付する。これは、不評の賞品を獲得するために柔軟性があるので、すべての賞品を購入する人々にとって不公平だと考えられますが、賞品はほぼ同じであるとは言い切れません。このアルゴリズムは分散を殺し、ダイスロールを減らして賞品を獲得するのに役立ちます。 (うん、退屈)「賞品」/無差別宝くじを均等に配付するアルゴリズム

私はNあなたは賞を獲得することができました。人Mは、Nごとにチケットを購入できます。

ですから、例えば、ここでチケットを購入した賞品や人々です:

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

が4つの賞と4つのユニークな名前がありますので、均等に配布することが可能です。

この例は簡単に解決できるかもしれませんが、15秒後に見つかるはずですが、MNが増えればそれはさらに悪化します。

私は一般的なアルゴリズムを作ろうとしていますが、それは難しいです。私はいくつかの良いヒントを必要とするか、ソリューションやソリューションへのリンクをより良くする必要があります。

+0

あなたが探している言葉は「価格」ではなく、「賞」です。ちょうどあなたが知っています。私を少し混乱させた。 – Phoenix

+0

どのように賞品を配布するのですか? – quasiverse

+0

賞品を授与することで、誰もがx賞を獲得することが保証されるので、残りは無作為抽選で配らなければなりません。 –

答えて

0

ジョブ割り当てアルゴリズム、またはハンガリーのアルゴリズム、たとえば2部グラフの重み付き完全一致、またはすべてのペアfloyd warshallアルゴリズムを探したいとします。私の考えは、これは二部グラフとして表現できるということです。これは解決しやすい課題ではありません。

+0

ありがとう、私はあなたに同意する、私は吸い込んだbrute force sollutionを思いついた。効率的なCPUが私たちを馬鹿にしている:D –

1

理論:あなたはBipartite graphです。あなたはPerfect matchingを見つけなければなりません。グラフに完全一致がある場合:

完璧なマッチングが存在する場合、あなたはそれを見つけるためにHungarian algorithmを実行することができます。

+0

助けてくれてありがとう。私は解決策への道を強制的に強制的に終わった。 Webサーバーは高速で、mとnはそれほど大きくはありません:)解決策は非常に悪いです。私の判断基準に合うまで、ランダムな数値で爆撃しています。私は時間があるとプログラムを改善します:-) –

+0

FYI :n>〜30の場合、bruteforceでこの問題を解決することはできません。 – erenon

関連する問題