I have a mathematical/programming question. I have a big datafile (.mat-file) which contains sort of boolean data: it is a matrix of doubles that express the following data:
- x1 = 1, x2 = 0, x3 = 0, x4 = random(0,1), ...,xn = 1
- x1 = 0, x2 = 0, x3 = random(0,1), x4 = 1, ... xn = 0
- etc...
So each variable xi (element of the matrix) can have a value 0, 1 or a random(0,1), i.e. a value between 0 and 1. That actual value of the random number does not matter, so you can consider it to be for instance 1/2. The set of all equations form the conditions in which a variable y is true. The set of equations is extremely large (over 3 million), but I suspect that there might be quite simple underlying logical rules. Well, it is a bit more than a hunch: I tried a bit and found for instance that e.g. if x1 = 0 and x2 = 0 and x3 = 1 is common for a large portion of the equations. However, manuallly investigating the dataset to find such rules is not very practical.
My ultimate goal is to come-up with a smaller set of rules that explain when y is true (rather than listing all 3 million rules).
I'm kind of unsure how to solve this? Is this a problem of three-valued logic simplication or still binary logic by omitting a third option ? Should I see the first two expressions as ( x1 = TRUE AND x2 = FALSE AND x3 = FALSE AND x4 = UKNOWN AND ... AND xn = TRUE ) OR ( x1 = TRUE AND x2 = FALSE AND x3 = UKNOWN AND x4 = TRUE AND ... AND xn = FALSE ) OR ....
or should I consider it as ( x1 = TRUE AND x2 = FALSE AND x3 = FALSE AND ... AND xn = TRUE ) OR ( x1 = TRUE AND x2 = FALSE AND x4 = TRUE AND ... AND xn = FALSE ) OR ....
in which I have omitted the UNKOWN option.
Additionally, can you suggest software in which I can do this calculation? Thank you for all you suggestions!