Está en la página 1de 17

MATEMÁTICA DISCRETA

Clase 11
•COMPLEJIDA ALGORITMICA

Cuando los problemas del mundo real


se desean resolver con modelos de
sistemas computacionales, trae
consigo una cantidad indefinida de
requisitos que compiten entre sí y
algunas veces se contradicen.
1
DEFINICIONES PREVIAS

ALGORITMO.-
Un algoritmo es una secuencia finita y ordenada de instrucciones
elementales que, dados los valores de entrada de un problema, en
algún momento finaliza y devuelve la solución.

La Teoría de Algoritmos es una ciencia que estudia cómo construir


algoritmos para resolver diferentes problemas. La Teoría de
Algoritmos también proporciona herramientas formales que nos van a
permitir decidir qué algoritmo es mejor en cada caso.

Nota.-
El tiempo de ejecución de un algoritmo viene dado por
las entradas concretas que le introduzcamos.
Por esto distinguimos 3 alternativas: Mejor caso, Peor
caso y caso promedio.
Universidad de Ciencias y Humanidades 2
Algebra Computacional
ANÁLISIS DE ALGORITMOS
La Teoría de la Complejidad Computacional es la parte de la teoría
de la computación que estudia los recursos requeridos durante el
cálculo para resolver un problema. Un cálculo resulta complejo
si es difícil de realizar. En este contexto podemos definir la
complejidad de cálculo como la cantidad de recursos necesarios para
efectuar un cálculo.
Así, un cálculo difícil requerirá más recursos que uno de menor
dificultad. Los recursos comúnmente estudiados son el tiempo
(número de pasos de ejecución de un algoritmo para resolver un
problema) y el espacio (cantidad de memoria utilizada para resolver
un problema). Un algoritmo que resuelve un problema pero que
tarda mucho en hacerlo, difícilmente será de utilidad. Igualmente un
algoritmo que necesite mas de un gigabyte de memoria no será
probablemente utilizado. A estos recursos se les puede añadir otros,
tales como el número de procesadores necesarios para resolver el
problema en paralelo. Si un cálculo requiere más tiempo o espacio
(disco duro) que otro decimos que es más complejo

Universidad de Ciencias y Humanidades 3


Algebra Computacional
Ejemplo1
a⇐3 (1)
b⇐a*5 (2)
If b==5 then (3)
a⇐2 (4)
Else (5)
a⇐1 (6)
End if (7)

El algoritmo tiene 5 instrucciones de las cuales se ejecutan


solamente 4 . Por tanto el costo en tiempo del programa es
4C, siendo C una constante que indica cuanto tiempo tarda
en ejecutarse una instrucción . El espacio que necesita el
programa es el espacio ocupado por las variables a y b. Es
decir 2Ec, siendo Ec el espacio que ocupa una variable.

Universidad de Ciencias y Humanidades 4


Algebra Computacional
Ejemplo 2.- a⇐3 (1)
b⇐a*5 (2)
If b==5 then (3)
a⇐2 (4)
Else (5)
a⇐1 (6)
End if (7)

Este programa cuesta ahora : 3*C1+1*C2+1*C3


Donde:
C1: Costo de la asignación
C2: Costo de la multiplicación
C3: Costo de comparar dos números.
Universidad de Ciencias y Humanidades 5
Algebra Computacional
Ejemplo 3.-
Supongamos que no disponemos de una función que eleve un
número a un cierto exponente y, pero si disponemos de una función
que multiplique un número por otro.
Potencia (x,y) // calcula xy donde x>0
If y==0 then (1)
return 1 (2)
Else (3)
result⇐x (4)
for i=1 to y-1 do (5)
result⇐result*x (5)
End for (6)
End if (7)
Return result (8)
¿Cuánto cuesta el algorítmo?...
Universidad de Ciencias y Humanidades 6
Algebra Computacional
La comparación del if se realiza siempre, supongamos que y no
es cero (mayormente va a pasar)
El costo del algoritmo es: ……………………………………………..……………………..

Donde:
C1: Costo de comparar dos números
C2: Costo de realizar una asignación
C3: Costo de realizar una multiplicación

¿Es eficiente el algoritmo?

