不是相同的。O(n * 2^n ) 代表着一个算法的时间复杂度与输入规模为n时,算法的运行时间的增长率为 Θ(2^n),而 O(2^n) 表示输入规模为n时,算法的运行时间的增长率无论如何都是 Θ(2^n)。例如,下面这个指数级算法的时间复杂度为 O(n * 2^n):
def exponential_algo(n):
for i in range(n):
for j in range(2**n):
# do something
而下面这个只与输入规模有关的指数级算法的时间复杂度为 O(2^n):
def exponential_algo(n):
for i in range(2**n):
# do something
因此,O(n * 2^n ) 与 O(2^n) 并不相同。