You are on page 1of 5

PRCTICA 2.

FUNDAMENTOS DE ANLISIS ASINTTICO DE ALGORITMOS

UNIVERSIDAD DE CARABOBO
FACULTAD EXPERIMENTAL DE CIENCIAS Y TECNOLOGA
DEPARTAMENTO DE COMPUTACIN
GRUPO DE DESARROLLO DE SOFTWARE Y SISTEMAS
CS218 ALGORITMOS Y PROGRAMACIN II

PRCTICA 4
(FUNDAMENTOS DE ANLISIS ASINTTICO DE ALGORITMOS)
1. Suponga que para resolver un problema especfico existen dos algoritmos Pa y Pb. El algoritmo Pa tiene
un tiempo de ejecucin Ta(n) = n2 + 10 y el algoritmo Pb tiene un tiempo de ejecucin Tb(n) = 200n + 4.
Cul de los dos algoritmos es ms eficiente y por qu?

2. Calcular la complejidad en tiempo del peor caso de cada uno de los siguientes algoritmos. Exprese los
resultados utilizando la notacin O-grande.

a.

c.

e.

proc mult_mat (in A, B : Matriz; out Res : Matriz);


var
i, j, k : Integer;
begin
for i 1 in n do
for j 1 in n do
Res[ i, j ] 0;
for k 1 in n do
Res[i,j] Res[i,j] + A[i,k] B[k,j]
end_for;
end_for;
end_for;
end;
proc proc2 (in n : Integer);
var
i, j, sum : Integer;
begin
sum 0;
for i 1 in n - 1 do
for j 1 in 2n do
sum sum + 1
end_for;
end_for;
end;

b.

proc proc1 (in n : Integer);


var
i, j, k : Integer;
begin
for i 1 in n - 1 do
for j i + 1 in n do
for k 1 in j do

d.

funcin fact_iter (in n : Integer) :


Integer;
var
i, fact : Integer;
begin
fact 1;
if (n > 0) then
for i 1 in n do
fact i fact
end_for;
end_if;
fact_iter fact
end;

funcin num_comb (in n, m : Integer) : Integer;


var
p, result1, result2, result3 : Integer;
begin
if (n < m) then
num_comb 0
else
p n - m;
result1 fact_iter(n);
result2 fact_iter(m);
result3 fact_iter(p);
num_comb result1 div (result2 result3)
end_if;
end;

f.

funcin fib_iter (in n : Integer) :


Integer;
var
i, aux, fib_menor, fib_mayor :
Integer;
begin
if (n 1) then
fib_iter 1
else
fib_menor 1;
fib_mayor 1;
for i 2 in n do
aux fib_menor;
fib_menor fib_mayor;
fib_mayor aux + fib_menor
end_for;
fib_iter fib_mayor
end_if;
end;

p {p es una instruccin que


requiere tiempo O(1)}

end_for;
end_for;
end_for;
end;

PRCTICA 2. FUNDAMENTOS DE ANLISIS ASINTTICO DE ALGORITMOS


g.

proc proc3 (in n : Integer);


var
a, b, c, d, e : Integer;
begin
a 2; d 0; e 0;
repetir
if (a mod 2 = 0) then
b 1;
mientras (b a) do
for c 0 in b + 1 do
d d + 1;
e e + b2
end_for;
b b + 1;
end_mientras;
else
e e + b4
end_if;
a a + 1
until (a > n)
end;

h.

funcin fact_rec (in n : Integer) :


Integer;
begin
if (n = 0) then
fact_rec 1
else
fact_rec n fact_rec(n - 1)
end_if;
end;

i.

funcin rec1 (in n : Integer) : Integer;


begin
if (n 1) then
rec1 5
else
rec1 rec1(n - 1) + rec1(n - 1)
end_if;
end;

j
.

funcin rec2 (in n : Integer) : Integer;


begin
if (n 1) then
rec2 1
else
rec2 2 rec2(n div 2)
end_if;
end;

k.

proc rec3 (in n, x : Integer; out r : Integer);


var
i : Integer;
begin
if (n = 0) then
r x
else
for i 1 in n do
x x + 1
end_for;
rec3(n - 1, x, r)
end_if;
end;

