5

我有一个元素的宇宙,它被组织成 n 个不相交的集合。我使用这些集合构建了 m 个表达式,使用联合/交集/差异运算符。因此,给定一个元素,我需要评估这些 m 表达式,以找出哪些“派生”集合包含该元素。我不想计算“派生”集,因为它会在时间和空间上非常低效。有没有办法仅仅通过查看它的表达式来判断一个元素是否位于某个派生集中?例如,如果表达式是 C = AUB 并且元素位于集合 A 中,那么我可以说它将位于集合 C 中。是否有任何 C 库来执行这种性质的计算?

4

1 回答 1

4

如果我没记错,让 e = 元素

如果 e 在集合中,则将每个集合 A、B 替换为 true,否则为 false。然后,将集合运算符转换为其逻辑等效项,并将表达式计算为布尔值。它应该很好地映射到布尔运算符,甚至是异或之类的东西。

例如,如果 e 在 AB 中,但不在 D 中

C = (A U B) xor D

它会在 C 中,因为

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

如果您可以快速找到一个元素是否在集合中,那可能会非常快

于 2012-05-22T06:44:52.370 回答