从一组集合中找出所有不相交集合的算法是什么
What can be the algorithm to find all disjoint sets from a set of sets?
我有'n'个集合(n<10)。每组可以有1000个元素。我想为这些集合找到所有不相交的集合。比如说,我有套
A = {2,5,6,7}, B = {5,1} and C = {5,7}.
那么输出将是CCD_ 1。这方面的算法是什么?我想找到成对的不相交集,然后使用这些新的(不相交的)集从剩下的集中再次找到不相交集。但这不会很好地扩展。希望这有帮助:图表示例
您可以将您的问题视为布尔型双条目映射,元素是行,集合是列,布尔型是问题的答案,是集合中包含的元素。例如,你的例子是:
t A B C
2 1 0 0
5 1 1 1
6 1 0 0
7 1 0 1
1 0 1 0
然后为每个元素创建一个键,描述它所在的差异集,并将该元素注册到映射中。
例如,如果我们将密钥创建函数视为这样的函数:
int keyFunction(bool Xa, bool Xb, bool Xc) {
int key =0;
if (Xa) {key+=4;}
if (Xb) {key+=2;}
if (Xc) {key+=1;}
return key;
}
然后我们可以创建地图:
Key ElementsQueue
0 []
1 []
2 [1]
3 []
4 [2,6]
5 [7]
6 []
7 [5]
并返回此映射的元素。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- C++避免重复声明的语法是什么
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- C++从另一个类访问公共静态向量的正确方法是什么
- python集合的C++等价物是什么.计数器
- 重载运算符的范围是什么?它是否会影响作为类成员的集合的插入函数?
- 在集合的情况下使用emplace_hint的用例是什么?
- 可用于存储和管理整数集合的最佳C++数据结构是什么
- 继承Java集合接口(Set、Map、List等)的C++等价物是什么?或者扩展AbstractCollection
- 在 c++ 中搜索集合的最有效方法是什么
- 从多个类中检索集合的值,正确的方法是什么?
- 从一组集合中找出所有不相交集合的算法是什么
- 拥有所有派生自同一基类的类实例集合的最佳方法是什么?
- [唯一相等运算符]在集合中查找重复元素并将其分组的快速算法是什么
- 访问双元素集合中的另一个元素的简洁语法是什么?
- 当需要修改元素时,另一种类似集合的数据结构是什么?
- 在派生类中处理派生对象集合的最佳方法是什么?
- C++中目前使用最广泛的集合是什么
- 将文本文件转换为 std::string 数组/集合的最佳方法是什么 C++.