Вы находитесь на странице: 1из 21

Departamento de Informtica Facultad Politcnica

Ingeniera Informtica

ALGORITMOS Y
ESTRUCTURA DE DATOS III
2017 1er. Semestre Seccin TR
Prof. Cristian Cappo
ccappo@pol.una.py
ccappopy@gmail.com

AER: a definirse

1
Algoritmos y ED III
Horario de clases (Aula ???)
Mircoles de 17:30 a 19:45 (2,25 HR)
Jueves de 14:30 a 17:30 (3HR)
POR FAVOR LLEGAR A HORA A LA CLASE. Los alumnos
sin DEF(Derecho a Examen Final) deben asistir al
menos el 75% de las clases.
Consultas extra-clase:
Sin problemas, va correo electrnico
Coordinando una visita a la oficina del profesor. Local:
Ncleo de Investigacin y Desarrollo Tecnolgico (NIDTEC)
de la FPUNA. Bloque 3 del exCET (bloque de la FPUNA), en
la entrada del campus sobre la Avda. Mcal. Lopez.

2
Donde ubicarme
(Usualmente de 8:00 a 18:00 hs,
aunque mejor confirmar por mail )

3
Algoritmos y ED III
Qu haremos en el curso?
Estudiar algoritmos conocidos y de gran influencia
Estructura de datos (ED) avanzadas.
Examinar mtodos para analizar el rendimiento
(eficiencia) de algoritmos
Aplicar criterios para seleccin de algoritmos y ED
segn la naturaleza del problema a resolver.
Construir cdigo claro, depurable y documentado
(aunque no sea un curso de programacin ni de
ingeniera de software)

