function [Aeq,Beq,Ain,Bin] = abmetric(N) % linear constraints for a metric on N points % symmetry, d(x,x)=0 Aeq = zeros(0,N^2); Beq = zeros(0,1); rind = 0; for i=1:N rind = rind+1; colii = coord2ind([i i],[N N]); Aeq(rind,colii) = 1; Beq(rind,1) = 0; for j=i+1:N rind = rind+1; colij = coord2ind([i j],[N N]); colji = coord2ind([j i],[N N]); Aeq(rind,colij) = 1; Aeq(rind,colji) = -1; Beq(rind,1) = 0; end end % triangle inequality Ain = zeros(0,N^2); Bin = zeros(0,1); rind = 0; for i=1:N for j=i+1:N for k=setdiff(1:N,[i j]) rind = rind+1; colij = coord2ind([i j],[N N]); colik = coord2ind([i k],[N N]); colkj = coord2ind([k j],[N N]); Ain(rind,colij) = 1; Ain(rind,colik) = -1; Ain(rind,colkj) = -1; Bin(rind,1) = 0; end end end % nonnegativity is enforced elsewhere return