Está en la página 1de 3

PARCIAL ANÁLISIS DE ALGORITMOS

Javier Abuchaibe Manzano

1. De acuerdo con la notación Big O existen diferentes valores para un algoritmo, por favor
explique qué significa la notación Big O(1) y escriba un algoritmo de ejemplo.

La notación Big O(1) se utiliza en casos donde se presenta tiempo constante en la tarea sin
importar el input.
Ejemplo:
int x = 1;
int y = 2;
int suma = x + y;
Console.WriteLine(suma);

2. Hacer un algoritmo recursivo para el cálculo del n-ésimo número de Fibonacci. Dar
también una fórmula explícita f(n) = ..., no recursiva, que devuelva el n-ésimo número de
Fibonacci. Calcular la Big O y complejidad para ambos.

Recursivo =
O(𝟐𝒏 )
Explícito:
O(n)
2+2n

3. Work out the computational complexity (in the “Big-Oh” sense) of the following piece of
code and explain how you derived it using the basic features of the “Big-Oh” notation:

for( int bound = 1; bound <= n; bound *= 2 ) ----> O(log n)


{
for( int i = 0; i < bound; i++ ) -----> O(n)
{
for( int j = 0; j < n; j += 2 ) ----->O(n)
{
... // constant number of operations
}
for( int j = 1; j < n; j *= 2 ) -----> O(log n)
{
... // constant number of operations
}
}
}
n Log^2(n) + n^2 Log(n)

O(𝒏𝟐 )
4. Work out the computational complexity of the following piece of code.

for ( i=1; i < n; i *= 2 ) ------> Log(n)+n+3


{
for ( j = n; j > 0; j /= 2 ) 2Log(n)+2
{
for ( k = j; k < n; k += 2 ) -----> n+4
{
sum += (i + j * k );
}
}
}

n+4 * 2Log(n)+2 = 2nLog(n) + 2n + 8Log(n)+8 * Log(n)+n+3


=2nLog^2(n) + 2n^2Log(n)+6nLog(n) + 2nLog(n)+2n^2+6n +
8Log^2(n)+8nLog(n)+24Log(n) + 8Log(n)+8n+24

= 2nLog^2(n)+8Log^2(n)+2n^2Log(n)+16nLog(n)+32Log(n)+2n^2+14n+24

También podría gustarte