有以下对应的集合,求存在于所有集合(不要求同时存在于所有集合中)最小元素集合
X1场景对应集合(A、B、C)
X2场景对应集合(B、C)
X3场景对应集合(D)
X4场景对应集合(A、F)
X5场景对应集合(B、E)
比如上述场景结果集合为B、D、F
B存在于X1,X2,X5场景,D存在于X3场景,F存在于X4场景。
不知各位有什么好的算法解决。
有以下对应的集合,求存在于所有集合(不要求同时存在于所有集合中)最小元素集合
X1场景对应集合(A、B、C)
X2场景对应集合(B、C)
X3场景对应集合(D)
X4场景对应集合(A、F)
X5场景对应集合(B、E)
比如上述场景结果集合为B、D、F
B存在于X1,X2,X5场景,D存在于X3场景,F存在于X4场景。
不知各位有什么好的算法解决。
对算法不是很擅长,给一个复杂度有点高的算法:
设最小集合的候选集合为C,
初始化:C={X1的每个元素}// 如C={A},{B},{C}三个集合
对于每个Xi,做如下操作:
foreach 集合i in C
集合i中的元素与Xi的元素做归并
//如X2与C归并 {AB},{AC},{B},{C}
归并后去除C中重复的元素//如AB和BA的归并得到的结果是相同的
End
对于C,取其中长度最小的结合就是最终的结果。
后续可以以此为基础做优化,比如{AB},{AC},{B},{C}这个中间结果来说,{AB},{AC}这两个候选集合是否可以去掉(没想出来是否可以)