n集的python“set.intersection”的时间复杂度

时间:2015-06-15 12:42:01

标签: python

我想知道python set.intersection的复杂性。我查看了文档和python的在线wiki,但是我没有找到多个集合的时间复杂度。

1 个答案:

答案 0 :(得分:3)

python wiki on time complexity lists单个交叉点 O (min(len( s ),len( t ))其中< em> s 和 t 是集合的大小,而 t 是一个集合。(英文:时间是大小和线性的大小较小的一组。)

注意:根据下面的评论,如果传递的参数不是一个集合,则此wiki条目是错误的。我已经更正了wiki条目。

如果您有 n 集(集合,而不是可迭代),您将执行 n -1个交叉点,时间可以是 ( n -1) O (len( s ))其中 s 是具有最小尺寸的集合。

请注意,当您进行交叉时,结果可能会变小,因此尽管 O 最差的情况,但实际上,时间会比这更好。

但是,looking at the specific code这个采用 min()的想法仅适用于一对集合,并且不会扩展到多个集合。所以在这种情况下,我们必须是悲观的,并将 s 作为具有最大尺寸的集合。