【发布时间】:2020-10-20 04:04:32
【问题描述】:
算法需要从给定的列表中生成所有可能的组合(空集除外)。
list => [1, 2, 3]
combinations => [{1}, {2}, {3}, {1,2}, {1,3}, {2,3}, {1,2,3}]
该算法将花费 O(2n) 时间复杂度来生成所有组合。但是,我不确定改进的算法是否可以降低这种时间复杂度。如果存在改进的算法,请分享您的知识!
如果它采用指数 O(2n),我想了解一下该算法属于 P、NP、NP-Complete 或 NP-Hard 的哪个类。在此先感谢:)
【问题讨论】:
-
如果代码的目标是生成所有可能组合的列表,那么不可能比 O(2^n) 做得更好。算法的复杂度永远不会小于输出的大小。
标签: algorithm time-complexity p-np