2012-05-22 270 views
5

我有一個元素的宇宙組織成n個非不相交的集合。我有使用這些集合構建的m個表達式,使用union/intersection/difference操作符。因此,給定一個元素,我需要評估這些m表達式,以找出哪些「派生」集包含該元素。我不想計算「派生」集合,因爲它將非常耗費時間和空間。有沒有辦法通過查看其表達式來說明元素是否會位於派生集合之一中?對於例如如果表達式是C = A U B並且元素位於集合A中,那麼我可以說它將位於集合C中。是否有任何C庫執行這種性質的計算?評估集合表達式

回答

4

如果即時通訊不誤, 假設E =元素

替換每個組A,B與真,如果e是該組中,假如果它不是。然後,將集合運算符轉換爲其邏輯等價物,並將表達式評估爲布爾值。它應該都映射到布爾運算符,甚至xor和東西。

例如,如果E是在這兩個AB,但不是D

C = (A U B) xor D 

這將是C,因爲

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

這可能是非常快的,如果你能很快找到,如果一個元素是在一套

+0

嘿,我現在記得這個東西。當且僅當A爲真且B爲假時,「A - B」爲真。 – goat

+0

這是一個非常優秀的解決方案,謝謝!我已經有了它們所屬的元素和集合的映射,所以計算速度應該很快。 – Oceanic