2

Let $M$ be an $m\times n$ matrix with all elements in $\{1,0\}$, $m >> n$. Let $\mathbf{v}_0, \ldots, \mathbf{v}_n$ be the columns of $M$.

I want to find all sets of columns $S = \{\mathbf{v}_{i_1}, \ldots, \mathbf{v}_{i_k}\}$ so that for every row there is at least one column $\mathbf{v}_{i_j}, \ldots, \mathbf{v}_{i_k}$ that has a $1$ in that row, with the constraint that $S$ is minimal in the sense that deleting any element of $S$ means $S$ no longer meets these requirements.

Without the minimalness constraint, this is a trivial instance of (monotone) SAT - define a variable corresponding to each column of $M$, and just read the CNF clauses from the rows of $M$.

How can I approach the problem as described? I tried encoding the minimalness requirement as additional boolean constraints (which would make the problem regular SAT and I could use a SAT solver), but this gives $n^m$ additional clauses in CNF form, which is intractably large.

D.W.
  • 159,275
  • 20
  • 227
  • 470
Andrew
  • 121
  • 2
  • This is equivalent to enumerating minimal set covers. Here is a previous question on this topic: https://cs.stackexchange.com/questions/35475/how-to-enumerate-minimal-covers-of-a-set – Laakeri Jan 02 '20 at 23:39
  • You can formulate the problem as a linear integer optimization program, you can then use any IP solver to compute a solution. You can find the formulation in the document : link – Saad Balbiyad Jan 03 '20 at 09:30
  • You can formulate the problem as an optimization program, more details in link, where the matrix A represents your matrix M ^^" – Saad Balbiyad Jan 03 '20 at 09:33
  • @Laakeri Ah so it is, thanks! – Andrew Jan 03 '20 at 10:48
  • @D.W., any idea what happened to the comments? Several have disappeared. – Andrew Jan 03 '20 at 10:48
  • @Andrew, I deleted several comments that became obsolete or were no longer relevant or useful. – D.W. Jan 03 '20 at 17:01

0 Answers0