Professional Documents
Culture Documents
Contenidos
Presentacin Introduccin Clasificacin de Problemas Caractersticas de Algoritmos Motivacin al A li i d Al M ti i l Anlisis de Algoritmos it Conceptos bsicos Notaciones Asintticas Conclusiones
Motivacin
Motivacin
Problema de Garey and Johnson (1979) Cmo saber que el problema es fcil (o difcil)? Existe algn algoritmo que lo resuelve? El algoritmo es exacto o aproximado? Todo ello es debido a que el problema es muy difcil, no hay algoritmo que lo resuelva o es que no tengo la capacidad de resolverlo?
Clasificacin de Problemas
PROBLEMAS
ABIERTOS
NO RESOLVIBLES
RESOLVIBLES
NP
Herramientas Matemticas
Caractersticas de un Algoritmo
Correctitud (Correctness) Cantidad de Trabajo hecho (Tiempo, No. de ops., etc.) Cantidad de espacio utilizado Simplicidad, Simplicidad claridad Optimalidad
Ejemplo
TOTAL: 5n + 3
Ejemplo
1 1 asignacin + (n+1) comparaciones (n+2)*n = n2 +2n n*n = n2 2n2 (incremento + goto implcito n ( t en falso for y) (goto f l f ) 2n (incremento + goto implcito) 1 (goto en falso for x) TOTAL: 4n2 + 6n + 4
Motivacin
Por qu analizar algoritmos? Ejemplo 1: Suponer que se tiene una supercomputadora que puede ejecutar 100 millones de instrucciones por segundo y otra PC que puede realizar 1 milln de instrucciones por segundo. Si un algoritmo con complejidad de 2 2 se corre en l supercomputadora d l i l jid d d 2n la d y otro del mismo tipo con complejidad 50nlogn se corre en la PC. Para un tamao de n=106 elementos cunto tiempo se lleva en la supercomputadora? cunto en la PC?
Motivacin
Por qu analizar algoritmos? Considera una computadora que realiza 1000 operaciones por segundo
Motivacin
Por qu analizar algoritmos? Considera una computadora que realiza 10000 operaciones por segundo (10 veces ms que en el d l caso anterior)
Motivacin
Consideremos una misma mquina con capacidad de 109 ops/seg. y un tamao de problema de 103, Qu tiempo se lleva con cada algoritmo?
n2
Conceptos Bsicos de AA
PROBLEMA
Algoritmo A1
Algoritmo A2
Algoritmo Am
f1(n)
f2(n) ( )
fm(n)
Conceptos Bsicos de AA
Lmite inferior (del problema) Lmite L it superior i Caso Peor (del algoritmo) Caso Promedio (del algoritmo) Optimalidad
Conceptos Bsicos de AA
Considerar el algoritmo de bsqueda secuencial en un arreglo de n elementos El elemento a buscar es elementos. x. Cul C l es el caso peor? l ? Cul es su caso promedio si x existe? Cmo vara la complejidad si hay una probabilidad q de que x est en la lista?
Notaciones Asintticas
n
PROBLEMA
Algoritmo A1
Algoritmo A2
Algoritmo Am
f1(n)
f2(n)
fm(n) ( )
Necesitamos una notacin menos precisa pero que nos diga la manera cmo esa N it t i i di l funcin crece en trminos de n !!!!!!!!
Notaciones Asintticas
Notaciones Asintticas
Definicin 1.- Sea g:N R*. O(g) es el conjunto de funciones f:N R* tal que para alguna constante c E R+ y algn n0 E N, f(n) <= cg(n) para toda n >= n0
cg(n)
f(n)
n0
Definicin
Ejemplos:
n+5 es O(n) pues n+5 <= 2n para toda n >= 5 (n+1)2 es O(n2) pues (n+1)2 <= 4n2 para n>= 1 (n+1)2 NO es O(n) pues para cualquier c > 1 no se cumple que (n+1)2 <= c*n
Ordenes ms comunes
O(1) O(log(n)) O(n) O(nlog(n)) O(n2 ) O(n2log(n)) O(n3 ) O (nm ) O(mn ) O(n!) Constante Logartmico Lineal Cuadrtico Cbico Polinomial exponencial factorial
22
Notaciones Asintticas
Definicin 2.- Sea g:N R*. (g) es el conjunto de funciones f:N R* tal que para alguna constante c E R+ y algn n0 E N, f(n) >= cg(n) para toda n >= n0
f(n)
cg(n)
n0
Notaciones Asintticas
Definicin 3.- Sea g:N R*. (g)=O(g) (g) ( f E (g) f es de orden g)
c1g(n)
f(n)
c2g(n)
n0
En resumen...
Cmo analizar la complejidad de tiempo de un algoritmo? Contando la C t d l cantidad d operaciones tid d de i bsicas Las que ms se repiten Convirtiendo a Notacin Asinttica Tomando el trmino ms representativo
25
26
Consiste en aplicar reglas a los estatutos g estructurados: 1.Secuencia de instrucciones 2.Decisiones ( j 2D i i (ejemplo: if) l 3.Ciclos (ejemplo: while) 4.Recursividad 4 Recursividad
27
O(gm(n))
Regla 2: Decisiones
Regla 3: Ciclos
O( m * g(n) )
O(g(n)) Se repite m veces Ejemplo: Un ciclo cuya instruccin:
Tiene un O(log n) Se repite n/2 veces
Consideraciones especiales
En decisiones y ciclos anidados: Analizar el cdigo desde la instruccin ms interna hacia el ms externa. Tip para los ciclos: Normalmente cul es el orden de la instruccin interna? Si la variable d control se incrementa o l i bl de t l i t decrementa con un valor constante: Orden LINEAL. Si la variable de control se multiplica o divide por un valor constante: Orden LOGARTIMICO.
31
Conclusiones
Existen diferentes problemas que tienen su complejidad intrnseca y que es importante investigar Es relevante analizar algoritmos no importa el incremento en la capacidad computacional Analizar algoritmos permite escribir mtodos ms eficientes y resolver problemas ms grandes
Bibliografa