Está en la página 1de 4

UNIVERSIDAD CATÓLICA DE

SANTAMARÍA
FACULTAD DE CIENCIAS E INGENIERÍAS FÍSICAS Y
FORMALESESCUELA PROFESIONAL DE INGENIERÍA
DE SISTEMAS

ESTRUCTURAS DISCRETAS “02”

Docente:
CARLO JOSE LUIS CORRALES DELGADO
Alumno:
ESPINOZA BELLIDO, LUIS FABRIZIO
Tema:
COMPLEJIDAD DE ALGORITMOS

Arequipa – Perú

2022
1. Para los siguientes fragmentos de código algunos en Java y otros en Python halle su
complejidad: def function(n):
a) int function1( int n) { i=0
int i, j, k; 1 j=0
int x = 0; 1 k=0
for ( i =1; i <= n; i++) n x=0
for ( j =1; j <= n; j++) n2 for i in range(n,i++):
for (k = 1; k <= n; k++) n3 for j=1; j<= n; j++:
x = x + 1; n3 for k = 1; k<=n; k++:
return x; n x =x+1
2n3+n2+n+2=O(n3) return n

b) def function2 (n) :


x=0 1 def funcion(n):
if n % 2 == 0 : n x=0
for i in range(1,n+1) : n2 if n % 2 ==0:
x = x + 1; n2 for i in range(1,n+1):
return x n x= x+1:
return x
2n2+2n+1=O(n2)

c) int function3 (int n) {


int i = 1; 1 def funcion(n):
int x = 0; 1 i=1
while ( i <= n) { n x=0
x = x + 1; n while i<=n:
i = i + 2; n x=x+1
} i=i+2
return x; n return x
}
4n+2=O(n)

d) def function4 (n) : def funcion(n):


x = 1; 1 x=1:
while ( x < n ) : n while x<n:
x = 2 * x; n x = 2*x
return x n return x

3n+1=O(n)

2. Evalue la complejidad del siguiente algoritmo de calculo iterativo de la serie de Fibonacci.


Entero: Funcion Fibonacci (E, entero:n)
def fibonacci(n):

k=0
Fib=0
Fibuno=0
fibdos=0
ux=0

if n<=1:
fib=1
else:
Fibuno=1
fibdos=1
for i in range(2,n):

Aux=Fibuno
Fibuno=fibdos
fibdos=Aux+fibdos
fib=fibdos
return fib
print(fibonacci(5))

3. Evalúe la complejidad de un algoritmo que calcula un número combinatorio.


( 𝑛 𝑚 ) = 𝑛! 𝑚! (𝑛 - 𝑚)!
from math import Comb, factorial

def NumComb(n,m,Comb):
Result1=0
Result2=0
Result3=0
if n<m:
Comb=0
else:
Result1=(factorial(n))
Result2=(factorial(m))
Result3=(factorial(n-m))
Comb=Result1/(Result2*Result3)

def Factorial(n):
fact=0
i=0
fact=1
if n>0:
for i in range(1,n):
fact=fact*1
return fact

print(NumComb(15))

4. Dada la siguiente definición:


LISTA: un arreglo bidimensional de n x n enteros Calcule el tiempo de ejecución
del
siguiente algoritmo: (a, b y res son del tipo LISTA)
def MulMat(a,b,res,n):
for i in range(n):
for j in range(n):
res[i,j]=0
for k in range(n):
res[i,j]=res[i,j]+a[i,k]*b[k,j]

5. Muestre la ecuación de recurrencia y evalúe la complejidad de los siguientes


algoritmos recursivos funcionales:

a) Entero: Función Recursiva1 (E entero: n)


Inicio def recursiva1(n):
Si n <= 1 entonces if n>=1:
devolver 1 return 1
Sino else:
devolver (Recursiva1(n-1) + Recursiva1 (n-1)) return(recursiva1(n-1)+recursiva1(n-1))
Fin_Si print(recursiva1(5))
Fin
4n=O(n)

b) Real: Función Recursiva2 (E entero: n)


Inicio
Si n <= 1 entonces def recursiva2(n):
devolver 1 if n>=1:
Sino return 1
devolver (2 * Recursiva2(n / 2)) else:
Fin_Si return(2*recursiva2(n/2))
Fin print(recursiva2(5))
4n=O(n)

c) Entero:
Función Fibonacci (E entero: n)
Inicio Si n <= 1 entonces
devolver 1
Sino
devolver (Fibonacci (n-1) + Fibonacci (n-2))
Fin_Si def Fibonacci(n):
Fin if n<=1:
4n=O(n) return 1
else:
return(Fibonacci(n-1)+Fibonacci(n-2))
print(Fibonacci(5))

También podría gustarte