🎓 レベル:標準 | 重要度:A(必須)
要点(BLUF)
- これまでの章は「自社が何を選ぶか」を扱いましたが、競争は相手の選択に利得が依存する相互作用です。これをゲーム(プレイヤー・戦略・利得)として定式化します。
- 同時手番のゲームは利得行列で表せます。ある戦略が相手の全ての手に対して常に得なら支配戦略、常に損なら被支配戦略です。
- 被支配戦略を順に消していく**反復消去(IEDS)**で、先読みのカスケードがゲームを解く様子を numpy で再現します。これが次節のナッシュ均衡への入口です。
1. 利得行列と支配戦略
2社が同時に手を選ぶゲームを、利得行列で表します。例として「新技術を採用するか」の選択を考えます。行が自社A、列が競合Bの選択で、各セルが(Aの利得, Bの利得)です。
import numpy as np
# 2社の技術採用ゲーム。行=A の選択, 列=B の選択
labels = ["新技術採用", "旧技術維持"]
A = np.array([[5, 6], # A の利得
[2, 3]])
B = np.array([[5, 2], # B の利得
[6, 3]])
# 支配戦略:相手のどの手に対しても常に得な戦略
A_dom = np.all(A[0, :] > A[1, :]) # A:どの列でも「新技術」が「旧技術」より高いか
B_dom = np.all(B[:, 0] > B[:, 1]) # B:どの行でも「新技術」が「旧技術」より高いか
print(f"Aは『{labels[0]}』が支配戦略:{A_dom}")
print(f"Bは『{labels[0]}』が支配戦略:{B_dom}")
print(f"→ 支配戦略均衡({labels[0]}, {labels[0]})= 利得({A[0,0]}, {B[0,0]})")
出力:
Aは『新技術採用』が支配戦略:True
Bは『新技術採用』が支配戦略:True
→ 支配戦略均衡(新技術採用, 新技術採用)= 利得(5, 5)
出力の意味:A は B が何をしようと「新技術採用」が常に得(列0でも列1でも上の行が高い)。B も対称に「新技術採用」が支配戦略。両者が支配戦略を持つので、結果は**支配戦略均衡(新技術採用, 新技術採用)=(5, 5)**と確実に予測できます。支配戦略があるとき、相手の出方を読む必要すらありません——常にそれを選ぶのが最適だからです。
2. 被支配戦略の反復消去(IEDS)
支配戦略が常にあるとは限りません。しかし「明らかに損な手(被支配戦略)」を消し、相手も同じ推論をすると仮定して消去を繰り返すと、ゲームが解けることがあります。これが**反復消去(Iterated Elimination of Dominated Strategies)**です。価格を高・中・低から選ぶゲームで試します。
import numpy as np
# 価格設定ゲーム。A(自社)は高/中/低、B(競合)は高/低
rlab = ["高", "中", "低"]
clab = ["高", "低"]
A = np.array([[6, 2], # A の利得(行=A の価格, 列=B の価格)
[5, 7],
[1, 1]])
B = np.array([[3, 2], # B の利得
[4, 2],
[1, 5]])
rows, cols = [0, 1, 2], [0, 1]
changed = True
while changed:
changed = False
for r in list(rows): # A の被支配な行を消す
for r2 in rows:
if r2 != r and all(A[r2, c] > A[r, c] for c in cols):
rows.remove(r); changed = True
print(f"A の価格『{rlab[r]}』は『{rlab[r2]}』に支配され消去")
break
for cc in list(cols): # B の被支配な列を消す
for c2 in cols:
if c2 != cc and all(B[r, c2] > B[r, cc] for r in rows):
cols.remove(cc); changed = True
print(f"B の価格『{clab[cc]}』は『{clab[c2]}』に支配され消去")
break
print(f"生き残り:A={[rlab[r] for r in rows]}, B={[clab[c] for c in cols]}")
出力:
A の価格『低』は『高』に支配され消去
B の価格『低』は『高』に支配され消去
A の価格『中』は『高』に支配され消去
生き残り:A=['高'], B=['高']
出力の意味:順を追うと——まず A の「低」が「高」に支配され消える。すると B にとって「低」が「高」に支配されるようになり消える(B の「低」は、A が「低」を出したときだけ良かった)。さらにすると A の「中」が「高」に支配される(「中」は B が「低」を出したときだけ良かった)。この先読みのカスケードで、唯一の組(高, 高)が残りました。最初はどの戦略も支配的でなかったのに、「相手も合理的に被支配戦略を捨てる」と読み合うことで解ける——これがゲーム理論的推論の核です。
⚠️ よくある誤解
- 「支配戦略は必ず存在する」ではない:多くのゲームで支配戦略はありません。その場合はナッシュ均衡(ナッシュ均衡と囚人のジレンマ)で解きます。
- 「IEDS は常に一意解を出す」ではない:消去が途中で止まり、複数の戦略が残ることもあります。残ったゲームをナッシュ均衡で詰めます。
- 「支配戦略均衡=最善の結果」ではない:各自が支配戦略に従っても、全員にとってより良い結果を逃すことがあります(囚人のジレンマ=ナッシュ均衡と囚人のジレンマ)。
- 弱支配と強支配は別:強支配(常に厳密に上)の消去は安全ですが、弱支配の消去は順序で結果が変わり得ます。本コードは強支配(
>)のみ消去しています。
関連ノート
- ナッシュ均衡と囚人のジレンマ(次のトピック・支配戦略がないときの解)
- 価格競争(ベルトランとクールノー)(連続戦略のゲーム)
- ゲーム理論の数理基礎・マルチエージェント強化学習は機械学習テキストへ
- 経営戦略テキスト 全体目次