Pregunta 2.c · Prácticas de programación UOC Juny 2020

Tema: Análisis de complejidad y eficiencia · Del examen Juny (2020)

Enunciado

A partir del código C de la función recursiva guess:

#define MAX 64

void guess (int v[MAX], int x, int value)

{

assert (0 <= x && x <= MAX);

if (x > 0) // (1)

{ // (2)

if (v[x-1] > value) v[x-1] = value; // (3)

guess(v, x-1, value); // (4)

}

}

c)

[30%] Deduce formalmente la complejidad computacional del algoritmo en su versión recursiva.

Enunciado: Pregunta 2.c · Prácticas de programación UOC Juny 2020

Solución

Según los criterios oficiales de corrección

Deduce formalmente la complejidad computacional del algoritmo en su versión recursiva.

Solución: Tomando como tamaño del problema el parámetro xx (número de elementos pendientes por procesar): - Caso base (x=0x = 0): solo se evalúa la condición de parada del `if`, por lo que T(0)=c0=O(1)T(0) = c_0 = O(1). - Caso recursivo (x>0x > 0): se realizan comparaciones y asignaciones elementales de coste constante más una llamada recursiva con tamaño x−1x - 1: T(x)=T(x−1)+c1T(x) = T(x - 1) + c_1 Desplegando la recurrencia: T(x)=T(x−1)+c1=T(x−2)+2c1=⋯=T(0)+x⋅c1=c0+c1xT(x) = T(x - 1) + c_1 = T(x - 2) + 2c_1 = \dots = T(0) + x \cdot c_1 = c_0 + c_1 x Por lo tanto, la complejidad temporal es de orden lineal: O(x)O(x) (o O(n)O(n) siendo n=xn = x). La complejidad espacial en la pila de llamadas también es O(x)O(x) debido a los x+1x + 1 marcos de activación anidados.

Complejidad temporal asintótica

Solución: O(x)O(x) / O(n)O(n)

Complejidad espacial asintótica

Solución: O(x)O(x) / O(n)O(n)

La explicación paso a paso, hecha con IA, es Premium. Premium

Resuélvelo aquí mismo: corrección automática, pistas y solución paso a paso.

‹ Pregunta 2.d-e · 2021 · Pregunta 2.c - Análisis de complejidad · Juny 2020 ›

Más ejercicios de Análisis de complejidad y eficiencia