Introducción a los algoritmos Parte I Joemmanuel Ponce
¿Qué es un algoritmo? <ul><li>Es un procedimiento computacional bien definido que toma por entrada un valor (o conjunto de...
¿Qué es un algoritmo? Problema
Ejemplo: Sucesión de Fibonacci <ul><li>Problema: </li></ul><ul><ul><li>La Sucesión de Fibonacci empieza con 1,1 y el sigui...
Ejemplo: Sucesión de Fibonacci <ul><li>Algunos casos: </li></ul><ul><ul><li>Entrada: </li></ul></ul><ul><ul><ul><li>1 </li...
Ejemplo: Sucesión de Fibonacci
¿POR QUÉ SON IMPORTANTES LOS ALGORITMOS? <ul><li>Tip: La información es poder. </li></ul>
Almacenamiento de información <ul><li>Fuente:  http://reviews.geekhaven.net/compression / </li></ul>
Almacenamiento de información
Almacenamiento de información <ul><li>GIF (256 Colores máx) </li></ul><ul><li>JPG (Hasta 16 millones de colores) </li></ul...
¿La diferencia? El algoritmo… <ul><li>GIF: Dithering </li></ul><ul><li>JPG No dithering </li></ul>GIF emplea una técnica l...
Ordenamiento de información
Ordenamiento de información
Búsqueda de información
Transferencia de información
INTRODUCCIÓN A LOS CONCURSOS DE PROGRAMACIÓN
Concursos de Programación <ul><li>Para hacer algo competitivo en los concursos de programación necesitas: </li></ul><ul><u...
Concursos de Programación <ul><li>En general, un buen y correcto algoritmo es aquel que: </li></ul><ul><ul><li>Termina den...
Sistemas de competencia <ul><li>Olimpiadas de Informática </li></ul><ul><ul><li>Olimpiada de Informática del Estado de Gua...
Olimpiadas de Informática <ul><li>Forma de evaluar: </li></ul><ul><ul><li>Lenguajes admitidos: C/C++, Pascal </li></ul></u...
Olimpiadas de Informática
Olimpiadas de Informática <ul><li>Gana el que acumule más puntos. </li></ul><ul><li>Ejemplos de problemas: </li></ul><ul><...
ACM Programming Contest <ul><li>Forma de evaluar: </li></ul><ul><ul><li>Lenguajes admitidos: C/C++, Java </li></ul></ul><u...
ACM Programming Contest <ul><li>Posibles respuestas del juez: </li></ul><ul><ul><li>Accepted/Yes:  El programa está correc...
ACM Programming Contest <ul><li>El online-judge de la UVa (Universidad de Valladolid) es un banco de problemas donde puede...
Topcoder Algorithm Competitions <ul><li>Forma de evaluar: </li></ul><ul><ul><li>Lenguajes admitidos: C++, Java, C# </li></...
Topcoder Competitions <ul><li>Más información: </li></ul><ul><ul><li>http://www.topcoder.com/tc </li></ul></ul>
Upcoming SlideShare
Loading in …5
×

Curso de Algoritmos - Presentación 1

14,117 views
13,710 views

Published on

Curso de Algoritmos Presentacion 1

Published in: Technology
2 Comments
6 Likes
Statistics
Notes
No Downloads
Views
Total views
14,117
On SlideShare
0
From Embeds
0
Number of Embeds
241
Actions
Shares
0
Downloads
6
Comments
2
Likes
6
Embeds 0
No embeds

No notes for slide

Curso de Algoritmos - Presentación 1

  1. 1. Introducción a los algoritmos Parte I Joemmanuel Ponce
  2. 2. ¿Qué es un algoritmo? <ul><li>Es un procedimiento computacional bien definido que toma por entrada un valor (o conjunto de valores) y produce otro valor (o conjunto de valores) como salida. (CLRS Cap. 1) </li></ul>
  3. 3. ¿Qué es un algoritmo? Problema
  4. 4. Ejemplo: Sucesión de Fibonacci <ul><li>Problema: </li></ul><ul><ul><li>La Sucesión de Fibonacci empieza con 1,1 y el siguiente número se obtiene con la suma de los dos anteriores. Calcule el enésimo elemento de la sucesión. </li></ul></ul><ul><li>Caso de Ejemplo: </li></ul><ul><ul><li>Entrada, un solo número n </li></ul></ul><ul><ul><ul><li>5 </li></ul></ul></ul><ul><ul><li>Salida, un solo número, el elemento n </li></ul></ul><ul><ul><ul><li>5 </li></ul></ul></ul>
  5. 5. Ejemplo: Sucesión de Fibonacci <ul><li>Algunos casos: </li></ul><ul><ul><li>Entrada: </li></ul></ul><ul><ul><ul><li>1 </li></ul></ul></ul><ul><ul><li>Salida: </li></ul></ul><ul><ul><ul><li>1 </li></ul></ul></ul><ul><ul><li>Entrada: </li></ul></ul><ul><ul><ul><li>10 </li></ul></ul></ul><ul><ul><li>Salida: </li></ul></ul><ul><ul><ul><li>30 </li></ul></ul></ul>
  6. 6. Ejemplo: Sucesión de Fibonacci
  7. 7. ¿POR QUÉ SON IMPORTANTES LOS ALGORITMOS? <ul><li>Tip: La información es poder. </li></ul>
  8. 8. Almacenamiento de información <ul><li>Fuente: http://reviews.geekhaven.net/compression / </li></ul>
  9. 9. Almacenamiento de información
  10. 10. Almacenamiento de información <ul><li>GIF (256 Colores máx) </li></ul><ul><li>JPG (Hasta 16 millones de colores) </li></ul><ul><li>Peso: 5KB </li></ul><ul><li>Peso: 6KB (15% compresión) </li></ul>
  11. 11. ¿La diferencia? El algoritmo… <ul><li>GIF: Dithering </li></ul><ul><li>JPG No dithering </li></ul>GIF emplea una técnica llamada “DITHERING” para engañar al ojo y hacerle creer que es sólido cuando en realidad usa 2 diferentes colores de los 256 que tiene a su disposición, en este caso, uno tras otro en un patrón predecible. Nota como los puntos en una imagen GIF se alternan claros y oscuros mientras que en JPG, que tiene 16 millones de colores disponibles, es un solo color.
  12. 12. Ordenamiento de información
  13. 13. Ordenamiento de información
  14. 14. Búsqueda de información
  15. 15. Transferencia de información
  16. 16. INTRODUCCIÓN A LOS CONCURSOS DE PROGRAMACIÓN
  17. 17. Concursos de Programación <ul><li>Para hacer algo competitivo en los concursos de programación necesitas: </li></ul><ul><ul><li>Saber algunos algoritmos bien conocidos. </li></ul></ul><ul><ul><li>Habilidad para identificar qué algoritmo es lo mejor para un problema en particular… </li></ul></ul><ul><ul><li>O que combinaciones o variantes de los algoritmos se pueden emplear (si el problema es un poco más complejo). </li></ul></ul>
  18. 18. Concursos de Programación <ul><li>En general, un buen y correcto algoritmo es aquel que: </li></ul><ul><ul><li>Termina dentro del tiempo límite (véase Complejidad). </li></ul></ul><ul><ul><li>No ocupa más de la memoria propuesta como límite. </li></ul></ul><ul><ul><li>Cuando termine, debe producir salidas correctas para las entradas propuestas por los jueces. </li></ul></ul>
  19. 19. Sistemas de competencia <ul><li>Olimpiadas de Informática </li></ul><ul><ul><li>Olimpiada de Informática del Estado de Guanajuato (OIEG) </li></ul></ul><ul><ul><li>Olimpiada Mexicana de Informática (OMI) </li></ul></ul><ul><ul><li>International Olympiad in Informatics (IOI) </li></ul></ul><ul><li>ACM Programming Contest </li></ul><ul><ul><li>International Collegiate Programming Contest (ICPC) </li></ul></ul><ul><li>Topcoder Competitions </li></ul>
  20. 20. Olimpiadas de Informática <ul><li>Forma de evaluar: </li></ul><ul><ul><li>Lenguajes admitidos: C/C++, Pascal </li></ul></ul><ul><ul><li>El programa debe compilar en menos de un tiempo predefinido. </li></ul></ul><ul><ul><li>El programa debe correr dentro de las limitantes de tiempo y uso de memoria impuestas. </li></ul></ul><ul><ul><li>Se acumulan puntos por casos resueltos (ver siguiente diapositiva). </li></ul></ul><ul><ul><li>La entrada y la salida puede ser ya sea escribiéndolo en archivos o por teclado y pantalla. </li></ul></ul>
  21. 21. Olimpiadas de Informática
  22. 22. Olimpiadas de Informática <ul><li>Gana el que acumule más puntos. </li></ul><ul><li>Ejemplos de problemas: </li></ul><ul><ul><li>http://www.cimat.mx/oieg </li></ul></ul><ul><ul><li>http://www.usaco.org </li></ul></ul><ul><li>Recomendación: </li></ul><ul><ul><li>Registrarse en la USACO Training Gate </li></ul></ul>
  23. 23. ACM Programming Contest <ul><li>Forma de evaluar: </li></ul><ul><ul><li>Lenguajes admitidos: C/C++, Java </li></ul></ul><ul><ul><li>El programa debe correr dentro de las limitantes de tiempo y uso de memoria impuestas. </li></ul></ul><ul><ul><li>Para resolver un problema es necesario idear un algoritmo que resuelva todos los casos de prueba. </li></ul></ul><ul><ul><li>La entrada y la salida puede ser ya sea escribiéndolo en archivos o por teclado y pantalla. </li></ul></ul>
  24. 24. ACM Programming Contest <ul><li>Posibles respuestas del juez: </li></ul><ul><ul><li>Accepted/Yes: El programa está correcto </li></ul></ul><ul><ul><li>Presentation Error: El programa está correcto sin embargo tiene errores en el formato de la salida </li></ul></ul><ul><ul><li>Wrong Answer: El programa dio alguna salida incorrecta </li></ul></ul><ul><ul><li>Time Limit Exceeded: El programa exedió el tiempo límite. </li></ul></ul>
  25. 25. ACM Programming Contest <ul><li>El online-judge de la UVa (Universidad de Valladolid) es un banco de problemas donde puedes enviar tu solución en línea y ver automáticamente si es correcta o errónea. </li></ul><ul><li>http://acm.uva.es </li></ul>
  26. 26. Topcoder Algorithm Competitions <ul><li>Forma de evaluar: </li></ul><ul><ul><li>Lenguajes admitidos: C++, Java, C# </li></ul></ul><ul><ul><li>El programa debe correr dentro de las limitantes de tiempo impuestas. </li></ul></ul><ul><ul><li>Para resolver un problema es necesario idear un algoritmo que resuelva todos los casos de prueba. </li></ul></ul><ul><ul><li>La idea es escribir una clase con una función que recibe la entrada por medio de parámetros y la salida como valores de regreso del método. </li></ul></ul>
  27. 27. Topcoder Competitions <ul><li>Más información: </li></ul><ul><ul><li>http://www.topcoder.com/tc </li></ul></ul>

×