4
Algoritmos y ED III
Cul es el contenido del curso?
1. Java (como herramienta auxiliar y transversal )
2. Anlisis de algoritmos (unos de los temas ms importantes y de carcter
transversal)
3. Ordenacin y bsqueda
rboles binarios (no balanceados (BST) y balanceados (AVL, Rojinegros, etc) )
Tablas de dispersin
Ordenacin interna (##Sort basados o no en comparacin)
Ordenacin externa (ej: B-Arboles)
4. Bsqueda de patrones en cadenas ( KMP, Boyer-Moore, Rabin-Karp)
5. Grafos (ED y Algoritmos ms relevantes: barrido, bsqueda, cubrimiento, etc)
6. Tcnicas de diseo de algoritmos : Divide y vencers, Algoritmos voraces o
greedy, Programacin Dinmica, Backtracking o vuelta atrs.
7. Algoritmos aleatorizados o probabilsticos ( anlisis probabilstico, ED con base
aleatoria)

5
Qu veremos?
Estudiaremos fundamentalmente Anlisis de
Algoritmos (es el estudio terico del rendimiento
de programas y el uso de recursos)
Otros factores, son tambin muy importantes:
Modularidad - Funcionalidad - Extensibilidad
Correctitud - Robustez - Escalabilidad
Mantenibilidad - Usabilidad - Confiabilidad
Seguridad - Simplicidad

6
Algoritmos y ED III
Cules son las reglas del curso? (1)
El curso ser terico/prctico. Mucha programacin
Se tendrn tareas semanales (11 en total)
El puntaje parcial (100%) ser dividido de la siguiente forma:
60% Examen (en el 2do parcial ser 65%)
35%
05% Laboratorio (no hay en el perodo del 2do parcial)

L T E T E

Primer Parcial Segundo Parcial

Si no rinde el primer o segundo parcial, el puntaje de tareas y


laboratorio correspondiente a ese parcial se suman al tercer
parcial. Si rinde ambos exmenes y no consigui derecho, el
tercer examen parcial es 100%.
7
Algoritmos y ED III
Cules son las reglas del curso? (2)
El nro. de tareas ser de 11 distribuidas en todo el curso.
Muchas de ellas son de programacin (esencialmente en
Java), aunque tambin habr mucha teora.
Las tareas se entregan por grupo de 2 personas
(excepcionalmente 1 persona) va EDUCA
(www.educa.una.py/politecnica). Favor colocar una foto
actual en su perfil de EDUCA. Enviar el nombre de los
integrantes del grupo va el foro FAQs del curso en EDUCA
(hasta este mircoles 1/MAR). La clave de acceso es
alg3_2017_Neumann sin las comillas.
Los documentos, ejercitarios, presentaciones, etc, se
mantienen en el sitio de EDUCA.
Los exmenes sern SIN material.
8
Algoritmos y ED III
Recomendaciones
Dedicarle al menos 5 horas a la semana para estudiar,
leer y practicar.
Leer por anticipado, para ello tiene a mano el plan
semestral con las referencias de lectura. Use el Plan
Semestral.
Participar y consultar en clase.
Usar EDUCA para discutir temas que no quedaron
claros o relacionados a los temas del curso.
El profesor podra requerir algn tiempo en dar la respuesta,
en caso de que no la tenga a mano.

9
Plan Semestral (23 clases en total con 11 tareas y 2 laboratorios)
TEMA/Actividad Fechas Entrega TAREA
Introduccin + Java + Laboratorio Java 21/FEB, 22/FEB, 1/MAR(L) 1,2 (Java y C)
Anlisis de Algoritmos 2/MAR y 8/MAR 3 (Anlisis de alg.)
Ordenacin y Bsqueda: BST + Laboratorio BST 9/MAR y 15/MAR(L) 4 (BST)
Ordenacin y Bsqueda: AVL 16/MAR
Ordenacin y Bsqueda: Tablas de dispersin 22/MAR 5 (Tablas Hash)
Ordenacin y Bsqueda: Ordenacin interna I 23/MAR
Primer Parcial (Viernes 7/ABR) 27/MAR - 8/ABR Tareas: 1,2,3,4,5
Ordenacin y Bsqueda: Ordenacin Interna II 12/ABR 6 (Ord. Interna)
Ordenacin y Bsqueda: Ordenacin Externa 19/ABR 7 (Ord. Externa)
Bsqueda de Patrones 20/ABR
Grafos 26-27/ABR, 3-4/MAY 8 y 9 (Grafos)
Tcnicas de diseo de Algoritmos 10-11-17/MAY 10 (Tec. Diseo Alg.)
Algoritmos aleatorizados 18-24/MAY 11 (Alg. Aleatorizados)
Revisin general de lo desarrollado 25-MAY
Segundo Parcial (Viernes 9/JUN) 29/MAY 10/JUN Tareas: 6,7,8,9,10,11
Primer Final 30/JUN
Segundo Final 14/JUL
10
Algoritmos y ED III
Bibliografa:
Estructura de Datos en Java, Mark Allen Weiss. 1998.[WEIS2000]
Data structures and algorithm analysis. Edition 3.2 Java Edition. Clifford A. Shaffer.
2013. [Shaffer2013] (disponible en lnea)
http://people.cs.vt.edu/~shaffer/Book/JAVA3elatest.pdf
Introduction to Algorithm. Cormen, Leiserson, Rivest & Stein. 2nd Edition. 2001.
[CLRS2001] 3rd. Edition. 2009 [CLRS2009].
Algorithms. S. Dasgupta, C. Papadimitriou & U. Vazarini . 2008. McGraw-Hill.
Algorithms. R. Sedgewick & K. Wayne. 4th Edition. 2011. Addison-Wesley.
Data Structures and Algorithm Analysis in Java. Mark. A. Weiss. 3rd. Edition. Pearson.
2012.
The introduction to the design and analysis of algorithms. 2nd Edition. Anany Levitin.
2007.
The algorithm Design Manual. Steven Skiena. 2nd edition. 2008. Springer
Algorithm Design. Jon Kleinberg & Eva Tardos. 1th Edition. 2006. Pearson Education.
Estructura de datos y algoritmos. Aho, HopCroft & Ullman. Addison-Wesley. 1988
Algoritmos y estructura de datos. Niklaus Wirth. Prentice-Hall. 1987
Estructura de datos y algoritmos. Mark Allen Weiss. Addison-Wesley. 1995
Artculos y documentos adicionales entregados por el profesor (ver Referencias en
11
EDUCA).
Preguntas hasta aqu?

Empecemos

12
Conceptos bsicos
Problema Propiedades de un
Algoritmo algoritmo

Tipo Tipo Abstracto de Dato


Tipo de dato Estructura de datos
Algoritmo eficiente
Lenguaje de programacin
13
Porqu estudiar algoritmos y ED?
Internet: web search, ruteo de paquetes, archivos distribuidos, cloud
computing, internet things, ..
Biologa: proyecto del genoma humano, plegamiento de protenas, ..
Computacin: circuitos, sistema de archivos, compiladores,..
Computacin grfica: pelculas, video games, realidad virtual, 3D, ..
Seguridad: celulares, e-commerce, mquinas de votacin,..
Multimedia: MP3, JPG, DivX, HDTV, reconocimiento de rostros,
Redes sociales: sistemas recomendadores, propaganda, noticias,..
Fsica/Qumica: simulacin de fenmenos fsicos o qumicos (colisin
de partculas, astronoma, procesos qumicos, cosmologa, etc)

14
Algoritmo - Origen: del nombre del matemtico
y astrnomo rabeAbu Ja'far Mohammed
ibn Musa al-Khwarizmi (825) (Padre de
Ja'far, Mohammed, hijo de Moiss, natural
de Khowarizm). Escribi el clebre libro Kitab
al jabr w'al-muqabala (Reglas de restauracin y
reduccin -- > algebra)
Viejas races, nuevas
oportunidades
El estudio de los algoritmos
data al menos de la poca
de Euclides
Formalizado por Church
y A. Turing en 1930

