Załóżmy, że mam istotę z 3 atrybutów: A1, A2, A3 takie, że:
- A1 może mieć tylko wartości: 1, 2, 3
- A2 może mieć tylko wartości: 10, 20, 30, 40, 50
- A3 może mieć tylko wartości: 100, 200
I szereg zasad, na przykład:
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))
To jest predykat: R = R1 or R2 or R3
chciałbym ograniczyć do minimum. Rzecz w tym, że A1=1
obejmuje wszystkie możliwe opcje A2
i A3
tak , że możemy zrobić to w osobnym punkcie: R = (A1=1) or (the rest)
Próbowałem булевы metody minimalizacji, ogłaszając zmienne jak a=(A1=1), b=(A1=2), ..., k=(A3=200)
jednak to chyba nie działa, bo:
- logiczny optymalizator nie zna wszystkich wartości atrybutu A
- logiczne zmienne nie są niezależne Podczas próby rozwiązać te problemy wyrażenie staje się zbyt skomplikowane, ani QMC, ani Kawy nie mogą zminimalizować w pożądany sposób.
Próbowałem również przechowywać mapowania "każdy do każdego", i w przypadku, jeśli jeden z nich ma wszystkie wartości innego, użyj go jako kotwice agregacji, a następnie usuń go i spróbuj, ale to trwa wieczność i sporo pamięci ram.
Być może uda nam się przedstawić wartości atrybutów w postaci zestawu i rozważyć ich z punktu widzenia teorii mnogości.
Czy kiedykolwiek się spotkałem z takim problemem? Czy znacie najlepsze sposoby jej rozwiązania? (эвристика też w porządku)