Dopo la revisione, abbiamo concluso che la complessità temporale è in realtà O (2^n)Analisi della complessità del tempo usando big-o
La domanda è qual è la complessità del tempo? O (2^n) o?
La ragione per cui ritengo che ciò sia dovuto al ciclo for è considerata eseguita all'ora. Quindi il ciclo while annidato viene eseguito 2^n volta. Il secondo ciclo while viene eseguito 2^n volta.
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);
}
}
}
Modifica: Se vuoi che analizzi l'analisi, commenta qui sotto.
Sai quanto è grande l'uscita? Quanto tempo ci vorrà per produrre un output così grande, aggiungendo elementi all'output uno alla volta? Sia tu che i tuoi amici avete sbagliato l'analisi. – user2357112
Sì, ci stiamo ancora pensando, tuttavia lo stiamo analizzando utilizzando un set di 4 elementi. Se lo ripetiamo, ogni ciclo while dà 2^n, e il ciclo for dà solo un n. – Mikeez
C'è una domanda qui? – Charlie