Está en la página 1de 22

APUNTES Nº3

ANÁLISIS DE ALGORITMOS: ORDEN DE UN ALGORITMO


Algoritmos y Estructuras de Datos

Irene Zuccar Parrini


2022
Notación Asintótica

Definición de Orden Algorítmico.

“Sea T(n) y f(n) ambas funciones reales y no negativas, se dice que “T(n)
es de Orden f(n)” sí y sólo sí existen constantes c > 0 y n0 > 0 tales que
T(n) ≤ c·f(n), ∀n≥n0.”

2
Notación Asintótica

Criterio Analítico: Definición de Función Orden.

Descomposición en las funciones principales de un T(n) de ejemplo: T(n) = 3n2+n+15

Podríamos pensar que el T(n) = 3n2+n+15 está compuesto por la suma ponderada de 3 funciones básicas:

T(n) = 3*n2 + 1*n + 15*1

Si bautizamos a estas funciones como f1(n), f2(n) y f3(n) y las definimos así:
f1(n) = n2
f2(n) = n
f3(n) = 1
….entonces, podemos reescribir a T(n) de esta forma:

T(n) = 3 * f1(n) + 1 * f2(n) + 15 * f3(n)

3
Notación Asintótica

Criterio Analítico: Definición de Función Orden.

Descomposición en las funciones principales de un T(n) de ejemplo: T(n) = 3n2+n+15

4
Notación Asintótica

Criterio Analítico: Definición de Función Orden.

Descomposición en las funciones principales de un T(n) de ejemplo: T(n) = 3n2+n+15

5
Notación Asintótica

Criterio Analítico: Definición de Función Orden.

Descomposición en las funciones principales de un T(n) de ejemplo: T(n) = 3n2+n+15

6
Notación Asintótica

Criterio Analítico: Definición de Función Orden.

Descomposición en las funciones principales de un T(n) de ejemplo: T(n) = 3n2+n+15

7
Notación Asintótica

Criterio Analítico: Definición de Función Orden.

Descomposición en las funciones principales de un T(n) de ejemplo: T(n) = 3n2+n+15

Pregunta:
¿Cuál de las 3 gráficas: f1(n), f2(n) ó
f3(n), “marca la tendencia” de la
T(n) = 3·n2 + n + 15 ·1
gráfica de T(n)?
Resp: La función f1(n) = n2

f1(n) = n2

f2(n) = n

f3(n) = 1
8
Notación Asintótica – Orden de un Algoritmo

Criterio Analítico: Definición de Función Orden.


Curvas de Ejemplo para entender el concepto de Orden (c=3,5; n0=7).

Sean T(n) y f(n) funciones reales y no negativas, se dice


que “T(n) es de orden O(f(n))” sí y sólo sí existen c>0 y
n0>0 tales que T(n) ≤ c·f(n), ∀ n > n0.
Simplificando la idea:
Entonces en este ejemplo podemos decir que:
“T(n) es de orden O(n2)”
La funcióna Orden
(ya que encontramos c y a n0) a la que pertenece el
T(n) de un algoritmo, será laejemplo,
Si, por funciónc=3,5:
de
n MAS GRANDE que posee c·f(n)tu T(n).2
= 3,5·n

Para todos los n>7 (n>n0) T(n) = 3n2+n+15


Se cumple que: n0 = 7
T(n) ≤ 3,5·f(n)

f(n) = n2

9
Notación Asintótica – Orden de un Algoritmo
• Los principales órdenes que aparecen en la literatura son:
• O (1) orden constante: El tiempo que toma el algoritmo es constante, independiente del valor de n.
Disminución

• O (log n) orden logarítmico: Si n aumenta linealmente (de 1 en 1), el tiempo aumenta a un tiempo
orden en la Eficiencia
Aumento en el

logarítmico (que es menor)


• O (n) orden lineal: Si n aumenta linealmente (de 1 en 1), el tiempo aumentará en la misma medida.
• O (n2) orden cuadrático: Si n aumenta linealmente (de 1 en 1), el tiempo aumentará al cuadrado.
• O (n3) orden cúbico : Si n aumenta linealmente (de 1 en 1), el tiempo aumentará al cubo.
• O (na) orden polinomial (a > 3)
• O (an) orden exponencial (a > 2): Si n aumenta linealmente (de 1 en 1), el tiempo aumentará
exponencialmente.
• O (n!) orden factorial: : Si n aumenta linealmente (de 1 en 1), el tiempo aumentará factorialmente.

IMPORTANTE:
Para el calculo del orden debes tener presente que se considera n → ∞ por lo que las constantes y los
términos menos significativos de T(n) no son tomados en cuenta.

(Ver archivo: “Gráficos Comparativos entre diferentes Órdenes.xlsx”)

10
Complejidad y Orden de un Algoritmo: Ejercicios

Ejercicios: Para cada uno de los siguientes problemas, construir un algoritmo que lo resuelva, y
determinar su complejidad y orden algorítmicos.

