Suponhamos que eu tenha uma entidade com 3 atributos: A1, A2, A3 tais que:
- A1 só pode ter os valores: 1, 2, 3
- A2 só pode ter valores: 10, 20, 30, 40, 50
- A3 só pode ter os valores: 100, 200
E um número de regras, por exemplo:
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))
Em seguida, há um predicado: R = R1 or R2 or R3
, o que eu gostaria de minimizar. A única coisa é que A1=1
cobre todas as variações possíveis de A2
e A3
, assim que nós pode trazê-lo em separado cláusula: R = (A1=1) or (the rest)
Eu tentei boolean minimização de métodos declarando variáveis como a=(A1=1), b=(A1=2), ..., k=(A3=200)
no entanto , ele não parece funcionar, porque:
- boolean optimizador não está ciente de todos os valores de atributo de Um
- boolean variáveis não são independentes Ao tentar abordar esses problemas, a expressão está a tornar-se muito complexa e nem QMC, não de café Expresso não é capaz de minimizá-lo da maneira desejada.
Eu também tentei de armazenamento de cada um-para-cada mapeamentos e no caso de um deles ter todos os valores de um outro, de usá-lo como uma agregação de âncora, em seguida, remova-o e repita, mas leva a eternidade e um monte de RAM.
Talvez possamos representam os valores de atributo como um conjunto e endereço-a partir da teoria dos conjuntos ponto de vista.
Alguma vez você já enfrentou um problema isso? Você está ciente de melhores formas de resolvê-lo? (heurística são bem)