2012-05-22 11 views
5

私は、n個の非互いに素な集合に編成された要素の世界を持っています。これらの集合を使って、union/intersection/difference演算子を使ってm式を構築しました。要素を与えられたので、これらのm式を評価して、どの派生セットに要素が含まれているかを調べる必要があります。非常に時間的にも空間的にも効率が悪いので、「派生」集合を計算したくありません。その表現を見るだけで要素が派生した集合の中にあるかどうかを言う方法がありますか?例えば、式がC = A U Bであり、要素が集合Aにある場合、集合Cにあると言うことができます。この性質を計算するCライブラリはありますか?集合式を評価する

答えて

4

eは、そのない場合はfalse、セット内にある場合、 LET eを間違えないイム場合=要素

が真で各セットA、Bを交換してください。次に、設定された演算子を論理的に等価なものに変換し、その式をブール値として評価します。それはすべて、xorやstuffのようなブール演算子にうまく対応する必要があります。例えば

eはD

C = (A U B) xor D 

両方ABであるが、ない場合は要素場合は、すぐに見つけることができるかどうか

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

はかなり速いことができることがあるため、それはCになりますがセットに入っています

+0

heh、私は今このことを覚えています。 'A - B'は、Aが真でBが偽である場合にのみ真です。 – goat

+0

これはかなり優れたソリューションです、ありがとう!私は既に要素のマップとそれが属するセットを持っているので、計算は速くなければなりません。 – Oceanic