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.