Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

153
Views
Tratando de entender la razón de esta complejidad del tiempo

Estoy tratando de calcular la complejidad temporal de estos dos algoritmos. El libro al que me refiero especifica estas complejidades temporales de cada uno.

A) Algoritmo A: O(nlogn)

 int i = n; while (i > 0) { for (int j = 0; j < n; j++) System.out.println("*"); i = i / 2; }

B) Algoritmo B: O(n)

 while (n > 0) { for (int j = 0; j < n; j++) System.out.println("*"); n = n / 2; }

Puedo ver cómo algo. A es O(nlogn) . El bucle for es O(n) y el bucle while es O(logn). Sin embargo, no veo cómo AlgoB tiene una complejidad de tiempo de O (n). Esperaba que fuera O(nlogn) también. Cualquier ayuda sería apreciada.

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

El algoritmo B está imprimiendo la mitad de los inicios en cada iteración. Suponga que n=10, entonces:

 n=10 -> 10* n=5 -> 5* n=2 -> 2* n=1 -> 1*

En total se imprimen 18*. Imprimirás n + n/2 + n/4 + ... + n/(2^i) estrellas. ¿ i valoro? Es igual al número de pasos necesarios para que n se convierta en 0. En otros términos, es el exponente al que se debe elevar 2 para producir n : log_2(n) . Obtienes la suma en la imagen:

ingrese la descripción de la imagen aquí

Que se puede aproximar a O(n).

over 4 years ago · Santiago Trujillo Report

0

Veamos el Algoritmo B desde un punto de vista matemático.

El número de * impreso en el primer ciclo es n . El número de * impreso en cada bucle subsiguiente es como máximo n /2. Esa relación de recurrencia conduce a la secuencia:

 n + n/2 + n/4 + n/8 + ...

Si esta fuera una secuencia infinita, entonces la suma podría representarse mediante la fórmula n /(1 - r ), donde r es el factor entre los términos. En este caso, r es 1/2, por lo que la sucesión infinita tiene una suma de 2( n ).

Su algoritmo ciertamente no continuará para siempre, y cada vez que se repite, puede estar imprimiendo menos de la mitad de las estrellas del bucle anterior. El número de estrellas impresas es por lo tanto menor o igual a 2( n ).

Debido a que los factores constantes se eliminan de la complejidad del tiempo, el algoritmo es O (n).

Este concepto se denomina complejidad amortizada , que promedia el costo de las operaciones en un ciclo, incluso si algunas de las operaciones pueden ser relativamente costosas. Consulte esta pregunta y la página de Wikipedia para obtener una explicación más detallada de la complejidad amortizada.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!