次のように定義されたセットのリストがあるとします(この例では3セット)。
A = [1, 2, 3, 4, 5]
B = [4, 5, 6, 7, 8]
C = [1, 2, 3, 4, 5, 6, 7, 8]
セットで定義されている要素の総数:18
セットの定義を単純化するために、セットに共通するサブセットを見つけたいと思います。
この例では、[4, 5]
はすべてのセットに共通です。すべてのセットの間に intersection を適用することで、これを簡単に見つけることができます。次に、次のようにセットの定義を書き換えます。
A, B, C = [4, 5]
A = [1, 2, 3]
B = [6, 7, 8]
C = [1, 2, 3, 6, 7, 8]
要素の総数:14
ただし、これはさらに改善できます。
A, C = [1, 2, 3]
B, C = [6, 7, 8]
A, B, C = [4, 5]
要素の総数:8
私の質問は:この例のようにセットの定義を簡略化するためのアルゴリズム(疑似コード)はありますか?
私は https://stackoverflow.com/questions/26028124/the-intersection-of-all-combinations-of-n-sets/26028865#26028865 で同様の質問に回答し、何が違うのか2番目のマップは、要素をそのセットのすべてのサブセットではなく、要素が含まれているセットのセットにマップする必要があります。