You are on page 1of 46

Complejidad

Miguel Raggi

Algoritmos
ENES
UNAM

9 de febrero de 2017

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 1 / 11


Indice:

1 Complejidad
Medir Algoritmos
O, y

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 2 / 11


Indice:

1 Complejidad
Medir Algoritmos
O, y

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 3 / 11


Como medimos

El problema es que casi nunca ocurre que un algoritmo sea mejor en


todos los rubros que otro.

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 4 / 11


Como medimos

El problema es que casi nunca ocurre que un algoritmo sea mejor en


todos los rubros que otro.
Elegir el algoritmo adecuado no siempre es facil.

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 4 / 11


Como medimos

El problema es que casi nunca ocurre que un algoritmo sea mejor en


todos los rubros que otro.
Elegir el algoritmo adecuado no siempre es facil.
La medida final sera que tan bien corra, haciendo mediciones de
tiempo (que algoritmo se tarda mas, cual menos).

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 4 / 11


Como medimos

El problema es que casi nunca ocurre que un algoritmo sea mejor en


todos los rubros que otro.
Elegir el algoritmo adecuado no siempre es facil.
La medida final sera que tan bien corra, haciendo mediciones de
tiempo (que algoritmo se tarda mas, cual menos).
Pero hay varios problemas con esto:

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 4 / 11


Como medimos

El problema es que casi nunca ocurre que un algoritmo sea mejor en


todos los rubros que otro.
Elegir el algoritmo adecuado no siempre es facil.
La medida final sera que tan bien corra, haciendo mediciones de
tiempo (que algoritmo se tarda mas, cual menos).
Pero hay varios problemas con esto:
El primero y mas importante es que programar los algoritmos es difcil
y toma tiempo. No puedes programar 14 algoritmos diferentes solo
para ver cual sera mejor al final.

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 4 / 11


Como medimos

El problema es que casi nunca ocurre que un algoritmo sea mejor en


todos los rubros que otro.
Elegir el algoritmo adecuado no siempre es facil.
La medida final sera que tan bien corra, haciendo mediciones de
tiempo (que algoritmo se tarda mas, cual menos).
Pero hay varios problemas con esto:
El primero y mas importante es que programar los algoritmos es difcil
y toma tiempo. No puedes programar 14 algoritmos diferentes solo
para ver cual sera mejor al final.
Ademas, vara mucho de implementacion a implementacion.

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 4 / 11


Como medimos

El problema es que casi nunca ocurre que un algoritmo sea mejor en


todos los rubros que otro.
Elegir el algoritmo adecuado no siempre es facil.
La medida final sera que tan bien corra, haciendo mediciones de
tiempo (que algoritmo se tarda mas, cual menos).
Pero hay varios problemas con esto:
El primero y mas importante es que programar los algoritmos es difcil
y toma tiempo. No puedes programar 14 algoritmos diferentes solo
para ver cual sera mejor al final.
Ademas, vara mucho de implementacion a implementacion.
Hablando mas academicamente, si queremos comparar un algoritmo
inventado en china en los 90s con uno inventado en rusia el a
no
pasado, que computadora usamos para medir?

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 4 / 11



Medicion: Orden

Lo que usamos es ordenes te


oricos. Se dicen cosas como este
algoritmo es O(n2 ) o O(n log(n)).

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 5 / 11



Medicion: Orden

Lo que usamos es ordenes te


oricos. Se dicen cosas como este
algoritmo es O(n2 ) o O(n log(n)).
Esto mide, de cierta forma, el crecimiento de la velocidad conforme le
pedimos al algoritmo que opere en cosas mas y mas grandes.

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 5 / 11



Medicion: Orden

Lo que usamos es ordenes te


oricos. Se dicen cosas como este
algoritmo es O(n2 ) o O(n log(n)).
Esto mide, de cierta forma, el crecimiento de la velocidad conforme le
pedimos al algoritmo que opere en cosas mas y mas grandes.
Entre mas grande sea el orden, mas tardara el algoritmo en operar en
entradas muy grandes.

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 5 / 11



Medicion: Orden

Lo que usamos es ordenes te


oricos. Se dicen cosas como este
algoritmo es O(n2 ) o O(n log(n)).
Esto mide, de cierta forma, el crecimiento de la velocidad conforme le
pedimos al algoritmo que opere en cosas mas y mas grandes.
Entre mas grande sea el orden, mas tardara el algoritmo en operar en
entradas muy grandes.
Luego vemos exactamente que significa que un algoritmo sea
O(algo), pero por ahora, piensenlo as:

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 5 / 11



Medicion: Orden