l
.

funcin fib_rec (in n : Integer)


Integer;
begin
if (n 1) then
fib_rec 1
else
fib_rec

fib_rec(n
1)
fib_rec(n - 2)
end_if;
end;

j.

funcin rec4 (in n : Integer) : Integer;


var
i, res : Integer;
begin
if (n 1) then
rec4 100
else
res 0
for i 1 in n do
res res + i
end_for;
rec4 res + rec4(n div
rec4(n div 2)
end_if;
end;

2)

3. Calcular la complejidad en espacio asociada a cada una de las siguientes estructuras de datos.

PRCTICA 2. FUNDAMENTOS DE ANLISIS ASINTTICO DE ALGORITMOS


a.
type
cantante = register
nombre : cadena[ 20 ];
case type_cantante : (participante, invitado) de
participante :
(pas_origen : cadena[ 20 ];
nombre_cancin : cadena[ 40 ];
autor : cadena[ 20 ];
puntos_obtenidos : Integer);
invitado : (sexo : ( M, F ))
end_case;
end_register;
var
festival : array [ 1 .. 30 ] de cantante;
b.
type
materia = (m1, m2, m3, m4, m5, m6, m7, m8, m9, m10);
asignatura = register
nombre : cadena[ 30 ];
num_estudiantes : [ 0 .. 100 ];
case type_materia : (obligatoria, electiva) de
obligatoria : (requisitos : array [ 1 .. 4 ] de materia);
electiva : (area : (a1, a2, a3, a4, a5)
end_case;
end_register;
var
esc : array [ materia ] de asignatura;

c.
type
tip_r1 = (a1, a2, a3, a4, a5, a6);
tip_r2 = (b1, b2, b3, b4 , b5, b6, b7, b8);
tip_r3 = (c1, c2, c3, c4);
Fecha = register
dia : [ 1 .. 31 ];
mes : [ 1 .. 12 ];
ao : [ 1950 .. 2100 ]
fregister;
info_r1 = register
categora : (ca1, ca2, ca3);
cantidad : Integer;
lote : Integer;
costo : Real
fregister;
info_r2 = register
categora : (cb1, cb2, cb3, cb4);
cantidad : Integer;
fecha_vencimiento : Fecha;
costo : Real
fregister;
info_r3 = register
categora : (cc1, cc2, cc3);
peso : Real;
lote : Integer;
costo : Real
fregister;
R = register
r1 : array [ tip_r1 ] of info_r1;
r2 : array [ tip_r2 ] of info_r2;
r3 : array [ tip_r3 ] of info_r3
fregister;
var

PRCTICA 2. FUNDAMENTOS DE ANLISIS ASINTTICO DE ALGORITMOS


inventario : R;

PRCTICA 2. FUNDAMENTOS DE ANLISIS ASINTTICO DE ALGORITMOS


d.
type
dgitos = [ 0 .. 9 ];
dependencias = (jurdica, endanciera, personal, planificacin, administracin, mantenimiento,
publicidad);
Fecha = register
dia : [ 1 .. 31 ];
mes : [ 1 .. 12 ];
ao : [ 1950 .. 2100 ]
fregister;
datos = register
nombre : cadena[ 30 ];
cdula : cadena[ 15 ];
case sexo : (masculino, femenino) of
masculino : (profesin : cadena[ 30 ];
case ocupacin : (obrero, empleado, ejecutivo) of
obrero : (num_horas_semanales : Integer);
empleado : (sueldo : Real;
aos_empresa : Integer);
ejecutivo : (dependencia : dependencias)
fcase;

femenino :

fcase;
fregister;
emps = array [ 1 .. 5000 ] of datos;
empresa = register
nombre : cadena[ 30 ];
empleados : emps
fregister;
var
REY_Computers : empresa;

(num_hijos : Integer;
edad : [ 1 .. 70 ];
case estado_civil : (soltera, casada, divorciada) of
soltera : (estatura, peso : Real);
casada : (nombre_esposo : cadena[ 20 ]);
divorciada : (fecha_divorcio : Fecha)
fcase;

You might also like