3 Özniteliğe sahip bir varlığım olduğunu varsayalım: A1, A2, A3 öyle ki:
- A1 sadece değerlere sahip olabilir: 1, 2, 3
- A2 sadece değerlere sahip olabilir: 10, 20, 30, 40, 50
- A3 sadece değerlere sahip olabilir: 100, 200
Ve bir dizi kural, örneğin:
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))
Sonra bir yüklem var: R = R1 or R2 or R3
En aza indirgemek istiyorum. Mesele şu ki A1=1
tüm olası varyasyonları kapsar A2
ve A3
, bu yüzden ayrı bir maddeye getirebiliriz: R = (A1=1) or (the rest)
Değişkenleri şu şekilde bildirerek boole küçültme yöntemlerini denedim a=(A1=1), b=(A1=2), ..., k=(A3=200)
ancak, işe yaramıyor gibi görünüyor, çünkü:
- boole iyileştiricisi, öznitelik A'nın tüm değerlerinin farkında değil
- boole değişkenleri bağımsız değildir Bu sorunları çözmeye çalışırken, ifade çok karmaşık hale geliyor ve ne QMC ne de Espresso bunu istenen şekilde en aza indiremiyor.
Ayrıca her bir eşlemeyi saklamaya çalıştım ve bunlardan birinin diğerinin tüm değerlerine sahip olması durumunda, onu bir toplama çapası olarak kullanın, sonra kaldırın ve tekrarlayın, ancak sonsuzluk ve oldukça fazla RAM alır.
Belki öznitelik değerlerini bir küme olarak temsil edebilir ve küme teorisi açısından ele alabiliriz.
Hiç böyle bir sorunla karşılaştın mı? Bunu çözmenin daha iyi yollarının farkında mısın? (sezgisel yöntemler de iyidir)