【发布时间】:2010-09-14 10:36:08
【问题描述】:
假设有两组(非不相交的)点(笛卡尔空间),执行这两组的并集的最佳情况复杂度算法是什么?
【问题讨论】:
标签: algorithm union complexity-theory set
假设有两组(非不相交的)点(笛卡尔空间),执行这两组的并集的最佳情况复杂度算法是什么?
【问题讨论】:
标签: algorithm union complexity-theory set
由于点坐标是任意的并且它们之间没有特殊关系,我不认为这个问题是几何特定问题。有效地将 S1 和 S2 合并为一个新的集合 S 是一个通用问题。
我知道两种选择:
1) 当集合存储在hash table(实际上是一个哈希集)中时,联合在平均中取 O(|S1|+|S2|)。
2) 如果将结构存储在balanced search tree 中,假设 |S1|>|S2|,则可以实现 O(|S1| * Log(|S1|)) 的最坏情况时间。
【讨论】:
实际上,如果集合在平衡搜索树中,我认为你可以在 O(|S2| (1+log (|S1|/|S2|)) 中做到,其中 |S1|>=|S2 |。这是最坏情况下的最佳选择。
【讨论】: