[问题] 多个set作交集

楼主: chunhsiang (= =)   2012-10-02 22:19:23
有n的不同大小的set
t1,t2,...,tn
将其n个set全部交集(这里用and当运算符号)起来
t1 and t2 and ... and tn
请问如何做效率能最好?
比如
A = {1, 2, 3}
B = {2, 3}
C = {1, 2}
D = {2}
(A and B) and (C and D)
= {2, 3} and {2}
= {2}
(((A and D) and B) and C
= (({2} and B) and C)
= {2} and C
= {2}
有不同的运算顺序
假设集合A与B作交集 n=|A| m=|B|
只需要O(n+m)
作者: CaptainH (Cannon)   0000-00-00 00:00:00
hash table ?
楼主: chunhsiang (= =)   0000-00-00 00:00:00
有个疑问是运算顺序是否会影响效率?如果会 那是否存在一个最好的顺序?还是说会随资料内容不同而有所不同如果会随资料改变 那平均最佳的选法是否存在?
作者: EdisonX (卡卡兽)   0000-00-00 00:00:00
我想到用 bitwise...这效率应该是超高,不过会受限就是了.
楼主: chunhsiang (= =)   0000-00-00 00:00:00
您是说将原本的set转为01的型式再作运算? 但宇集很大
作者: EdisonX (卡卡兽)   0000-00-00 00:00:00
bitwise 在意的是,set 是否为整数,及其最大、最小值
作者: aceldama (2-4)   0000-00-00 00:00:00
用java的话, 请爱用utils.MultiKeyMap

Links booklink

Contact Us: admin [ a t ] ucptt.com