Lo que usamos es ordenes te


oricos. Se dicen cosas como este
algoritmo es O(n2 ) o O(n log(n)).
Esto mide, de cierta forma, el crecimiento de la velocidad conforme le
pedimos al algoritmo que opere en cosas mas y mas grandes.
Entre mas grande sea el orden, mas tardara el algoritmo en operar en
entradas muy grandes.
Luego vemos exactamente que significa que un algoritmo sea
O(algo), pero por ahora, piensenlo as:
O(log(n)), O(n): Muy rapidos!
O(n log(n)): Rapidos.
O(n2 ), O(n3 ): Medianos.
O(n4 ) o mas: Lentos.
O(2n ): Muy lentos.

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 5 / 11


Como se mide que tan bueno es un algoritmo?
Con el avance en la velocidad de las computadoras, es difcil comparar
algoritmos.

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 6 / 11


Como se mide que tan bueno es un algoritmo?
Con el avance en la velocidad de las computadoras, es difcil comparar
algoritmos.
Utilizamos entonces el analisis asint
otico:

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 6 / 11


Como se mide que tan bueno es un algoritmo?
Con el avance en la velocidad de las computadoras, es difcil comparar
algoritmos.
Utilizamos entonces el analisis asint
otico:
Definicion
Sea f : N N.
Intuitivamente: Decimos que g O(f ) si, hasta constantes, f eventualmente
le gana a g ; es decir, si g esta casi acotado por arriba por un m
ultiplo de f .

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 6 / 11


Como se mide que tan bueno es un algoritmo?
Con el avance en la velocidad de las computadoras, es difcil comparar
algoritmos.
Utilizamos entonces el analisis asint
otico:
Definicion
Sea f : N N.
Intuitivamente: Decimos que g O(f ) si, hasta constantes, f eventualmente
le gana a g ; es decir, si g esta casi acotado por arriba por un m
ultiplo de f .
Formalmente: Definimos el conjunto de funciones O(f ) por la siguiente
propiedad:

g O(f ) (c R)(N N)(n N)(g (n) < cf (n))

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 6 / 11


Como se mide que tan bueno es un algoritmo?
Con el avance en la velocidad de las computadoras, es difcil comparar
algoritmos.
Utilizamos entonces el analisis asint
otico:
Definicion
Sea f : N N.
Intuitivamente: Decimos que g O(f ) si, hasta constantes, f eventualmente
le gana a g ; es decir, si g esta casi acotado por arriba por un m
ultiplo de f .
Formalmente: Definimos el conjunto de funciones O(f ) por la siguiente
propiedad:

g O(f ) (c R)(N N)(n N)(g (n) < cf (n))

Usualmente queremos que f sea una funci on simple: O(n2 ), O(2n ),


O(n log(n)), etc. Nada de
q 
O e tan(2n) 2n log(sin(n)) + 1
Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 6 / 11
Grande-O
Definicion
Sea f : N N.

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 7 / 11


Grande-O
Definicion
Sea f : N N.
Intuitivamente: Decimos que g O(f ) si, hasta constantes, f
eventualmente le gana a g ; es decir, si g esta casi acotado por arriba
por un multiplo de f .

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 7 / 11


Grande-O
Definicion
Sea f : N N.
Intuitivamente: Decimos que g O(f ) si, hasta constantes, f
eventualmente le gana a g ; es decir, si g esta casi acotado por arriba
por un multiplo de f .
Formalmente: Definimos el conjunto de funciones O(f ) por la
siguiente propiedad:

g O(f ) (c R)(N N)(n N)(g (n) < cf (n))

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 7 / 11


Grande-O
Definicion
Sea f : N N.
Intuitivamente: Decimos que g O(f ) si, hasta constantes, f
eventualmente le gana a g ; es decir, si g esta casi acotado por arriba
por un multiplo de f .
Formalmente: Definimos el conjunto de funciones O(f ) por la
siguiente propiedad:

g O(f ) (c R)(N N)(n N)(g (n) < cf (n))

17n O(n2 )

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 7 / 11


Grande-O
Definicion
Sea f : N N.
Intuitivamente: Decimos que g O(f ) si, hasta constantes, f
eventualmente le gana a g ; es decir, si g esta casi acotado por arriba
por un multiplo de f .
Formalmente: Definimos el conjunto de funciones O(f ) por la
siguiente propiedad:

g O(f ) (c R)(N N)(n N)(g (n) < cf (n))

17n O(n2 )
n2 O(n2 )

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 7 / 11


