Problema 7
7. Calcular el orden de complejidad de las siguientes funciones recursivas (contar sólo las operaciones producto)
function f1(n: integer) : integer;
begin
if n < 1 then f1 := 1 else f1 := f1(n-3)*f1(n-3)
end;
Si denominamos T(n) al número de operaciones producto que se realizan en una llamada a la función f1(n), podemos ver que en el caso base (n = 0) no se realiza ninguna y en cualquier otro caso se realiza una (marcada en rojo) mas las que hagan las dos llamadas recursivas f1(n-3), Por lo tanto, la relación de recurrencia será
Podemos ver que se ajusta al esquema T(n) = a·T(n-b)+c·nk, donde a = 2, b = 3, c = 1, k = 0. Para este esquema sabemos que:
Por lo tanto el orden de la función f1 será Q(2n/3).
function f3(n: integer) : integer;
var i,x : integer;
begin
if n < 1 then f3 := 1 else
begin
x := 1;
for i := 1 to n do x := x*n;
f3 := x*f3(n-1)
end
end
En el caso base (n = 0) no se realiza ningún producto y en cualquier otro caso se realizan n+1 productos mas los que hagan la llamada recursiva f3(n-1). Por lo tanto, la relación de recurrencia será
Se ajusta al esquema anterior, con a = 1, b = 1, c = 1, k = 1, por lo tanto el orden de la función f3 será Q(n2).
function f2(n: integer) : integer;
begin
if n < 1 then f2 := 1 else
f2 := f2(n div 2)*f2(n div 2)*f2(n div 2)
end;
En el caso base (n = 0) no se realiza ningún producto y en cualquier otro caso se realizan 2 productos mas los que hagan las tres llamadas recursivas a f2(n/2). Por lo tanto, la relación de recurrencia será
La relación se ajusta al esquema T(n) = a·T(n/b)+c·nk, donde a = 3, b = 2, c = 2, k = 0. Para este esquema sabemos que:
| T(n) Î Q(nk) si a < bk |
| T(n) Î Q(nk·lg n) si a = bk |
| T(n) Î Q(nlogba) si a > bk |
Por lo tanto el orden de la función f2 será Q(nlog23) = Q(n1.585).
function f4(n: integer) : integer;
var i,x : integer;
begin
if n < 1 then f4 := 1 else
begin
x := 1;
for i := 1 to n*n do x := x*2;
f4 := x*f4(n div 2)
end
end
En el caso base (n = 0) no se realiza ningún producto y en cualquier otro caso se realizan n2+2 productos mas los que hagan la llamada recursiva f4(n/2). Por lo tanto, la relación de recurrencia será
Se ajusta al esquema anterior, con a = 1, b = 2, c = 1, k = 2, por lo tanto el orden de la función f4 será Q(n2).
Regresar a la página de enunciados.