1. Indicar la posición en la que está un elemento x en un arreglo A de n números.

2. Calcular el factorial de n, en forma iterativa.

3. Sumar los elementos de la diagonal principal de una matriz cuadrada.

4. Sumar dos matrices cuadradas de orden n.

5. Sumar dos matrices orden mxn.

11
Complejidad y Orden de un Algoritmo: Ejercicios

Ejercicio 1: Indicar la posición en la que está un elemento x en un arreglo A de n números.

Num PosicionEnArreglo(Num A[n], Num x)


{
Num i;
TPC(n) = k + (k+3k)⋅n + k + k
i = 1; k k
MIENTRAS (i ≤ n) HACER TPC(n) = 3k + 4k⋅n
{

veces
n
k
SI (A[i] == x) ENTONCES
RETORNAR i; k
i = i+1; 2k
}
RETORNAR -1; k
}

¿Cuál es la función de n MÁS GRANDE?


T(n) = 3k + 4k⋅n = 3k·1 + 4k·n

∴ T(n) ∈
O(n)pertenece al orden n”
Se escribe así, y se lee “T(n)

Recuerda que el orden de un algoritmo, deja fuera las constantes y las funciones
de n más pequeñas que posee el T(n), solo se queda con la función más grande.
12
Complejidad y Orden de un Algoritmo: Ejercicios

Ejercicio 2: Calcular el factorial de n, en forma iterativa.

Num factorialIterativo(Num n) Complejidad del algoritmo generado:


{
Num i, acum; T(n) = 2k + (k+2k+2k)⋅n + k + k
i = 1; k T(n) = 4k + 5k⋅n
acum = 1; k
MIENTRAS (i ≤ n) HACER k
{ Orden del algoritmo generado:
veces

acum = acum*i 2k
i = i+1; 2k
n

T(n) = 4k + 5k⋅n
}
RETORNAR acum; k T(n) = 4k·1 + 5k·n
}

∴ T(n) ∈ O(n)

13
Complejidad y Orden de un Algoritmo: Ejercicios

Ejercicio 3: Sumar los elementos de la diagonal principal de una matriz cuadrada.

Num sumaDiagonal(Num M[n][n]) Complejidad del algoritmo generado:


{
Num i, acum; T(n) = 2k + (k+2k+2k)⋅n + k + k
i = 0; k T(n) = 4k + 5k⋅n
acum = 0; k
MIENTRAS (i < n) HACER k
{ Orden del algoritmo generado:
veces

acum = acum + M[i][i] 2k


i = i+1; 2k
n

T(n) = 4k + 5k⋅n
}
RETORNAR acum; k T(n) = 4k·1 + 5k·n
}

∴ T(n) ∈ O(n)

RECUERDA:
La diagonal de una matriz cuadrada siempre está en las
posiciones (0,0), (1,1), (2,2)…. Por eso se puede
generalizar el acceso de la forma (i,i).

14
Complejidad y Orden de un Algoritmo: Ejercicios

Ejercicio 4: Sumar dos matrices cuadradas de orden n.

Num sumaMatrices1(Num A[n][n], Num B[n][n])


{ T(n) = n*[n*5k + 5k] + 3k
Num i, j; T(n) = 5kn2 + 5kn + 3k
Num C[n][n];

i = 0; k
Orden del algoritmo generado:
MIENTRAS (i < n) HACER k
{
j = 0; k T(n) = 5kn2 + 5kn + 3k
MIENTRAS (j < n) HACER k
T(n) = 5k·n2 + 5k·n + 3k·1
veces

{
veces

C[i][j] = A[i][j] + B[i][j]; 2k


O

Condición para el caso VERDADERO


ADER
n

j = j+1; 2k
n

Co
Co n ∴ T(n) ∈ O(n2)
VERD

} nd
di
ció
i = i+1; 2k ici n
ón pa
l caso

p ra
} ara elc
as
e

RETORNAR C; k
el
o
para

FA
ca
LS
soF
} O
ición

AL
S O
Cond

Complejidad del algoritmo generado:

T(n) = k + n*[k + k + n*(k + 2k + 2k) + k + 2k] + k + k


T(n) = k + n*[2k + n*5k + 3k] + 2k
15
Complejidad y Orden de un Algoritmo: Ejercicios

Ejercicio 5: Sumar
NOTAdos1:matrices orden mxn.
La complejidad y el orden
Num sumaMatrices2(Num A[m][n], Num B[m][n])
{
(como se verá más adelante), T(m,n) = m*[n*5k + 5k] + 3k
Num i, j; poseen 2 parámetros de T(m,n) = 5kmn + 5km + 3k
entrada: que corresponden a
Num C[m][n];
las dimensiones de la matriz. NOTA 2:
i = 0; k
Orden del algoritmo
El orden m*ngenerado:
también
MIENTRAS (i < m) HACER k
{ se considera un orden
j = 0; k T(m,n) =cuadrático.
5kmn + 5km + 3k
MIENTRAS (j < n) HACER k
{ T(m,n) = 5k·mn + 5k·m + 3k·1
veces
veces

C[i][j] = A[i][j] + B[i][j]; 2k


O
m

Condición para el caso VERDADERO


ADER

j = j+1; 2k
n

Co
Co n ∴ T(m,n) ∈ O(mn)
VERD

} nd
di
ció
i = i+1; 2k ici n
ón pa
l caso

p ra
} ara elc
as
e

RETORNAR C; k
el
o
para

FA
ca
LS
soF
} O
ición

