正如我在评论中提到的,您可以使用随机方法来解决这个问题。最终,我们的解向量有等式约束λ存在Aλ=0, 对于一些给定的A. 由于我们正在考虑零空间的元素,它们的规模并不重要,但我们真正关心的是λ大于或等于0. 因此,让我们设置盒子约束0≤λi≤1, 对所有人i.
现在,我们假设可能有多种解决方案可以满足这些约束,那么我们如何才能潜在地识别它们呢?让我们寻求最小化形式的目标cTλ我们确保我们的选择c是这样的ci<0对所有人i以确保我们不会得到微不足道的解决方案λ=0在我们的约束下。
假设我们使用随机方法,也许选择所有i那ci∼unif(−1,0)然后生成一组k随机向量{c(1),⋯,c(k)}. 如果我们解决k线性规划最小化(c(j))Tλ在我们的限制下,对于足够大的k我们应该以高概率获得您想要的所有解决方案。我敢肯定,可以使用 Hoeffding 不等式或类似的东西来计算出一些界限,然后找出确保您以高概率找到所有解决方案所需的样本复杂性,但最终这应该可行。
我编写了一个示例 Matlab 脚本来说明这个算法
% test randomized algorithm idea for finding nullspace with constraints
% setup the linear program values
A = [1, 0, 0, -1, 0;
-1, 1, 0, 0, 1;
0, -1, 1, 0, 0;
0, 0, -1, 1, -1];
b = zeros(4,1);
lb= zeros(5,1);
ub= ones(5,1);
% solve k linear programs with randomized approach
k = 15;
X = zeros(5,k);
for i = 1:k
X(:,i) = linprog(-rand(5,1), A, b, [], [], lb, ub);
end
% find the unique solutions
U = unique(X','rows')'
为了k=15,我已经多次运行脚本,它总是产生正确的两个解决方案,即产生输出
U =
1 1
0 1
0 1
1 1
1 0
如果我使用k=2,有时它会同时产生,有时则不会。您可以尝试使用您的方法,可能会进行采样,直到您拥有与您期望的一样多的独特解决方案,但关键是该算法将为您提供您正在寻找的具有足够样本的结果。