by R. Grothmann
We compute the optimal strategy for the game paper-scissors-stone. First the win-loss matrix. E.g., the first column means, that paper looses to scissors and wins to stone.
>shortformat; A=[0,1,-1;-1,0,1;1,-1,0]
0 1 -1 -1 0 1 1 -1 0
We are optimizing the worst case. I.e. we have to maximize the minimum of A.p for probabilities p. That is, maximize h under the conditions A.p>=h, 1'.p=1.
We add 1 to every element of A, to make sure the solution h is positive. this does not change the solution p.
>A1=A+1;
Next we need to expand the matrix A to reflect the equations A.p-h>=0, and 1'.p=1. We have the unknown vector p1,p2,p3,h.
>A2=(A1|-1)_(ones(1,3)|0)
1 2 0 -1 0 1 2 -1 2 0 1 -1 1 1 1 0
The right hand side of the equations is the following vector.
>b=zeros(3,1)_1
0 0 0 1
The target function has the following vector. Note that we have the unknowns p1,p2,p3,h.
>c=zeros(1,3)|1
[0, 0, 0, 1]
We need a vector, reflecting the type of equations (1=greater equal, 0=equal).
>eq=ones(3,1)_0
1 1 1 0
Now we can call the simplex algorithm.
>{p,res}=simplex(A2,b,c,eq=eq,max=true); ... res
0
res=0 shows that a solution has been found. We print p, and find that we have to choose all three with equal chance.
>p[1:3]
0.333333 0.333333 0.333333
The game is fair.
>p[4]-1
0
Now we add "well" as a possible choice. The well looses only against paper.
>A=[0,1,-1,-1;-1,0,1,1;1,-1,0,1;1,-1,-1,0]
0 1 -1 -1 -1 0 1 1 1 -1 0 1 1 -1 -1 0
>A1=A+1; ... A2=(A1|-1)_(ones(1,4)|0); ... b=zeros(4,1)_1; ... c=zeros(1,4)|1; ... eq=ones(4,1)_0; ... {p,res}=simplex(A2,b,c,eq=eq,max=true);
This time, we must not play stone. Anytime, the opponent plays stone, he looses on average.
>p[1:4]
0.333333 0.333333 0 0.333333