15
Solucin de problemas

Tipo Abstracto Estructura de


Modelo matemtico
de Datos Datos

Algoritmo informal Algoritmo completo Programa

16
Porqu estudiar algoritmos?
Comprender la naturaleza intrnseca del problema, as
como las posibles tcnicas de solucin independientes al
lenguaje de programacin, paradigma, hardware u otro
aspecto de implementacin.
Es transversal y de largo alcance (base fundamental para
otras reas de computacin)
Para resolver problemas difciles que se nos presenta
Para ser mejor y un proficiente programador
Por una estimulacin intelectual
(Por ejemplo, competencias de programacin ACM-ICPC :
http://icpc.baylor.edu )
Divertido
Generador de buena$ oportunidade$ en cualquier rea
17
Para escribir un programa
Utilice un estilo de programacin (leer el libro La prctica
de la programacin de Brian Kernighan y Rob Pike):
Nombre conveniente a variables
Ser consistente (del mismo modo en todos los lugares)
Nombre activo para funciones
Ser preciso ( nombre vs funcionalidad)
Usar sangras (adecuadamente)
Dividir expresiones complejas
Usar forma natural en las expresiones (no escriba cdigo oscuro)
Emplear convenciones (por ejemplo el Java Convention Code - JCC)
Dar nombre a nmeros mgicos
Comentarios en cdigo no obvio. Aclarar, no confundir.
Funciones y datos globales siempre deben comentarse
No comentar cdigo malo, debe reescribirlo.
Y hay ms .. mucho ms

18
Para qu tomarse la molestia?
Porqu preocuparse por el estilo?
A quin le importa cmo se vea
un programa si ste funciona?
No toma demasiado tiempo hacer que
se vea bonito?

El cdigo bien escrito, ordenado y con estilo, es ms fcil de leer y


entender. Y posiblemente tiene menos errores.
El enemigo del programador: el tiempo. Pero no es excusa.
El cdigo desaliado es malo, torpe, difcil de leer y muchas veces
hasta incorrecto.
EL BUEN ESTILO DEBE SER UN HBITO.

19
Tareas para prximas clases
Para el mircoles 1/marzo/2017
Haberse inscripto en Educa / Enviar integrantes de grupo en
Foro de Educa
Leer captulo 1, 2, 3 y 4 del libro de Weiss [WEIS2000]
Bsicamente revisar: semejanzas y diferencias con lenguaje C.
Tutorial de Java en el sitio de Oracle:
http://docs.oracle.com/javase/tutorial (mirar los tpicos: Getting
Started, Learning the Java Language y si se puede: Essential Java
Classes)
Para practicar y aprender Java de una forma sencilla, puede mirar el
sitio: http://codingbat.com
En este sitio encontrarn informacin paso a paso de como utilizar
Java para programar (que es del libro Introduction to Programming in
Java An interdisciplinary approach) .
http://introcs.cs.princeton.edu/java/home/
Para el Jueves 2/Mar/2017 (via Educa)
Tarea #1, estar disponible en EDUCA el jueves 23/Feb.
Ejercicios relacionados a TDA y lenguaje C.
20
Preguntas/Comentarios?

21

Вам также может понравиться