Curso de Nivelación de Algoritmos - Clase 5

17

Click here to load reader

Transcript of Curso de Nivelación de Algoritmos - Clase 5

Page 1: Curso de Nivelación de Algoritmos - Clase 5

Diseño de AlgoritmosExamen Final

Curso de Nivelación de AlgoritmosClase 5

Lic. Ernesto [email protected]

Maestría y Carrera de Especialización en Explotación de Datos y Descubrimientode Conocimiento

23 de marzo de 2008

Lic. Ernesto Mislej Curso de Nivelación de Algoritmos

Page 2: Curso de Nivelación de Algoritmos - Clase 5

Diseño de AlgoritmosExamen Final

Diseño de Algoritmos

I Es de esperar que con el estudio y formalización de algoritmos,también se hayan desarrollado técnicas generales para laproducción de soluciones algoríticas.

I El primer punto es preguntarse si el problema es un problemade búsqueda, o uno de optimización.

I Veamos nuevamente el problema ”Llegar a CiudadUniversitaria desde el centro.”

I ¿A qué llamamos solución?I ¿Existe una ruta que una a esos 2 puntos?.I ¿Encontrar la ruta de costo mínimo que una a esos 2 puntos?.

Lic. Ernesto Mislej Curso de Nivelación de Algoritmos

Page 3: Curso de Nivelación de Algoritmos - Clase 5

Diseño de AlgoritmosExamen Final

¿Saben cómo se come a un elefante?

De a pedacitos. . .

Lic. Ernesto Mislej Curso de Nivelación de Algoritmos

Page 4: Curso de Nivelación de Algoritmos - Clase 5

Diseño de AlgoritmosExamen Final

¿Saben cómo se come a un elefante?De a pedacitos. . .

Lic. Ernesto Mislej Curso de Nivelación de Algoritmos

Page 5: Curso de Nivelación de Algoritmos - Clase 5

Diseño de AlgoritmosExamen Final

Divide y reinarás

EjemploProgramación de un fixture todos–contra–todos.

I La clave es encontrar una división del problema.I Supongamos 2 grupos de 4 jugadores y tambión que entre los

integrante de cada grupo ya se enfrentaron.I Ahora hace falta que cada integrade de los grupos jueguen

entre sí. Podría ser así:I 1-5, 2-6, 3-7, 4-8;I 1-6, 2-7, 3-8, 4-5;I 1-7, 2-8, 3-5, 4-6;I 1-8, 2-5, 3-6, 4-7;

I Ahora podemos usar la reducción recursiva, hasta el caso base,que es un fixture para 2 jugadores!

Lic. Ernesto Mislej Curso de Nivelación de Algoritmos

Page 6: Curso de Nivelación de Algoritmos - Clase 5

Diseño de AlgoritmosExamen Final

Divide y reinarás

Ejemplo

I Suponemos para 8 jugadores.I Ver una tabla T de n filas por n-1 columnas. T[i,j] responde al

jugador que debe enfrentar i, en el día j.I El fixture para los jugadores 1..4 está en la esquina superior

izquierda.I El fixture para los jugadores 5..8 está en la esquina inferior

izquiera y responde al mismo fixture de los jugadores 1..4, perosumándoles el número 4!.

I Ya se armó el fixture para los primeros 3 días.I Resta enfrentar a los del primer grupo con los del segundo y

eso ya lo tenemos resuelto. . .

Lic. Ernesto Mislej Curso de Nivelación de Algoritmos

Page 7: Curso de Nivelación de Algoritmos - Clase 5

Diseño de AlgoritmosExamen Final

Divide y reinarás

2 3 4 5 6 7 81 4 3 6 7 8 54 1 2 7 8 5 63 2 1 8 5 6 76 7 8 1 4 3 25 8 7 2 1 4 38 5 6 3 2 1 47 6 5 4 3 2 1

Lic. Ernesto Mislej Curso de Nivelación de Algoritmos

Page 8: Curso de Nivelación de Algoritmos - Clase 5

Diseño de AlgoritmosExamen Final

El árbol que no nos deja ver el bosque

Lic. Ernesto Mislej Curso de Nivelación de Algoritmos

Page 9: Curso de Nivelación de Algoritmos - Clase 5

Diseño de AlgoritmosExamen Final

Búsqueda local

