MIT open courseware Introduction to algorithms
Introducción a los algoritmos Analisis de los algoritmos El estudio teorico de porgramas informaticos. !
Rendimiento (alto o bajo) lo más estudiado en los algoritmos (Cuanto tiempo tarda?)
"
Uso de recusos (memoria, RAM, etc.)
Ejemplo de algoritmo Problema: Nos dan una serie de numeros y hemos de ordenarlos de menor a mayor
Secuencia de entrada
<a1, a2 ... an > "
!
!
Salida
<a1, a2 ... an >
Ordenado
de menor a mayor
Para solucionar este problema generaremos un algoritmo que nos permita ordenar numeros de una forma rapida. Dado que vamos a analizar su funcionamiento empezaremos mirando lo que seria su pseudocódigo.
Pseudocódigo (El pseudocodigo no es mas que un boceto de lo que será el codigo final, se eliminan tecnicismos para tener una idea de como funcionará el resultado final. No es necesario poner ; al final de cada acción ni separar capas con { )
Nombre de la empresa
Insertion sort Insertion sort (A,n) //Ordena A[1, ...n] "
for j-2 to n // va de 2 a n
"
do key- A[j]
"
i-j-l
"
while i>0 and A[i]>key
"
"
"
"
"
"
do A[i+1] - A[i] j-i-1 A[i+1] - key
Que hace el algoritmo?
j A= En cualquier punto del algoritmo lo que estamos mirando es j, aplicando una cosa que llamamos “la llave” (key) A medida que va avanzando el analisis memorizamos la secuencia y movemos j al siguiente termino ordenando la secuencia e insertando los terminos guardados, por eso se llama el algoritmo de inserción.
j
A=
Ejemplo de una operación
(Entrada) A=
8!
2!
4!
9!
3!
6
j+1
2!
8!
4!
9!
3!
6!
j+2
2!
4!
8!
9!
3!
6
j+3
2!
4!
8!
9!
3!
6
2!
3!
4!
8!
9!
6
j+5
2!
3!
4!
6!
8!
9
fin
Nombre del informe!
j+4
4
Nombre de la empresa
Tiempo de ejecución • Depende de gran cantidad de factores • La entrada • Si ya está ordenada (Que curiosamente és lo más provable en este problema) • Si esta ordenada al revés • Su tamaño (Cuanto más grande más tiempo) Tiempo en función del tamaño T(n) • El ordenador en el que se ejecute
Tipos de analisis "
Peor caso posible
T(n) = tiempo maximo en cualquier entrada de tamaño n T(n) por si solo no és una función ya que teniendo entradas del mismo tamaño podemos encontrar reultados diferentes ya que es posible obtener un numero ya ordenado pero al indicar que se trata del maximo ya si que se puede considerar una función. "
Tiempo mediano
T(n) = tiempo esperado en todas las entradas de tamaño n !
El tiempo que tardaria en resolver cada entrada por la provabilidad de que salga esta (Que és igual en todos los
!
casos) (distribución uniforme)
"
Mejor caso
Generalmente no se estudia ya que se pueden hacer “trampas” conociendo ya como son las entradas ya resueltas
Comparar tiempos de ejecución !
Al comparar nos encontramos con una serie de cosas que marcan la diferéncia:
"
-El ordenador en el que se usa
"
"
-Velocidad relativa (en el mismo sistema)
"
"
-Velocidad absoluta(diferentes sistemas)
Nombre del informe!
5
Nombre de la empresa
Analisis asintótico "
-Ignorar las constantes que dependen del sistema en el que se ejecuta el algoritmo
!
-Observar el aumento en el tiempo de ejecución: f T(n) n --> ∞
Notaciones asintoticas !
Theta notation: Eliminar de una polinomio los elementos de orden pequeño y ignorar las constantes
Ejemplo: 3n3 + 90n2 + 5n + 6046 = Θ(n3)
Si nos acercamos al infinito, un algoritmo de Θ(n2) siempre irá mas rapido que uno de Θ(n3) Independientemente de los ordenadores en los que los ejecutemos, las notaciones asintoticas no cambiarán. (Entendemos Θ(n2) y Θ(n3) como algoritmos difentes, el más lento , menos lento)
T
500
Θ(n3)
375
250
125
0
Θ(n2) N
Diferencia causada por los ordenadores Independientemente del principio, a medida que aumenta el tamaño de la entrada, el coste de tiempo del ordenador menos rapido és menor.
Pero llega un punto en el que el tamaño de la entrada es tan grande que ningun ordenador lo puede procesar por lo que tenemos que tener en cuenta que tamaños estamos manejando y que algoritmo nos conviene más.
Nombre del informe!
6