Is there a algorithm to extract the minimum number of Cartesian products from a set of formulas?

131 Views Asked by At

For example, we have a set of formulas as below:

B*2*j
B*3*i
B*3*j
C*2*j
C*3*i
C*3*j
D*2*i
D*2*j
D*3*i
D*3*j

And we could have three Cartesian products to represent the formulas above:

D*(2+3)*(i+j)
(B+c)*3*(i+j)
(B+C)*2*j

So the total number is 3. And we could also have:

3*(B+C+D)*(i+j)
2*(B+C)*D
2*D*(i+j)

which is also 3.

I wanna ask that is there a algorithm to determine the minimum number of Cartesian products from a set of formulas? And also come up with these products?