Să presupunem că o entitate cu 3 atribute: A1, A2, A3, astfel încât:
- A1 poate avea doar valorile: 1, 2, 3
- A2 poate avea doar valorile: 10, 20, 30, 40, 50
- A3 poate avea doar valorile: 100, 200
Și o serie de reguli, de exemplu:
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))
Apoi, există un predicat: R = R1 or R2 or R3
, pe care aș dori să-l minimiza. Chestia e că A1=1
acoperă toate variantele posibile de A2
și A3
, astfel încât să putem aduce într-o clauză separată: R = (A1=1) or (the rest)
Am încercat boolean minimizarea metode de a declara variabile ca a=(A1=1), b=(A1=2), ..., k=(A3=200)
, cu toate acestea, nu pare să funcționeze, pentru că:
- boolean de optimizare nu este conștient de toate valorile de atribut Un
- variabile booleene nu sunt independente Când încercarea de a aborda aceste probleme, expresia devine prea complex și nici QMC, nu Espresso nu este capabil de a reduce în modul dorit.
Am încercat, de asemenea, pentru a stoca fiecare-cu-fiecare mapările și în cazul în care unul dintre ei avea toate valorile de altul, de a folosi ca o agregare de ancorare, apoi scoateți-l și se repetă, dar este nevoie de eternitate și destul de o mulțime de RAM.
Poate putem reprezenta valori de atribute ca un set și adresa de teoria mulțimilor punct de vedere.
Te-ai confruntat vreodată o problemă cu asta? Ești conștient de modalități mai bune de a rezolva? (euristici sunt ok la fel de bine)