Grande-O
Definicion
Sea f : N N.
Intuitivamente: Decimos que g O(f ) si, hasta constantes, f
eventualmente le gana a g ; es decir, si g esta casi acotado por arriba
por un multiplo de f .
Formalmente: Definimos el conjunto de funciones O(f ) por la
siguiente propiedad:

g O(f ) (c R)(N N)(n N)(g (n) < cf (n))

17n O(n2 )
n2 O(n2 )
n3 16n2
/ O(n2 )

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 7 / 11


Grande-O
Definicion
Sea f : N N.
Intuitivamente: Decimos que g O(f ) si, hasta constantes, f
eventualmente le gana a g ; es decir, si g esta casi acotado por arriba
por un multiplo de f .
Formalmente: Definimos el conjunto de funciones O(f ) por la
siguiente propiedad:

g O(f ) (c R)(N N)(n N)(g (n) < cf (n))

17n O(n2 )
n2 O(n2 )
n3 16n2
/ O(n2 )

n n log(n) O(n2 )
Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 7 / 11
Grande-O
Definicion
Sea f : N N.
Intuitivamente: Decimos que g O(f ) si, hasta constantes, f
eventualmente le gana a g ; es decir, si g esta casi acotado por arriba
por un multiplo de f .
Formalmente: Definimos el conjunto de funciones O(f ) por la
siguiente propiedad:

g O(f ) (c R)(N N)(n N)(g (n) < cf (n))

17n O(n2 )
n2 O(n2 )
n3 16n2
/ O(n2 )

n n log(n) O(n2 )
log(n7 + 800n2 ) O(log(n))
Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 7 / 11
Grande- y Grande-

Sea f una funcion f : N N.

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 8 / 11


Grande- y Grande-

Sea f una funcion f : N N.


Definicion
Decimos que g (f ) si f O(g ). Es decir, si eventualmente g le
gana a f .

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 8 / 11


Grande- y Grande-

Sea f una funcion f : N N.


Definicion
Decimos que g (f ) si f O(g ). Es decir, si eventualmente g le
gana a f .

