function [d,w] = taladist(x,A,m,n) % A \subset of [m]^n % x \in [m]^n % x and A are in row-vector form global x0 A0 x0 = x; A0 = A; w = ones(1,n)/sqrt(n); del = 1e-3; w0 = w; d0 = distxw(w0); dd = zeros(1,n); for i=1:n w = w0; w(i) = w(i) + del; w = w/sqrt(sum(w.^2)); di = distxw(w); dd(i) = (di-d0)/del; end keyboard w = w .* (dd<0) + eps; w = w/sqrt(sum(w.^2)); d = distxw(w); return function d = distxw(w) global x0 A0 global m n x = x0; A = A0; na = size(A,1); xA = A ~= repmat(x,[na 1]); wA = repmat(w,[na 1]); d = min(sum(xA.*wA,2)); d = d / sqrt(w*w'); return