После пересмотра мы пришли к выводу, что временная сложность на самом деле равна O (2 ^ n)
Вопрос в том, что такое временная сложность? Это O (2 ^ n) или?
Я полагаю, что это связано с тем, что цикл for считается запущенным n раз. Тогда вложенный цикл while пробегает 2 ^ n времени. Второй цикл while работает 2 ^ n времени.
Algorithm subsetsGenerator(T)
Input: A set T of n elements
Output: All the subsets of T stored in a queue Q {
create an empty queue Q;
create an empty stack S;
let a1, a2, …, an be all the elements in T;
S.push({}); // Push the empty subset into the stack
S.push({a1})
for ( each element ai in T-{a1} )
{
while (S is not empty )
{
x=S.pop;
Q.enqueue(x);
x=x ∪ { ai };
Q.enqueue(x);
}
if ( ai is not the last element )
while (Q is not empty )
{
x=Q.dequeue();
S.push(x);
}
}
}
Изменить: Если вы хотите, чтобы я разбил анализ, прокомментируйте ниже.