重み付き投票ゲームにおける 投票力指数の計算の高速化
-
Upload
dexter-mcknight -
Category
Documents
-
view
57 -
download
0
description
Transcript of 重み付き投票ゲームにおける 投票力指数の計算の高速化
重み付き投票ゲームにおける投票力指数の計算の高速化
国立情報学研究所宇野 毅明[email protected]
目的
• 重み付き投票ゲームの、投票力指数を計算する• 対象は、 Banzhaf, Shapley-Shubik, Deegan-Packel 指数• すでに動的計画法アルゴリズムが提案されている• ただし、全プレイヤーの指数を計算すると、同じよ
うな計算を繰り返すことになる
そこで
計算方法を工夫して、無駄な計算を省き、計算量を小さくする
重み付き投票ゲーム• ある議会に、政党(プレイヤー) A 、 B 、 C 、 D がある• 票決のとき、同一政党内の議員は同一の投票をする• 賛成票が q = 50 人 以上で可決
政党 A45 人
政党 B8 人
政党 C17 人
政党 D30 人
各政党の力を示す指数がほしい => 議席数?
勝利提携 と 敗北提携提携 : 政党の集合 法案成立には、 q 人 か、それ以上の議員を含む提携を
組む必要がある
勝利提携 : 提携に属する議員が q 人か、それ以上の提携敗北提携 : 提携に属する議員が q 人以下の提携
政党 A45 人
政党 B8 人
政党 C17 人
政党 D30 人
議席数は良い指標ではない
• 勝利提携 ( 政党 A ( 45 人),政党 D ( 30 人) )
政党 B ( 8 人) : AB , ABC , ABD , BCD
政党 C ( 17 人) : AC , ABC , ACD , BCD
勝利提携の組合せは同じ! 指数は同じになるべき
提携の情報から指数を求めるモデルがよい
もう一度、用語の定義
プレイヤー p1,…,pn : 政党
プレイヤーの重み w(pi) : 政党の議席数
q : 成立に必要な票数提携 : プレイヤーの集合提携 S の重み w(S) :提携に属するプレイヤーの重み
の和勝利提携 : 重みが q か、それ以上の提携敗北提携 : 重みが q 以下の提携
バンザフ( Banzhaf )指数
「ある勝利提携 S から プレイヤー pi が抜けると敗北提携になるとする。このとき、 pi は発言力を持つだろう」
このような提携の数を 2n で割ったものを指数とする
pi のバンザフ指数 Bz(pi)
= | { S | pi S∈ , w(S) q≧ , w(S \ pi) < q } | / 2n
pi
q
バンザフ指数を計算するf(pi, y) : プレイヤー集合 { p 1 ,…, pi } に含まれる提携 S で、
w(S) =y となるものの数
プレイヤー p n に対して、
w(S) q≧ , w(S \ pn) < q q - w(pn) w(S≦ \ pn) q-≦ 1
重みが q - w(pn) から q- 1 の間で、 pn を含まない提携の数 q- 1 = Σ f(p n -1, y) y=q- w(pn)
これを 2n で割るとバンザフ指数になる
動的計画法再帰式: f(pi, y) = f( pi-1, y ) + f( pi-1, y- w(pi) )
pi を含まない提携数 pi を含む提携数
i= 1 ,…,n- 1 に対して、 f(pi, y) を順々に求める
q q - w(pn)
p 1 p2 p3 pn-2 pn-1
・・・・・
s
このグラフで、 f(pi, y) は s から対応する頂点までのパスの数
計算量・ f(pi- 1 , y) から f(pi, y) を求める: O (q) 時間
・ f(pn-1, y) を求める: O (nq) 時間
pn 以外のプレイヤーに対しての計算:
pn と pi の添え字をつけなおして、同じ方法で計算
・全員分の計算 O (n2q) 時間
変更がちょっとしかないので、ほとんど同じ計算を行う
なんとか無駄な計算を省けないでしょうか?
不要な計算の省略 pi に対して , 提携 S のプレイヤーを i 以下と i 以上に分けて考え
る
g(pi, y) : プレイヤー集合 { pi,…, pn } に含まれる提携 S で、
w(S) =y となるものの数
重みが q - w(pi) から q- 1 の間で、 pi を含まない提携
i 以下の重みが z , i 以上が q - w(pi) - z から q- 1 -z の間 q- 1 q- 1 -z
そのような提携の数 = Σ f(pi-1, z) Σ g(pi+1, y) z=0 y=q- w(pi)-z
y h(pi, y) = Σ g(pi, z) とすると h(pi+1, q- 1 -z) - h(pi+1, q-w(pi)-z - 1) z=0
前後の計算を合わせる
f(pi, y) , g(pi+2, y) から f(pi-1, y) , g(pi+1, y) を計算: O (q)
g(pi+1, y) から h(pi+1, y) を計算 : O (q)
1 プレイヤーの指数を計算 : O (q)
全員分の指数をO (nq) 時間で計算できる
p 1 p2 p3 pi- 1 pi pi+ 1 pn- 1 pn
・・・・・
q
・・・・・
s
0
q0
シャープレイ・シュービック( Shapley-Shubik )指数
「空の提携にプレイヤーが順々に参加し、プレイヤー pi が参加して、はじめて S が勝利提携になるとき、 pi は発言力を持つ」
このようなプレイヤーの参加順序(順列)の数を n! で割ったものを指数とする
pi のシャープレイシュービック指数 Ss(pi)
= | { 順列 (pj 1 pj2,,…, pjn ) |
q w({p≦ j 1 pj2,,…, pi }) < q+ w(pi) } | / n!
pi
q
Ss 指数を計算するプレイヤー pi より前のプレイヤーの集合が S となるよ
うな順列の数は |S|!(|n-|S|-1)!
pi
q
この場合、前に3プレイヤー、後ろに2プレイヤーいるので、 3!×2! = 3! ( 6-3-1 ) ! = |S|! (n-|S|-1)!
pi を加えると勝利提携になる敗北提携について、この総和を取る
Ss(pi)×2! = Σ |S|! (n-|S|-1)!
S | pi S∈ , q- w(pi) w(S) q-1 ≦ ≦
S
/
Ss 指数を計算するf(pi, k, y) : プレイヤー集合 { p 1 ,…, pi } に含まれる、大き
さ k の提携 S で、 w(S) =y となるものの数
重みが q - w(pn) から q- 1 の間で、 pn を含まない提携 S に関して |S|!(n-|S|-1)! の和を取る
n-1 q-1
= Σ Σ f(pn-1,k, y) × k!(n-k-1)! k=0 y=q-w(pn)
これを n! で割ると Ss 指数になる
終点が (pn- 1 , k, y) のパス重みを k!(n-k-1)! => パスの重み和
Ss 指数用の動的計画法再帰式: f(pi, k, y) = f( pi-1, k, y ) + f( pi-1, k- 1 , y- w(pi) )
pi を含まない提携数 pi を含む提携数
バンザフ指数と同じ方法で、高速化を行う
k … 10q
210
pi- 1 pi
・ f(pi- 1 , k, y) から f(pi, k, y) を求める
O (nq) 時間
・ f(pn-1, k, y) を求める:
O (n2q) 時間
・全員分の計算 O (n3q) 時
間
Ss 指数の高速化g(pi, k, y) : (pi, k, y) から (pn, k’, * ) へのパスの重み和 (重みは k’!(|n-k’-1)! )
重みが q - w(pi) から q- 1の間で、 pi を含まない提携 S に 関する |S|!(|n-|S|-1)! の和 n- 1 q- 1 q- 1 - z
= Σ Σ f(pi-1, k, z) × Σ g(pi-1, k, y) k=0 z=q-w(pi) y=q- w(pi) - z
p 1 p2 pi- 1 pi pi+ 1
pn- 1 pn
・・・
k 1プレイヤー O (nq)
全プレイヤー O (n2q)
ディーガン・パックル指数( Deegan-Packel )指数
極小勝利提携 : どのプレイヤーが抜けても敗北になる勝利提携
「 pi が極小勝利提携 S に所属すれば,発言力 1/|S| を持つ」
pi が所属する極小勝利提携すべてに対して発言力の和を取って、極小勝利提携の数 W で割ったものを指数とする
q
ディーガン・パックル指数2
プレイヤーは、重みの大きい順にソートされているとする
d(S) : 提携 S から最小重みのプレイヤー ( = 添え字最大のプレイヤー ) を除い
た提携
pi のディーガン・パックル指数 Dp(pi)
= | { S | pi S∈ , w(S) q≧ , w(d(S)) < q } | / W
q
ディーガンパックル指数を計算
Ss 指数計算で用いた、動的計画法のグラフを考える
終点が (pi, k, y) ( q-w(pi) y ≦ ≦ q- 1) のパスの重みを 1/k とする
pi 上 Dp 指数の計算: pi を使い、 S から上の条件を満たす点へのパスの重み和 (重みは 1 /k’ ) q
p 1 p2 p3 pi-1 pi pi+1 pn- 1 pn
・・・
s
・・・
1 プレイヤー O (n2q) : 全プレイヤー O(n3q)
Dp 指数の動的計画法(高速版)
g(pi, k, y) : pi を使い、 (pi, k, y) から ( q-w(pj) z ≦ ≦ q- 1) を
満たす点 (pj, k’, z) へのパスの重み和 (重みは 1 /k’ )
pi を使うパスの重み和:[ S から (pi-1, k, y) までのパス数 × g(pi, k, y) ] の総和 n-1 q-1
= Σ Σ f(pi-1, y) × g(pi, k+ 1 , y+w(pi)) k=0 y=q- w(pi)
( f(pi, k, y) は Ss 指数での定義と同じ )
・すべての f(pi, k, y) , g(pi, k, y) を求める: O (n2q) 時間・1プレイヤーの計算: O (nq) 時間・全員分の計算 O (n2q) 時間
まとめ
• 重み付き投票ゲームの投票力指数を計算する動的計画法に対して、全員分の計算を 1 人分の計算と同じ計算量で行うアルゴリズムを提案した
• バンザフ指数は O (n2q) => O (nq)
シャープレイ・シュービック指数は O (n3q) => O (n2
q)
ディーガン・パックル指数は O (n4q) => O (n2
q)
と、計算量は減少した
今後の課題: 同じテクニックが使える問題はどの程度あるか?