ez:=proc(): print(`Vee(A), Ve(A), VeN(A), V(A), PM1(n,c) po(c,pi,S), PM(n,k,c) , HS(n,k,c), HSee(n,k,c) `): end: with(combinat): 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: 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: #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: Vee:=proc(A) local x,y,v,m,n,i,j,eq,var: m:=nops(A): n:=nops(A[1]): var:={seq(y[j],j=1..n),v}: eq:={ seq(add(A[i][j]*y[j],j=1..n)-v,i=1..m),add(y[j],j=1..n)-1 }: var:=solve(eq,var): if var=NULL then RETURN(FAIL): fi: [subs(var,[seq(y[j],j=1..n)]), subs(var,v)]: end: VeN:=proc(A) local x,y,v,m,n,i,j,eq,var,X,Y,lu,v1,lu1,var1: m:=nops(A): n:=nops(A[1]): var:={seq(y[j],j=1..n),v}: eq:={ seq(add(A[i][j]*y[j],j=1..n)-v,i=1..m),add(y[j],j=1..n)-1 }: var:=solve(eq,var): if var=NULL then RETURN(FAIL): fi: Y:=subs(var,[seq(y[j],j=1..n)]): v:= subs(var,v): eq:={seq(add(A[i][j]*x[i],i=1..m)-v,j=1..n) , add(x[i],i=1..m)-1 }: var:={seq(x[i],i=1..m)}: X:=[seq(x[i],i=1..m)]: var1:=solve(eq,var): lu:={}: for v1 in var1 do if op(1,v1)=op(2,v1) then lu:=lu union {op(1,v1)}: fi: od: X:=subs(var1,X): X:=subs({seq(lu1=0,lu1 in lu)},X): [X,Y,v]: 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: #HSee(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 HSee:=proc(n,k,c) Vee(PM(n,k,c)): end: