Supposons que j'ai une entité avec 3 attributs: A1, A2, A3, tels que:
- A1 ne peut avoir les valeurs: 1, 2, 3
- A2 peut seulement avoir des valeurs: 10, 20, 30, 40, 50
- A3 ne peut avoir les valeurs suivantes: 100, 200
Et un certain nombre de règles, par exemple:
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))
Ensuite, il ya un prédicat: R = R1 or R2 or R3
que je tiens à minimiser. Le truc, c'est que A1=1
couvre toutes les variantes possibles de l' A2
et A3
, de sorte que nous pouvons l'introduire dans un alinéa distinct: R = (A1=1) or (the rest)
J'ai essayé la minimisation booléenne méthodes en déclarant des variables comme a=(A1=1), b=(A1=2), ..., k=(A3=200)
toutefois, il ne semble pas fonctionner, parce que:
- boolean optimiseur n'est pas au courant de toutes les valeurs d'Un attribut
- les variables booléennes ne sont pas indépendants Lorsque vous essayez de répondre à ces questions, l'expression est devenue trop complexe et ni QMC, pas l'Espresso n'est pas en mesure de réduire de la manière désirée.
J'ai aussi essayé de stocker chaque à chaque les mappages et dans le cas où l'un d'eux toutes les valeurs de l'autre, l'utiliser comme une agrégation d'ancrage, puis l'enlever et de le répéter, mais il faut de l'éternité et de beaucoup de RAM.
Peut-être que l'on peut représenter les valeurs d'attribut comme un ensemble et de l'aborder à partir de la théorie des ensembles point de vue.
Avez-vous jamais été confronté à ce qu'un problème? Connaissez-vous des meilleures façons de le résoudre? (les heuristiques sont ok aussi)