SAU predicatul optimizare

0

Problema

Să presupunem că o entitate cu 3 atribute: A1, A2, A3, astfel încât:

  1. A1 poate avea doar valorile: 1, 2, 3
  2. A2 poate avea doar valorile: 10, 20, 30, 40, 50
  3. 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ă:

  1. boolean de optimizare nu este conștient de toate valorile de atribut Un
  2. 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)

1

Cel mai bun răspuns

1

O metodă de optimizare expresia de evaluare ar putea fi împărțit în mod repetat regulile privind atributul cu cele mai putine valori. După această expansiune ai putea colecta valorile din nou pentru cei care au aceleași cu cele pe ultima clauză.

  1. Face 2 grupe, una pentru regulile care accepta A3 = 100 și una de reguli care accepta A3 = 200. O regulă poate sfârși în ambele grupuri. Apoi modifica regulă în grup, astfel încât se acceptă doar valoarea pentru grup și nu pe celălalt.

  2. Grupul acele grupuri din nou pe valorile A1, folosind aceeași logică.

V-ar termina cu un extins exprimare de genul asta:

A3 = 100 AND (
    (A1 = 1 AND A2 IN (10, 20, 40, 50)) OR
    (A1 = 2 AND A2 IN (10, 20, 40, 50)))
OR A3 = 200 AND (
    (A1 = 1 AND A2 IN (10, 30)) OR
    (A1 = 3 AND A2 IN (10, 30)))

Practic, vrem să aducem un copac cu valorile pentru A3 la adâncimea de 1 și valorile A1, la adâncimea de 2 și valorile pentru A2 la adâncimea de 3. Dacă există o cale de la rădăcină la frunze utilizând valorile atributelor atunci regula este realizată în caz contrar nu.

După care aveți posibilitatea să îmbinați toate nodurile cu acelasi subarbore și aceeași mamă. Pentru aceasta, puteți compara frunze de toate nodurile cu aceeași mamă și dacă se potrivesc puteți fuziona noduri. După care te duci cu un nivel mai sus si compara noduri cu aceeași mamă și așa mai departe.

Pentru exemplu, v-ar termina cu expresia:

A3 = 100 AND A1 IN (1, 2) AND A2 IN (10, 20, 40, 50) OR
A3 = 200 AND A1 IN (1, 3) AND A2 IN (10, 30)

Acest proces este destul de simplu și ar putea, de asemenea, scurta exprimare, nu numai optimiza pentru evaluare. S-ar putea să nu fie perfect, dar ar putea fi o modalitate de a începe.

2021-11-22 20:45:00

În alte limbi

Această pagină este în alte limbi

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................