2012-05-22 14 views
5

Ich habe ein Universum von Elementen, die in n nicht disjunkte Mengen organisiert sind. Ich habe m Ausdrücke mit diesen Sets gebaut, mit Union/Kreuzung/Differenz-Operatoren. Bei einem Element muss ich diese m Ausdrücke auswerten, um herauszufinden, welche der "abgeleiteten" Mengen das Element enthält. Ich möchte das "abgeleitete" Set nicht berechnen, weil es sehr zeit- und platzineffizient sein wird. Gibt es eine Möglichkeit zu sagen, ob ein Element in einer der abgeleiteten Mengen liegt, nur indem man seinen Ausdruck betrachtet? Für z.B. Wenn der Ausdruck C = A U B ist und das Element in Menge A liegt, kann ich sagen, dass es in Menge C liegt. Gibt es C-Bibliotheken, um Berechnungen dieser Art durchzuführen?Auswertung von Mengenausdrücken

Antwort

4

wenn im nicht irrt, let e = das Element

jeden Satz A, B mit echten ersetzen, wenn e in der Menge ist, falsch, wenn es nicht. Konvertieren Sie dann die Mengenoperatoren in ihre logischen Entsprechungen und bewerten Sie den Ausdruck als boolesch. Es sollte alles gut zu Booleschen Operatoren, sogar Xor und so weiter passen.

zum Beispiel, wenn e in beide AB, aber nicht D

C = (A U B) xor D 

es in C sein würde, weil

C = (true or true) xor false 
->  (true)  xor false 
-> true 

Das ziemlich schnell sein könnte, wenn Sie schnell, ob ein Element finden ist in einem Set

+0

heh, ich erinnere mich an dieses Zeug jetzt. "A - B" ist genau dann wahr, wenn A wahr und B falsch ist. – goat

+0

Das ist eine ziemlich gute Lösung, danke! Ich habe bereits eine Karte von Elementen und den Mengen, zu denen sie gehören, also sollte die Berechnung schnell sein. – Oceanic