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.
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.