logo

Complexidade temporal de um loop quando a variável do loop “expande ou diminui” exponencialmente

Para tais casos, a complexidade de tempo do loop é O(log(log(n))). Os casos a seguir analisam diferentes aspectos do problema. Caso 1: CPP
for (int i = 2; i <=n; i = pow(i k))  {   // some O(1) expressions or statements } 
In this case i takes values 2 2k(2k)k= 2k2(2k2)k= 2k3... 2kregistrok(registro(n)). O último termo deve ser menor ou igual a n e temos 2kregistrok(registro(n))= 2registro(n)= n que concorda totalmente com o valor do nosso último termo. Então há no log totalk(log(n)) muitas iterações e cada iteração leva um tempo constante para ser executada, portanto, a complexidade de tempo total é O(log(log(n))). Caso 2: CPP
// func() is any constant root function for (int i = n; i > 1; i = func(i))  {   // some O(1) expressions or statements } 
In this case i takes values n n1/k(n1/k)1/k=n1/k2n1/k3... n1/kregistrok(registro(n))então há no log totalk(log(n)) iterações e cada iteração leva tempo O(1) então a complexidade total do tempo é O(log(log(n))). Consulte o artigo abaixo para análise de diferentes tipos de loops. https://www.geeksforgeeks.org/dsa/how-to-analyse-loops-for-complexity-análise-de-algoritmos/ Criar questionário