Supongamos que tengo una entidad con 3 atributos: A1, A2, A3, tales que:
- A1 sólo puede tener los valores: 1, 2, 3
- A2 sólo pueden tener valores: 10, 20, 30, 40, 50
- A3 sólo puede tener los valores: 100, 200
Y una serie de reglas, por ejemplo:
R1: (A1 in (1, 2)) AND (A2 in (20, 40, 50)) AND (A3 IN (100))
R2: (A1 in (1, 3)) AND (A2 in (10, 30)) AND (A3 in (200))
R3: (A1 in (1, 2)) AND (A2 in (10)) AND (A3 in (100))
Entonces no es un predicado: R = R1 or R2 or R3
que me gustaría minimizar. La cosa es que A1=1
cubre todas las posibles variaciones de A2
y A3
, por lo que podemos llevar en un apartado independiente: R = (A1=1) or (the rest)
He intentado booleano minimización de los métodos por declarar las variables como a=(A1=1), b=(A1=2), ..., k=(A3=200)
sin embargo , no parece funcionar, porque:
- boolean optimizador no es consciente de todos los valores de Un atributo
- las variables booleanas no son independientes Cuando se trata de abordar estos problemas, la expresión se está convirtiendo en demasiado complejo y ni QMC, no Espresso no es capaz de minimizar en la forma deseada.
También he tratado de almacenar cada uno-para-cada una de las asignaciones y en caso de que uno de ellos tiene todos los valores de la otra, lo utilizan como una agregación de anclaje, a continuación, retire y repetir, pero se necesita la eternidad y un buen montón de memoria RAM.
Tal vez podemos representar los valores de atributo como un conjunto y la dirección de la teoría de conjuntos punto de vista.
¿Alguna vez has enfrentado a un problema de este tipo? Es usted consciente de las mejores maneras de resolverlo? (heurísticas son bien)