Mímisbrunnr知恵の泉

← 経営戦略 一覧

🎓 レベル:標準 | 重要度:A(必須)

📎 前提:経営戦略とは(分析的アプローチ)。ゲーム理論の数理基礎は機械学習テキストの強化学習も参照

要点(BLUF)

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 が「低」を出したときだけ良かった)。この先読みのカスケードで、唯一の組(高, 高)が残りました。最初はどの戦略も支配的でなかったのに、「相手も合理的に被支配戦略を捨てる」と読み合うことで解ける——これがゲーム理論的推論の核です。

⚠️ よくある誤解

関連ノート