function [d,w] = talabrute(x,A,m0,n0) % A \subset of [m]^n % x \in [m]^n % x and A are in row-vector form global m n randomize m = m0; n = n0; LB = zeros(n,1)*1e-12; global x0 A0 x0 = x; A0 = A; %w = rand(n,1); w = ones(n,1)/sqrt(n); global myopt %[w,y] = fmincon(@distxw,w,[],[],0*(w')+1,1,LB,[]); [w,y] = fmincon(@distxw,w,[],[],[],[],LB,[],[],myopt); w = w/sqrt(sum(w.^2)); d = -y; return function y = distxw(w) w = w(:)'; w = w+eps; w = w/sqrt(sum(w.^2)); global x0 A0 global m n x = x0; A = A0; na = size(A,1); %xA = abs(A - repmat(x,[na 1])); xA = abs(A ~= repmat(x,[na 1])); wA = repmat(w,[na 1]); d = min(sum(xA.*wA,2)); d = d / sqrt(w*w'); y = -d; return