2003/2/22
JASMIN02秋報告資料からの抜粋
6
Prologの例5(ナッシュ均衡)
右図の標準形ゲームとそのナッシュ均衡を求めるPrologプログラムの例およびその実行結果を示す。ただし、これは後でナッシュ遂行のシミュレーションで用いるものよりも、かなり簡単である。プログラムは略すが、混合均衡の計算も試みている。
?- nash(A,B).
A = [a1,b1]
B = [1,1] ;
A = [[1,0],[0,1]]
B = [2,1]
Yes
% finding an equilibrium
game( [player(1,act(a1)), player(2,act(b1)) ], payoffs([1,1])).
game( [player(1,act(a1)), player(2,act(b2)) ], payoffs([2,0])).
game( [player(1,act(a2)), player(2,act(b1)) ], payoffs([0,2])).
game( [player(1,act(a2)), player(2,act(b2))] , payoffs([-1,-1])).
nash( [S1,S2], [P1,P2] ):-
   game( [ player(1,act(S1)),  player(2,act(S2))  ],  payoffs([P1,P2]) ),
   \+  ( game([ player(1,act(_X)),  player(2,act(S2)) ], payoffs([Px,_]),   Px > P1   ),
   \+ ( game( [ player(1,act(S1)),  player(2,act(_Y))], payoffs([_,Py])),    Py > P2  ).
                       player 2
player 1   act(b1)   act(b2)
  act(a1)     [1,1]    [ 2,  0 ]
  act(a2)     [0,2]    [-1, -1]