囚人のジレンマと進化ゲーム理論
利己的な世界で『協力』はどうやって進化するのか?しっぺ返し戦略の奇跡
- 1
- 囚人のジレンマでは個人の最適解(裏切り)を選ぶと、全員が協力した時より悪い結果に沈む(ナッシュ均衡の罠)
- 2
- しかし勝負を『何度も繰り返す』と、相手を真似るシンプルな戦略『しっぺ返し(Tit for Tat)』が最強になる
- 3
- ロバート・アクセルロッドの実験で証明された、生物界と人間社会で『信頼と利他性』が生き残る数学的理由
なぜこれを学ぶのか? — 現実社会とテクノロジーでの価値
なぜ生まれたのか?
『なぜ人は協力するのか?なぜ自分を犠牲にする利他行動が自然淘汰で消滅しなかったのか?』という生物学最大の謎を、コンピュータトーナメントで数学的に解き明かした20世紀の名著。
身につく武器・思考力
ナッシュ均衡の限界理解、インセンティブ設計、長期的な交渉術と信頼関係構築の戦略論
実社会・ITでの活躍現場
- •国際政治における軍縮交渉・冷戦構造(相互確証破壊 MAD)
- •P2Pファイル共有(BitTorrent の『Choking / Tit-for-Tat』アップロード帯域制御)
- •企業間の価格競争・ダンピング防止カルテル監視
- •進化生物学における吸血コウモリの血の分け合いや鳥の警戒音行動の解明
Layer 1 — 直感・シミュレーター
『お人好し(常に協力)』『悪者(常に裏切り)』『しっぺ返し(初回協力、以降は相手の真似)』『気まぐれ(ランダム)』の戦略AI同士を総当たり戦で対決させよう。ラウンドを重ねるごとに勝者の遺伝子が繁殖し、誰が最後に生き残るかを進化シミュレーションできます。
🤖 AI戦略同士を対決させてみよう
初回は協力。以降は相手の直前の手をそのまま真似る
常に裏切って相手を搾取しようとする悪党
全5戦略による総当たりリーグ戦(アクセルロッド大会)
各戦略同士が20ラウンドずつ対戦したとき、総合得点トップに輝くのは誰か?
アクセルロッドの反復囚人のジレンマ大会で『しっぺ返し』が優勝できた決定的な理由として、正しくないものはどれ?
Layer 2 — 定義・受験・証明
定義
**囚人のジレンマ(Prisoner's Dilemma)**の利得行列: 2人のプレイヤーがそれぞれ「協力(C: Cooperate)」か「裏切り(D: Defect)」を同時に選ぶ。
| あなた \ 相手 | 相手が協力 (C) | 相手が裏切り (D) | | :--- | :---: | :---: | | **あなたが協力 (C)** | **(3点, 3点)** [相互協力の報酬] | **(0点, 5点)** [搾取されたカモ] | | **あなたが裏切り (D)** | **(5点, 0点)** [裏切りの誘惑] | **(1点, 1点)** [共倒れの罰] |
相手がどちらを選んでも、自分は裏切ったほうが得(, )なため、合理的な個人は裏切りを選び の最悪解に陥る。
公式・数理モデル
証明・導出
**しっぺ返し(Tit-for-Tat)が勝つ4つの美徳**: 政治学者ロバート・アクセルロッドが1980年代に世界中のゲーム理論家にプログラムを公募した大会で、わずか4行の『しっぺ返し』が全戦略を圧倒して優勝した。
1. **善良性(Nice)**: 自分から先に裏切ることは決してない 2. **報復性(Retaliatory)**: 相手が裏切ったら、即座に次の手で裏切って報復する 3. **寛容性(Forgiving)**: 相手が協力に戻ったら、過去の罪を水に流して即座に協力に戻る 4. **明快性(Clear)**: 相手にとって自分の手の意図が明白で、誤解による報復合戦を防ぐ
集団内にわずか数%でも『しっぺ返し』のクラスタが存在すると、互いに協力して高得点を稼ぎ出し、最終的に裏切り者集団を駆逐して進化的に安定な状態(ESS)に至る。
押さえておきたいポイント
- 1回限りのゲームでは『裏切り』が数学的唯一の最適解だが、繰り返し会う関係では『協力』が有利になる
- 『未来の影(割引因子 )』が十分に長いとき、利己的な動機から利他行動が自発的に創発する
- 現実のノイズ(誤解による裏切り)がある環境では、相手の裏切りを10%の確率で許す『寛容なしっぺ返し(Generous Tit-for-Tat)』がさらに強くなる
本トピックの内容・数理モデルは、文部科学省学習指導要領(算数・数学・情報)および国際標準カリキュラムに準拠し、エンジニアリング現場の実装事例と照らし合わせてMath World Lab編集部により検証・作成されています。
Layer 3 — 工学応用・現場実装
BitTorrentにおけるP2P帯域制御(Tit-for-Tatプロトコル)
BitTorrentプロトコルでは、自分にデータを高速でアップロードしてくれるピアに対して優先的に帯域を割り当てる(Unchoke)。フリーライダー(ダウンロードだけしてアップロードしないユーザー)を自然に排除し、ネットワーク全体のデータ転送速度を最大化する。
1// 囚人のジレンマ・進化ゲームシミュレーター2export type Action = "C" | "D"; // C: 協力, D: 裏切り34export interface Strategy {5 name: string;6 color: string;7 play: (historyMe: Action[], historyOpponent: Action[]) => Action;8}910// 代表的な戦略群11export const STRATEGIES: Strategy[] = [12 {13 name: "しっぺ返し (Tit-for-Tat)",14 color: "#4f46e5",15 play: (me, opp) => (opp.length === 0 ? "C" : opp[opp.length - 1]),16 },17 {18 name: "お人好し (Always Cooperate)",19 color: "#10b981",20 play: () => "C",21 },22 {23 name: "裏切り者 (Always Defect)",24 color: "#ef4444",25 play: () => "D",26 },27 {28 name: "気まぐれ (Random)",29 color: "#f59e0b",30 play: () => (Math.random() < 0.5 ? "C" : "D"),31 },32 {33 name: "恨み屋 (Grudger)",34 color: "#8b5cf6",35 play: (me, opp) => (opp.includes("D") ? "D" : "C"),36 },37];3839// 利得計算 (あなた, 相手)40export function getPayoff(a: Action, b: Action): [number, number] {41 if (a === "C" && b === "C") return [3, 3];42 if (a === "C" && b === "D") return [0, 5];43 if (a === "D" && b === "C") return [5, 0];44 return [1, 1]; // D, D45}
次に学ぶならコレ!おすすめトピック
この単元と深い繋がりを持つ、あわせて学ぶと理解が深まるおすすめ単元