Nota.-
Los algoritmos que no son correctos a veces pueden ser útiles
si, por ejemplo producen una respuesta aproximada a un
problema particularmente difícil en forma eficiente.
Universidad de Ciencias y Humanidades 7
Algebra Computacional
Ejemplo 4.-
La ordenación de la burbuja es uno de los algoritmos de busqueda
mas simples, pero no uno de los mas eficientes

Universidad de Ciencias y Humanidades 8


Algebra Computacional
For i=1 to n-1 do (1)
for j=1 to n do (2)
if A(j)>A(i) (3)
intercambiar(A(i),A(j)) (4)
end if (5)
end for (6)
End for (7)

El costo del algoritmo se va a calcular suponiendo que C1 es el


costo de efectuar la comparación y que C2 es el costo de
efectuar intercambiar.

Universidad de Ciencias y Humanidades 9


Algebra Computacional
Luego tenemos en el peor de los casos:
n −1 ⎛ n ⎞
⎜ ⎟
f (n) = ∑ ∑ ⎜⎜ ( C1 + C 2 ) ⎟

i =1 ⎝ j =i +1 ⎠
………………………….…………………………………………………………………………………………
………………………….………………………………………………………………………………………..

Universidad de Ciencias y Humanidades 10


Algebra Computacional
NOTACIÓN O
La notación O es usada para estimar el número de operaciones
que realiza un algoritmo a medida que la entrada crece. Con la
ayuda de esta notación podemos determinar si es práctico usar
un algoritmo particular para solucionar un problema a medida
que la entrada aumenta. Por ejemplo si tenemos dos algoritmos
que resuelven un problema usando 100n2 +17n+4 operaciones
otro n3 operaciones, la notación O nos ayuda a ver que el
primero de ellos realiza menos operaciones cuando n es grande.

Definición.-
Sean f y g dos funciones del conjunto de los enteros o de los
reales en el conjunto de los reales. Decimos que f(x) es
O(g(x)) si existen constantes C y k tales que
|f(x)|≤C|g(x)| siempre que x>k
Universidad de Ciencias y Humanidades 11
Algebra Computacional
Ejemplo 1.-
Demuestre que f(n)=n2+2n +1 es O(n2)
Solución:
Observamos que podemos estimar el tamaño de f(n) cuando n>1
y 1<n2 para n>1 por tanto
0≤n2+2n+1≤n2+2n2+n2=4n2
Siempre que n>1, por consiguiente podemos tomar C=4 y k=1
Para mostrara que f(n) es O(n2).
Es decir
f(n)=n2+2n+1<4n2 siempre que n>1

Universidad de Ciencias y Humanidades 12


Algebra Computacional
Ejemplo 2.-
¿Cómo se puede utilizar la notación O para estimar la
suma de los primeros n enteros positivos?
Solución:
Tenemos que:
1≤n
2≤n..
Y asi hasta obtener 1+2+…+n ≤ n+n+…+n=n2
De esto se obtiene que
1+2+3+…+n es de O(n2)

Universidad de Ciencias y Humanidades 13


Algebra Computacional
COMPLEJIDADES MAS USADAS

Universidad de Ciencias y Humanidades 14


Algebra Computacional
Universidad de Ciencias y Humanidades 15
Algebra Computacional
CONCLUSIONES
● Los algoritmos no son algo tan lejano como se podría pensar
(¿Al salir de casa y llegar a la UCH usamos un algoritmo?)
● Se utilizan para prácticamente cualquier tarea, no sólo para los
ordenadores ( máquinas expendedoras de gaseosas)
● Existen multitud de algoritmos, adaptados para cada situación
específica. (Para los cajeros de bancos)
● Cada día se inventan nuevos algoritmos
para cubrir nuevos problemas.
¿Por qué medimos la complejidad?
Para determinar que algoritmo es mejor dentro de una familia
de algoritmos que resuelven el mismo problema.

¿Qué medimos?
Coste Temporal y Coste Espacial

Universidad de Ciencias y Humanidades 16


Algebra Computacional
EJERCICIOS COMPLEMENTARIOS
1) Cree un programa iterativo para hallar el factorial de n y halle su
complejidad algorítmica.
2) Cree un programa recursivo para hallar el factorial de n y halle
su complejidad algorítmica.
3) Cree un algoritmo para hallar el menor entero de una lista de
números.

Universidad de Ciencias y Humanidades 17


Algebra Computacional

También podría gustarte