Definicion
Definimos (f ) = O(f ) (f ). Es decir, g (f ) si f y g crecen igual
(y entonces f (g ).

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 8 / 11


Grande- y Grande-

Sea f una funcion f : N N.


Definicion
Decimos que g (f ) si f O(g ). Es decir, si eventualmente g le
gana a f .

Definicion
Definimos (f ) = O(f ) (f ). Es decir, g (f ) si f y g crecen igual
(y entonces f (g ).

Ejemplos: 17n2 n (n2 ), n log(n500 + 1) (n log(n))

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 8 / 11


Tamano de una instancia

Medimos la rapidez de los algoritmos usando la notacion de O, y .

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 9 / 11


Tamano de una instancia

Medimos la rapidez de los algoritmos usando la notacion de O, y .


Pensemos en f (n) como el tiempo que tarda el algoritmo en correr
cuando le metemos una instancia de tamano n.

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 9 / 11


Tamano de una instancia

Medimos la rapidez de los algoritmos usando la notacion de O, y .


Pensemos en f (n) como el tiempo que tarda el algoritmo en correr
cuando le metemos una instancia de tamano n.
Tiempo: Tiempo en d
onde? Mejor medir n
umero de pasos. explica
paso

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 9 / 11


Tamano de una instancia

Medimos la rapidez de los algoritmos usando la notacion de O, y .


Pensemos en f (n) como el tiempo que tarda el algoritmo en correr
cuando le metemos una instancia de tamano n.
Tiempo: Tiempo en d
onde? Mejor medir n
umero de pasos. explica
paso
Tama no de una instancia: Un algoritmo, mas que resolver un solo
problema, resuelve una clase de problemas que crecen con tama no n.

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 9 / 11


Tamano de una instancia

Medimos la rapidez de los algoritmos usando la notacion de O, y .


Pensemos en f (n) como el tiempo que tarda el algoritmo en correr
cuando le metemos una instancia de tamano n.
Tiempo: Tiempo en d
onde? Mejor medir n
umero de pasos. explica
paso
Tama no de una instancia: Un algoritmo, mas que resolver un solo
problema, resuelve una clase de problemas que crecen con tama no n.
Usualmente n es el n
umero de bits necesarios para describir el
problema. mucho cuidado

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 9 / 11


Tamano de una instancia

Medimos la rapidez de los algoritmos usando la notacion de O, y .


Pensemos en f (n) como el tiempo que tarda el algoritmo en correr
cuando le metemos una instancia de tamano n.
Tiempo: Tiempo en d
onde? Mejor medir n
umero de pasos. explica
paso
Tama no de una instancia: Un algoritmo, mas que resolver un solo
problema, resuelve una clase de problemas que crecen con tama no n.
Usualmente n es el n
umero de bits necesarios para describir el
problema. mucho cuidado
Como a O, y les dan igual las constantes, bits bytes enteros
menores que un entero fijo = etc.

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 9 / 11


Tamano de una instancia

Medimos la rapidez de los algoritmos usando la notacion de O, y .


Pensemos en f (n) como el tiempo que tarda el algoritmo en correr
cuando le metemos una instancia de tamano n.
Tiempo: Tiempo en d
onde? Mejor medir n
umero de pasos. explica
paso
Tama no de una instancia: Un algoritmo, mas que resolver un solo
problema, resuelve una clase de problemas que crecen con tama no n.
Usualmente n es el n
umero de bits necesarios para describir el
problema. mucho cuidado
Como a O, y les dan igual las constantes, bits bytes enteros
menores que un entero fijo = etc.
Ejemplo: Cuantos bits se necesitan para describir a todos los enteros
hasta 7625?

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 9 / 11


Tamano de una instancia

Medimos la rapidez de los algoritmos usando la notacion de O, y .


Pensemos en f (n) como el tiempo que tarda el algoritmo en correr
cuando le metemos una instancia de tamano n.
Tiempo: Tiempo en d
onde? Mejor medir n
umero de pasos. explica
paso
Tama no de una instancia: Un algoritmo, mas que resolver un solo
problema, resuelve una clase de problemas que crecen con tama no n.
Usualmente n es el n
umero de bits necesarios para describir el
problema. mucho cuidado
Como a O, y les dan igual las constantes, bits bytes enteros
menores que un entero fijo = etc.
Ejemplo: Cuantos bits se necesitan para describir a todos los enteros
hasta 7625?
Respuesta: dlog2 (7625)e = 13 Habla de factorizar n
umeros y ajedrez
Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 9 / 11
Mejor, peor o promedio?

Hable de f (n) = n
umero de pasos, como si eso estuviera bien
definido. Pero quizas para instancias del mismo tama
no, el n
umero
de pasos vara muchsimo.

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 10 / 11


Mejor, peor o promedio?

Hable de f (n) = n
umero de pasos, como si eso estuviera bien
definido. Pero quizas para instancias del mismo tama
no, el n
umero
de pasos vara muchsimo.
Usualmente nos interesa el peor caso, o el promedio, casi nunca el
mejor caso (usualmente en el mejor de los casos, no hay nada que
hacer y el tiempo es casi 0).

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 10 / 11


Mejor, peor o promedio?

Hable de f (n) = n
umero de pasos, como si eso estuviera bien
definido. Pero quizas para instancias del mismo tama
no, el n
umero
de pasos vara muchsimo.
Usualmente nos interesa el peor caso, o el promedio, casi nunca el
mejor caso (usualmente en el mejor de los casos, no hay nada que
hacer y el tiempo es casi 0).
Usualmente debes considerar ambos, el peor caso y el caso promedio.

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 10 / 11


Mejor, peor o promedio?

Hable de f (n) = n
umero de pasos, como si eso estuviera bien
definido. Pero quizas para instancias del mismo tama
no, el n
umero
de pasos vara muchsimo.
Usualmente nos interesa el peor caso, o el promedio, casi nunca el
mejor caso (usualmente en el mejor de los casos, no hay nada que
hacer y el tiempo es casi 0).
Usualmente debes considerar ambos, el peor caso y el caso promedio.
A veces en la practica es falso que si un algoritmo A corre en tiempo
(n) es mejor que uno B que corra en tiempo (n3 ). Quizas es
10000000000n vs 0.0001n3 .

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 10 / 11


Mejor, peor o promedio?

Hable de f (n) = n
umero de pasos, como si eso estuviera bien
definido. Pero quizas para instancias del mismo tama
no, el n
umero
de pasos vara muchsimo.
Usualmente nos interesa el peor caso, o el promedio, casi nunca el
mejor caso (usualmente en el mejor de los casos, no hay nada que
hacer y el tiempo es casi 0).
Usualmente debes considerar ambos, el peor caso y el caso promedio.
A veces en la practica es falso que si un algoritmo A corre en tiempo
(n) es mejor que uno B que corra en tiempo (n3 ). Quizas es
10000000000n vs 0.0001n3 .
Efectivamente, para n suficientemente grande, A le ganara a B, pero
quizas solo nos interesan casos peque
nos.

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 10 / 11


Fin.

Gracias!

Miguel Raggi (Algoritmos ENES UNAM) Complejidad 9 de febrero de 2017 11 / 11

You might also like