function [phi,fval] = philp(A,C) % produce the phi that maximizes Y^{(2)} for the given (A,C) global nstate m = nstate; global X0 Ain = zeros(0,m^2); Bin = zeros(0,1); rind = 0; for ind1 = 1:m^2 for ind2 = ind1+1:m^2 x = ind2coord(ind1,[m m]); y = ind2coord(ind2,[m m]); if length(find(x~=y))==1 % Hamming dist == 1 for s = [-1,1] rind = rind+1; Ain(rind,ind1) = s; Ain(rind,ind2) = -s; Bin(rind,1) = 1; end end end end cc = zeros(m^2,1); cc(1:m) = A(:,1); cc(m+1:2*m) = -A(:,2); [fp,fvalp] = linprog( cc,Ain,Bin); [fn,fvaln] = linprog(-cc,Ain,Bin); if abs(fvalp)>abs(fvaln) phi = fp; fval = fvalp; else phi = fn; fval = fvaln; end return