【发布时间】:2016-08-23 01:00:53
【问题描述】:
在确定线性时间复杂度算法以构建有限元素 U 的一组子集的交集图时,我们将不胜感激。
例如,令 U = {a,b,c,d,e,f,g,h}。考虑 U 的集合 S = { {{a,b}, {c,d}, {a,e,h}, {e,f,g} }。我们需要以线性方式构建 S 的交集图 G时间,如果可能的话。 S 中的每个元素都是 G 的一个节点。当且仅当 N1 和 N2 至少有一个共同的元素时,G 中的两个节点 N1 和 N2 之间有一条边。
例如,上面 S 的交集图 G 将有四个节点,即 {a,b}、{c,d}、{a,e,h} 和 {e,f,g}。 G 将有 G 的 2 条边,即 {a,b}-{a,e,h} 和 {a,e,h}-{e,f,g}。
是否有一种线性算法可以从一组有限元素的子集构建交集图?
【问题讨论】:
-
你的意思是输入的大小是线性的还是输出的大小是线性的?一般来说,输入的大小不可能是线性的,因为输出图的大小可能与输入的大小成二次方。
-
边不应该包括 {a,e,h} 而不是 {a,e,i}?
-
你能展示任何在这个算法上的工作吗?也许一个正确但太慢?事实上,你不是在寻求帮助,而是要求别人为你做这件事。
-
@templatetypedef 显然,没有算法可以比输出的大小更快。通常,“线性”的意思是“输入大小与输出大小成线性”。这是有道理的,因为读取输入/写入输出是算法的一部分(有时您实际上不必读取所有输入,但您总是必须写入输出)
-
@templatetypedef 感谢您的评论。
标签: algorithm data-structures set intersection