Supponiamo che io sono un'entità con 3 attributi: A1, A2, A3, tale che:
- A1 può avere solo valori: 1, 2, 3
- A2 può avere solo valori: 10, 20, 30, 40, 50
- A3 può avere solo valori: 100, 200
E una serie di regole, ad esempio:
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))
Poi c'è un predicato: R = R1 or R2 or R3
che vorrei ridurre al minimo. Il fatto è che A1=1
copre tutte le possibili variazioni di A2
e A3
, in modo che possiamo portare in un separato clausola: R = (A1=1) or (the rest)
Ho provato boolean metodi di minimizzazione da parte di dichiarazione delle variabili a=(A1=1), b=(A1=2), ..., k=(A3=200)
tuttavia non sembra funzionare, perché:
- boolean optimizer non è a conoscenza di tutti i valori di Un attributo
- le variabili booleane non sono indipendenti Quando si cerca di risolvere questi problemi, l'espressione è di diventare troppo complesso e né QMC, non Espresso non è in grado di ridurre in modo desiderato.
Ho anche provato a memorizzare ogni per ogni mapping e nel caso in cui uno di essi hanno tutti i valori di un altro, usarlo come un'aggregazione di ancoraggio, quindi rimuovere e ripetere, ma ci vuole l'eternità e un bel po ' di RAM.
Forse siamo in grado di rappresentare i valori di attributo come impostare e affrontare dal punto di vista teorico.
Avete mai affrontato un problema questo? Siete a conoscenza di modi migliori per risolvere il problema? (euristica sono ok così)