2011-12-14 14 views
7

大多数の投票と投票数の組み合わせに基づいて勝者を選ぶ投票アルゴリズムを探しています。"誰もが幸せ"投票アルゴリズムとは何ですか?

実際の生活の例:

当社は、シリアルバーがあります。私たちは3つの異なる穀物のための部屋を持っています。我々は 従業員がどの穀物に投票するのを許可したいと思っています。

のみ(何らかの理由で)1つの 特定の穀物を食べることができ、従業員の少数があるかもしれないので、私たちは、厳密に人気 に基づいて上位3受賞者を選ぶにしたくない 、我々はそれらを与えるしたいのですが可能な限り 特別手当。

以下の投票結果が与えられた場合、アルゴリズムが私たちに提供したい結果があります。

Vote scenario and desired outcome

私は、ランク付けのこの種を行うアルゴリズムを探しています。私が探しているものの名​​前を少なくとも提供することができれば、私はそれをよりよく探し出すことができるので、大きな助けになるでしょう。 :)

ありがとう!

+2

念頭に置くべきことの1つは、説明した問題が、選択肢の数を減らした人に大きな力を与えることです。私がそれらのどれかに満足しているが、特に好きな人は、私が好きなのはその唯一の人だと主張することができます。 –

+0

@NickJohnsonおそらくそれはそれ以来そうなっているはずです。その場合、あなたはXを持つことができない場合、あなたは他人を優先しないと言っているでしょう。問題が解決できない場合は、1つの制約が選択されるという保証はありません。 – PengOne

+0

@PengOne保証はありませんが、他のより正直な有権者よりもあなたの好みが尊重される可能性が高いです。これは、アイテムを優先順位でランク付けするように求められた場合に、より明らかになります。私が正直で私の好きな3を1から3にランク付けすると、自分の好きなものだけをランク付けし、他のものには価値を割り当てない場合よりも、私の望む結果を得る可能性は低くなります。 –

答えて

2

Hall's marriage theoremおよび/またはassignment problemの一般化を考慮する必要があります。

このパラダイムのためのアイデアはcに投票p場合人pと穀物c間のエッジを有するノードは、人と穀物である二部グラフを作成することです。目標は、すべての他の穀類を除去することから生じるグラフは

  1. 接続

    (誰もが選択された穀物の少なくとも一つを食べるようになる)、及び

  2. 最小/平均値を最大化するように3つの穀物を選択することです各人の程度(最小/平均幸福を最大化)

あなたが代わりにMaximum Coverage Problemとしてこれについて考えることができます。この場合、C1,C2,...,Cmがあります。Ciは、穀物が好きな人の集合ですi。もしたとえば、表に記載されているために、穀物や人々を取って、あなたは

C1 = {1,5} 
C2 = {2} 
C3 = {1,4,5} 
C4 = {3,5} 

Ci{1,2,...,n}のサブセットであるようにnは、人々の数とする必要があります。目的は、ユニオンの基数が最大になるようにkセットを見つけることです。複数の解が存在する場合は、交点の基数を最小にする(1人が支配する量を最小にする)か、最小頻度の要素が繰り返される回数を最大にする(最も幸せな人の幸福を最大にする)ものを選択します。この例では

は、すべての要素が覆われているため、最小のkk=3あり、それはユニークなソリューションC2,C3,C4を提供します。

しかし、あなたはNP問題がありますが、それらを解決する既知のアルゴリズムがあります(参考のためにウィキペディアの記事をチェックしてください)。

+0

真実はNP完全であるが、穀物/政治家の種類の数はブルートフォース検索を実行可能にするのに十分小さい。 – hugomg

6

完璧な投票システムはありません - http://en.wikipedia.org/wiki/Arrow%27s_impossibility_theoremを参照してください。 http://en.wikipedia.org/wiki/Range_votingを含むルールを折り曲げて、これを越える様々な試みがありました。

範囲投票に近いアイデアは、みんなに12票を与え、彼らが望むようにそれらを配布できるようにすることです。あなたの例を見ると、複数の選択肢を持つ人々が12x1または6x2または4x3または3x4の均等に12の投票を分配すると仮定した場合、あなたはあなたの望む成果を得ていると思う、ラッキーチャームは合計10票を得て、これ以上を得る。

+0

私はその定理が大好きです。この質問のタイトルはすぐにあなたの考えを導くと思います。 –

+0

今年私の心に投票がありました。英国は、最初の投票から過去に単一移民投票に変更する国民投票がありました。私は米国が瞬間流出と知っていると思います。 (システムの変更に失敗しました)。 – mcdowella

+0

あなたが説明しているのは、範囲投票ではありません。範囲投票では、好きなだけ多くのポイントを選択できます。 – Argeman

2

穀物の数が少ない場合は、サブセット・カバー問題とブルートフォースとしてあなたの問題を表示することができ、最も「幸せのち」

var max_happyness = -INF 
for every subset {c1, c2, c3} of C: 
    max_hapyness = max(max_happyness, happyness(i1,i2,i3)) 

を与えるものな構成見つけることにあなたの方法あなたはまだ問題を抱えていますしかし、適切な幸福関数を定義する。たとえば、何か食べ物を食べる人の数を計算する第一優先として、幸福の関数を選択することができます。次に、2つ目の優先事項として、2つの穀物が好きな人、3つの穀物が好きな人などです。

長所:幸せ機能を定義できる場合は、最良の結果が保証されます。

短所:幸せ機能を定義することができなければなりません。

+1

+1「幸せ機能」 –

関連する問題