title: Efficient way to find explanations of a method-test-matrix (mathematical problem)
body: <h3>Setup:</h3>
  
  <p>I have a boolean matrix e.g.</p>
  
  <pre>
  1  0
  1  1
  0  1
  </pre>
  
  <p>where rows are named <strong>m1</strong>, <strong>m2</strong>, <strong>m3</strong> (as methods) and columns <strong>t1</strong> and <strong>t2</strong> (as tests).</p>
  
  <h3>Definition:</h3>
  
  <p>An <em>explanation</em> is a set of rows (methods) which in union have at least one "1" in any column (every test hast to be matched by at least one method).</p>
  
  <p>in our example, the set of explanations would be:</p>
  
  <pre><code>{
    {m2}, 
    {m1,m2},{m1,m3},{m2,m3},
    {m1,m2,m3}
  }
  </code></pre>
  
  <h3>Problem:</h3>
  
  <p>I want now to calculate all explanations.</p>
  
  <p>Now, I already have two implementations which can solve the problem, one searching explanations top-down, the other bottom-up, but both suffer in exponential growth in computing time (doubles by increasing the number of rows by one).</p>
  
  <p>Is this a known (maybe solved efficiently) mathematical problem?</p>
  
  <p>What could make things easier is that at the end, I only need the number of occurrences in explanations for every method. In our example this would be for <strong>m1</strong> three occurrences, for <strong>m2</strong> four occurrences and for <strong>m3</strong> three occurrences.</p>
  
  <p>My current algorithms work fine until let's say 26 rows. But further on, it is getting very slow.</p>
  
  <p>Thank you for your help!</p>