AL
S O
Cond

Complejidad del algoritmo generado:

T(m,n) = k + m*[k + k + n*(k + 2k + 2k) + k + 2k] + k + k


T(m,n) = k + m*[2k + n*5k + 3k] + 2k
16
Orden de un Algoritmo: Propiedades

Criterio Analítico: Propiedades Principales de la función de Orden Algorítmico.


1. Regla de la suma:

Si T1(n) ∈ O(f1(n)) y T2(n) ∈ O(f2(n))

⇒ T1(n) + T2(n) ∈ O(max(f1(n), f2(n))). (T1(n) y T2(n) nacen de instrucciones secuenciales)

instrucción 1;
instrucción 2; T1(n) ∈
instrucción 3;
instrucción 4; O(f1(n))
T(n) completo ∈ O(mayor entre f1(n) y f2(n))
instrucción a;
instrucción b;
instrucción c; T2(n) ∈
instrucción d; O(f2(n))

17
Orden de un Algoritmo: Propiedades

Criterio Analítico: Propiedades Principales de la función de Orden Algorítmico.


1. Regla de la suma:

Si T1(n) ∈ O(f1(n)) y T2(n) ∈ O(f2(n))

⇒ T1(n) + T2(n) ∈ O(max(f1(n), f2(n))). (T1(n) y T2(n) nacen de instrucciones secuenciales)

2. Regla del producto:

Si T1(n) ∈ O(f1(n)) y T2(n) ∈ O(f2(n))

⇒ T1(n) · T2(n) ∈ O(f1(n) · f2(n)) (T1(n) es la cantidad de veces que se hace un ciclo y T2(n) nace de

las instrucciones dentro del ciclo)

18
Orden de un Algoritmo: Propiedades - Ejercicios

Criterio Analítico: Propiedades Principales de la función de Orden Algorítmico.


Ejercicio 6: Calcula el orden algorítmico del ejercicio 1 de este apunte, aplicando las reglas presentadas.

SOLUCIÓN: Num PosicionEnArreglo(Num A[n], Num x)


{
Num i;

i = 1; O(1)
O(n)
MIENTRAS (i ≤ n) HACER
{
SI (A[i] == x) ENTONCES
RETORNAR i; O(1)
i = i+1;
}
RETORNAR -1; O(1)
}

Aplicando las reglas de la suma y del producto, el Orden de este algoritmo es:

O(1) + O(n)· O(1) + O(1)


O(1) + O(n·1) + O(1) (Prop. Mult.)
O(1) + O(n) + O(1)
O(max(1,n,1)) (Prop. Suma)
∴el algoritmo es de orden O(n) 19
20
Orden de un Algoritmo: Propiedades - Ejercicios

Criterio Analítico: Propiedades Principales de la función de Orden Algorítmico.


Ejercicio 7:
Imagina que la entrada de cierto problema π, su dato de entrada tiene tamaño n y, que para resolverlo se
encuentran en la literatura las siguientes alternativas. Indica cuál escogerías y por qué:
a) Algoritmo de orden O(n3).
b) Transformar su entrada en la de otro problema, para el cual se conoce un algoritmo de tiempo O(n2) que
lo resuelve. La transformación demora O(n·logn).
SOLUCIÓN:

ALGa(E: Entrada de tamaño n) ALGb(E: Entrada de tamaño n)


{ { O(1)
Proceso(E); O(n3) E = TransformaEntrada(E); O(n·log n)
}
ALGc(E); O(n2)
}

OALGa(n3)
OALGb() = O(1) + O(n·log2n) + O(n2)
OALGb() = O(maximo(1, n·log n, n2))

∴ OALGb(n2)
Respuesta:
Se debe escoger la alternativa b, pues el Orden de tal algoritmo, es menor al orden de la alternativa a.
Complejidad y Orden de un Algoritmo: Ejercicios Propuestos

Ejercicio 8: PROPUESTO
Grafica las siguientes funciones en Excel, y luego ordénalas en forma creciente.
NOTA: Debe considerar una entrada lo suficientemente grande para realizar este ordenamiento.

Ejercicio 9: PROPUESTO
Indica 5 enunciados de problemas donde el mejor y el peor caso, tienen la misma complejidad.

21
APUNTES Nº3
ANÁLISIS DE ALGORITMOS: ORDEN DE UN ALGORITMO
Algoritmos y Estructuras de Datos

Irene Zuccar Parrini


2022

También podría gustarte