Anda di halaman 1dari 4

FIEC ESPOL Anlisis de Algoritmos Deber N 3 Diciembre/09 Warshal

Sea G un grafo sencillo, dirigido y conexo. Escriba un programa para determinar si entre cada par de vrtices de G existe por lo menos un camino. Utilice programacin dinmica (una variacin del algoritmo de Floyd). Calcule la matriz Z, cuyos elementos zij son verdaderos si existe por lo menos un camino entre los vrtices i y j, y falsos en caso contrario. Muestre con claridad que la estrategia que aplica el algoritmo es programacin dinmica. Muestre tambin como se divide el problema en subproblemas, cuales son los subproblemas mas pequeos, y como se calcula la solucin de un problema a partir de las soluciones de los subproblemas (ecuacin de recurrencia). Calcule el tiempo de ejecucin de su algoritmo. Implemente el algoritmo de Warshal y pruebelo con dos casos por lo menos.

Vuelto
La empresa XYZ esta diseando una nueva maquina vendedora de colas y requiere un programa para calcular el numero mnimo de monedas para entregar el vuelto B de una transaccin, y determinar cuales son dichas monedas. Suponga que la maquina tiene un nmero ilimitado de monedas de cada una de las siguientes denominaciones: 1, 5, 10, 25, y 50 centavos.

Encuentre una solucion por divisin y conquista, por programacion dinmica, y por algoritmos voraces. Compare los tiempos de ejeccucion de estas soluciones (teoricamente) Implemente estas soluciones y prubelas con dos casos por lo menos. Compare los resultados.

Planificacin
Suponga que un estudiante decide durante la semana de registros cambiar de especialidad, de Computacin a Caos Aplicado. En la Facultad de Caos Aplicado todos los cursos se dictan un mismo da de la semana al que los estudiantes llaman el superda. Cada curso tiene una hora de inicio y otra de terminacin, distintas a las de los dems cursos; por ejemplo, Arquitectura del Paisaje con Papel empieza a las 10:27 y termina a las 11:51, mientras que Macateta empieza a las 4:18 y termina a las 7:06, etc. Como el estudiante quiere graduarse rpido, quisiera poder tomar el mayor nmero de cursos posible. El sistema acadmico de la universidad no le permite registrarse en cursos cuyos

horarios se traslapen, y ningn funcionario tiene autoridad para pasar por alto esta caracterstica del sistema. Encuentre los cursos en que debe registrarse.

Mas formalmente, sea L una lista de los n cursos ofrecidos por la facultad de Caos Aplicado; con cada curso tenemos el par (sk, fk), donde sk es la hora de inicio y fk es la hora de terminacin del curso k-simo; entonces, para cada par de cursos i, j, si > fj o sj > fi. 1. 2. 3. Encuentre una solucin voraz a este problema, y demuestre que esta solucin es correcta. Instrumente su solucin mediante una funcin que tiene por parmetro L y retorna el conjunto S de los cursos en que el estudiante debe registrarse. Pruebe esta funcin con 2 casos de prueba cuando menos.

La distancia de Levenshtein (Minimum Edit Distance)


Cuando se levantan textos es normal cometer errores; por lo tanto, es de gran ayuda que el procesador que usamos tenga una funcin que liste un conjunto de palabras parecidas o prximas a la palabra mal escrita o cuya ortografa es cuestionable. A fin de medir cuantitativamente la similitud entre dos palabras (secuencias de smbolos tomados de un alfabeto) se ha definido el concepto de distancia de Levenshtein. Obviamente, si dos palabras son idnticas, la distancia de Levenshtein entre ellas es 0; tambin, mientras mayor sea el parecido entre dos palabras menor sera la distancia entre ellas. Por supuesto, la similitud a la que nos referimos no es en sentido semntico o de significado, sino en sentido morfolgico (la forma de la palabra). La distancia de levenshtein entre las palabras w1 y w2 se define como el numero mnimo de cambios u operaciones de edicin que deben efectuarse para transformar w1 en w2. Estas operaciones de edicin son: eliminacin, insercin y sustitucin. El problema de transformar una palabra en otra mediante estas tres operaciones no tiene solucin nica, pero estamos interesados en aquella solucin en la que el numero de cambios que se efectan es mnimo. Encuentre una solucin por programacin dinmica al problema de calcular la distancia de Levenshtein entre dos palabras. Indique cuales son algunas aplicaciones practicas de este algoritmo Instrumente una funcin que tiene como parmetros dos palabras y calcula la distancia de levenshtein entre ellas. Pruebe esta funcin con cinco casos de prueba por lo menos.

