logo

Cilpas laika sarežģītība, kad cilpas mainīgais “paplašinās vai sarūk” eksponenciāli

Šādos gadījumos cilpas laika sarežģītība ir O(log(log(n))). Sekojošie gadījumi analizē dažādus problēmas aspektus. 1. gadījums: 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... 2kžurnālsk(log(n)). Pēdējam vārdam ir jābūt mazākam vai vienādam ar n, un mums ir 2kžurnālsk(log(n))= 2žurnāls(n)= n, kas pilnībā sakrīt ar mūsu pēdējā vārda vērtību. Tātad ir kopējais žurnālsk(log(n)) daudzas iterācijas, un katrai iterācijai ir vajadzīgs nemainīgs laiks, tāpēc kopējā laika sarežģītība ir O(log(log(n))). 2. gadījums: 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/kžurnālsk(log(n))tātad ir kopā žurnālsk(log(n)) iterācijas un katra iterācija prasa laiku O(1), tāpēc kopējā laika sarežģītība ir O(log(log(n))). Skatiet zemāk esošo rakstu, lai analizētu dažādu veidu cilpas. https://www.geeksforgeeks.org/dsa/how-to-analyse-loops-for-complexity-analysis-of-algorithms/ Izveidojiet viktorīnu