ez:=proc(): print(`Ve(A), V(A), PM1(n,c) po(c,pi,S), PM(n,k,c) , HS(n,k,c) `): end: with(combinat): Ve:=proc(A) local x,y,v,m,n,i,j,eq,var: m:=nops(A): n:=nops(A[1]): var:={seq(x[i],i=1..m), seq(y[j],j=1..n),v}: eq:={seq(add(A[i][j]*x[i],i=1..m)-v,j=1..n), seq(add(A[i][j]*y[j],j=1..n)-v,i=1..m), add(x[i],i=1..m)-1,add(y[j],j=1..n)-1 }: var:=solve(eq,var): if var=NULL then RETURN(FAIL): fi: [subs(var,[seq(x[i],i=1..m)]),subs(var,[seq(y[j],j=1..n)]), subs(var,v)]: end: V:=proc(A) local x,y,v,m,n,i,j,eq,var,e1,e2: m:=nops(A): n:=nops(A[1]): var:={seq(x[i],i=1..m), seq(y[j],j=1..n),v,e1,e2}: eq:={seq(add(A[i][j]*x[i],i=1..m)>=v,j=1..n), seq(add(A[i][j]*y[j],j=1..n)<=v,i=1..m), add(x[i],i=1..m)-1,add(y[j],j=1..n)-1, seq( 0<=x[i],i=1..m),seq( x[i]<=1,i=1..m),seq( 0<=y[j],j=1..n),seq( y[j]<=1,j=1..n),v>=0}: var:=solve(eq,var): [subs(var,[seq(x[i],i=1..m)]),subs(var,[seq(y[j],j=1..n)]), subs(var,v)]: end: #PM1(n,c): the n!by n matrix payoff for using permutation pi and hiding a box at i PM1:=proc(n,c) local gu,i,T,gu1,i1,j: gu:=permute([seq(i,i=1..n)]): for gu1 in gu do for i from 1 to n do T[gu1,gu1[i]]:=add(c[gu1[i1]],i1=1..i): od: od: [seq([seq(T[gu[j],i],i=1..n)],j=1..nops(gu)) ]: end: #po(c,pi,S): the payoff if the Searcher's strategy is pi and the hider's startegy is to put it in S po:=proc(c,pi,S) local i,i1: for i from 1 to nops(pi) while S minus {op(1..i,pi)} <>{} do od: add(c[pi[i1]],i1=1..i): end: #PM(n,k,c): payoff matrix for Hide and Seek game with n boxes and k balls with search cost of box i being c[i] PM:=proc(n,k,c) local gu,mu,i,j: gu:=permute([seq(i,i=1..n)]): mu:=convert(choose({seq(i,i=1..n)},k),list): [seq([seq(po(c,gu[i],mu[j]),j=1..nops(mu))],i=1..nops(gu))]: end: #HS(n,k,c): the solution of the balls in boxes games with n boxes and k balls and cost c[i] for searching box i HS:=proc(n,k,c) Ve(PM(n,k,c)): end: