Computing the Spark: Mixed-Integer Programming for the (Vector) Matroid Girth Problem
Computing the Spark: Mixed-Integer Programming for the (Vector) Matroid Girth Problem Andreas M. Tillmann∗ (draft, last updated March 7, 2018) Abstract We investigate the NP-hard problem of computing the spark of a matrix (i.e., the smallest number of linearly dependent columns), a key parameter in compressed sensing and sparse signal recovery. To that end, we identify polynomially solvable special cases, gather upper and lower bounding procedures, and propose several exact (mixed-)integer programming models and linear programming heuristics. In particular, we develop a branch & cut scheme to determine the girth of a matroid, focussing on the vector matroid case, for which the girth is precisely the spark of the representation matrix. Extensive numerical experiments demonstrate the effectiveness of our specialized algorithms compared to general- purpose black-box solvers applied to several mixed-integer programming models. 1 Introduction The spark of a matrix A 2 Rm×n is defined as the smallest number of linearly dependent columns, i.e., spark(A) := minfkxk0 : Ax = 0; x 6= 0g; (1) where kxk0 := jfj : xj 6= 0gj. In the context of compressed sensing (cf. [31, 36]) and the sparse recovery problem min kxk0 s.t. Ax = b; (2) the spark is essential regarding solution uniqueness; in particular, every k-sparse vector x^ uniquely solves (2) with b := Ax^ if and only if 2k < spark(A). The spark is also a key parameter for identifying ambiguities in linear sensor arrays (see, e.g., [63]) or existence of unique tensor decompositions (by the relation to the Kruskal rank, which equals spark(A) − 1, see, e.g., [57, 56, 83]), verification of k-stability in the context of matrix completion (holds if and only if spark(A) = n − k + 1, see [84]), and other applications.
[Show full text]