EjemploUna oficina de social-dating, consejeras amorosas, nos piden ayudapara encontrar parejas compatibles.1. Suponemos un conjunto igual de mujeres y varones.2. Cada unión tiene un nivel de compatibilidad.3. Aleatoriamente unimos a una mujer con algún varón.4. Iteramos por pares de parejas: Si vemos que si hacemos un

cambio el nivel de compatibilidad general aumenta, lohacemos.

5. Lo hacemos hasta que no podemos mejorar más.

Lic. Ernesto Mislej Curso de Nivelación de Algoritmos

Page 10: Curso de Nivelación de Algoritmos - Clase 5

Diseño de AlgoritmosExamen Final

Búsqueda local

EjemploOtro enfoque goloso (o ansioso)

I Unimos a la pareja de mayor compatibilidad.I Iteramos hasta que no queden parejas.I Existen estrategias de controlar el estado inicial.

Lic. Ernesto Mislej Curso de Nivelación de Algoritmos

Page 11: Curso de Nivelación de Algoritmos - Clase 5

Diseño de AlgoritmosExamen Final

Búsqueda Exhaustiva

EjemploTenemos que salir de un laberinto, sin ciclos.1. Caminamos derecho. . .2. Si encontramos la salida, obviamente salimos.3. Si encontramos una bifurcación, guardamos las alternativas en

una pila, elegimos la opción del tope de la pila y volvemos a 1.4. Si encontramos una pared, elegimos la siguiente alternativa de

la pila y volvemos a 1.

Lic. Ernesto Mislej Curso de Nivelación de Algoritmos

Page 12: Curso de Nivelación de Algoritmos - Clase 5

Diseño de AlgoritmosExamen Final

Búsqueda Exhaustiva

Ejemplo

I Se plantea un árbol de opciones.I La manera de guardar y elegir las opciones cada paso va a

guiar la búsqueda.I Búsquedas a lo profundo (DFS) y a lo ancho (BFS).I En el peor de los casos, usé todas las combinaciones.

Lic. Ernesto Mislej Curso de Nivelación de Algoritmos

Page 13: Curso de Nivelación de Algoritmos - Clase 5

Diseño de AlgoritmosExamen Final

Búsqueda Exhaustiva

Puzzle 3x3:

Lic. Ernesto Mislej Curso de Nivelación de Algoritmos

Page 14: Curso de Nivelación de Algoritmos - Clase 5

Diseño de AlgoritmosExamen Final

Diseño de Algoritmos

Ejemplo

I Encontrar un agrupamiento de un conjunto de datos, oclustering.

I Veamos cómo resolver el siguiente problema para cadaacercamiento.

Lic. Ernesto Mislej Curso de Nivelación de Algoritmos

Page 15: Curso de Nivelación de Algoritmos - Clase 5

Diseño de AlgoritmosExamen Final

Examen Final

I El examen tendrá la forma de parcial domiciliario.I El examen es individual.I Consiste en definir una serie de conceptos comentados en

clase. Por favor, no transcriban la definición de Wikipedia.I La presentación es sumamente importante. Por favor, pongan

énfasis en la presentación del trabajo. Intenten ser creativos,buenos ejemplos y gráficos.

Lic. Ernesto Mislej Curso de Nivelación de Algoritmos

Page 16: Curso de Nivelación de Algoritmos - Clase 5

Diseño de AlgoritmosExamen Final

Examen Final

Describan los siguientes conceptos (en como máximo 10 renglones):

1. Algoritmo.2. ¿Qué 3 cosas debe cumplir un algoritmo?3. Programación.4. Lenguajes de Programación.5. Memoria.6. Variable. Codificación.7. Tipo de datos básicos.8. Tipo de datos abstractos. Definan las propiedades de los TDA

que hemos visto en clase.9. Complejidad.

Lic. Ernesto Mislej Curso de Nivelación de Algoritmos

Page 17: Curso de Nivelación de Algoritmos - Clase 5

Diseño de AlgoritmosExamen Final

Examen Final

. . .10. Búsquedas. Estructuras de datos. Clasificación y Complejidad.11. Ordenamientos. Clasificación y Complejidad.12. Algoritmo de Selección. MergeSort.13. Recursión.14. Algoritmos de búsquedas y de optimización.15. Divide y reinarás.16. Algoritmos golosos.17. Búsqueda local.18. Búsqueda exhaustiva.

Lic. Ernesto Mislej Curso de Nivelación de Algoritmos