El agente viajero
Con motivo del quincuagesimo aniversario de la ESPOL se ha organizado una competencia atltica que consiste en una minimaraton que pasar por 6 sitios turisticos de la ciudad de Guayaquil: barrio las peas, parque del centenario, etc., a los que simplemente codificaremos con los dgitos 1, 2, 3, 4, 5 y 6. Las rutas posibles entre cada par de sitios ya

estan establecidas y en la tabla siguiente se muestran las distancias correspondientes a cada ruta en centenares de metros. DE 1 2 3 4 5 A: 2 3 3 10 6 4 11 12 9 5 7 8 4 5 6 25 26 20 15 18

Se quiere saber cual es el recorrido mas corto que empiece y termine en uno de estos sitios y que pase una sola vez por todos los dems. 1. 2. 3. 4. Disee un algoritmo voraz para encontrar una solucin a este problema. Es esta solucin correcta? Qu significa que sea la solucin correcta? Si este algoritmo no garantiza que lo sea, entonces de que manera puede servirnos esta solucin? Estime el tiempo de ejecucin de una solucin trivial a este problema, y tambin del algoritmo voraz que usted diseo arriba, y comprelos.

Algoritmo de Dijkstra
Utilizando un mapa de rutas areas escoja n ciudades en el mundo (Guayaquil una de ellas). Sea G un grafo ponderado cuyos vrtices representan a estas n ciudades, y cuyos arcos corresponden a las rutas areas entre dichas ciudades; el peso o costo de cada arco representara el tiempo necesario para viajar entre los vrtices incidentes a dicho arco. Este tiempo podra estimarse midiendo en el mapa con una regla la distancia en lnea recta entre dichas ciudades. Suponga que las conexiones entre vuelos consecutivos son instantneas. Encontrar los tiempos mnimos para viajar de Guayaquil a las otras n-1 ciudades. 1. 2. 3. 4. 5. 6. 7. Muestre (argumente, discuta) que el algoritmo de Dijkstra es un algoritmo voraz o codicioso, que obtiene el mnimo global de las distancias entre vrtices por medio de minimizar localmente. Demuestre que el algoritmo de Dijkstra resuelve correctamente el problema de hallar las distancias mnimas de un nodo cualquiera a todos los dems, en un grafo sencillo, conexo y pesado. Implemente el algoritmo de Dijkstra para resolver el problema arriba planteado. Estime el tiempo de ejecucin y la memoria que requiere el algoritmo de Dijkstra. Calcule experimentalmente el tiempo de ejecucin para varios valores de n. Grafique t vs. n para varios valores de n. Compare los resultados de 4. y 5. Comente.

Strassen
El algoritmo o metodo de Strassen se utiliza para multiplicar dos matrices cuadradas de nxn en tiempos teta(n ); lo que representa una mejora considerable con respecto al metodo que se usa tradicionalmente y que requiere tiempos 3 teta(n ). (Brevemente, el metodo consiste en dividir las matrices de nxn en matrices de (n/2)x(n/2), calcular 7
lg7

matrices auxiliares y a partir de ellas encontrar las submatrices de la matriz resultante) En este ejercicio haga lo siguiente: Describa en que consiste el metodo de Strassen. Ilustre el metodo con un ejemplo. Explique por que se dice que este es un algoritmo diseado por division y conquista. Demuestre que el metodo de Strassen es correcto Encuentre la ecuacion de recurrencia para calcular el tiempo de ejecucion del algoritmo. Resuelva la ecuacion obtenida en arriba. Compare este resultado con el obtenido por el mtodo convencional.

Anda mungkin juga menyukai