【发布时间】:2015-06-27 21:16:56
【问题描述】:
我有n 集合,有限宇宙的子集。我想计算n*n 矩阵,其中(I, J) 条目包含集合I 和集合J 的交集的基数。 n 的顺序是50000。
我的想法是将矩阵拆分为足够小的块,以便每个条目有一个线程。每个线程都应该使用bitwise and 计算交集。
有没有更有效的方法来解决这个问题?
【问题讨论】:
-
集合的大小和宇宙的大小可能非常相关;您应该发布您感兴趣的各种参数的示例。
-
据我了解,(I,J) 的基数应该与 (J,I) 相同,所以即使在您的幼稚实现中,您也只需要计算大约
n*n/2的元素矩阵 -
@Hurkyl 宇宙的大小约为200000,集合的大小约为20000-30000。
-
@Slizzered 是的,矩阵是对称的,我正在考虑使用this 映射将线性结构上的三角矩阵分割成块。
标签: algorithm cuda set gpu intersection