Ejercicios 03 Voraz Lab
Ejercicios 03 Voraz Lab
Ejercicios 03 Voraz Lab
Ejercicio 2). Se tiene que almacenar un conjunto de n ficheros en una cinta magnética
(soporte de almacenamiento de recorrido secuencial), teniendo cada fichero una longitud
conocida l1, l2, …, ln. Para simplificar el problema, puede suponerse que la velocidad del
lectura es constante, así como la densidad de información en la cinta.
Se conoce de antemano la tasa de utilización de cada fichero almacenado, es decir, se sabe
la cantidad de peticiones pi correspondiente al fichero i que se van a realizar. Por tanto, el
n
total de peticiones al soporte será la cantidad P = p
i1
i . Tras la petición de un fichero, al
El objetivo es decidir el orden en que los n ficheros deben ser almacenados para que se
minimice el tiempo medio de carga, creando un algoritmo voraz correcto.
Ejercicio 4). El participante de un concurso tiene que recorrer en su automovil una ruta
determinada desde Lisboa a Barcelona. Con el depósito de gasolina lleno, su coche puede
recorrer una distancia máxima de K kilómetros. El concursante tiene un mapa de la ruta que
debe recorrer en el que figuran las distancias entre las gasolineras, y planea realizar el viaje
con la menor cantidad paradas para repostar posible.
Suponiendo que parte de Lisboa con el depósito lleno, y que la distancia máxima entre dos
gasolineras consecutivas es menor que K, desarrollar un algoritmo voraz eficiente que
determine en qué gasolineras deberá parar el concursante.
Ejercicio 6). Se dispone de un vector V formado por n datos, del que se quiere encontrar
el elemento mínimo del vector y el elemento máximo del vector. El tipo de los datos que
hay en el vector no es relevante para el problema, pero la comparación entre dos datos para
ver cuál es menor es muy costosa, por lo que el algoritmo para la búsqueda del mínimo y
del máximo debe hacer la menor cantidad de comparaciones entre elementos posible.
Un método trivial consiste en un recorrido lineal del vector para buscar el máximo y
después otro recorrido para buscar el mínimo, lo que requiere un total de aproximadamente
2n comparaciones entre datos. Este método no es lo suficientemente rápido, por lo que se
pide implementar un método con metodología Voraz que realice un máximo de 32 n
comparaciones.
Universidad de Alcalá
Departamento de Ciencias de la Computación
Algoritmia y Complejidad
Grado en Ingeniería Informática
Ejercicio 7). Shrek, Asno y Dragona llegan a los pies del altísimo castillo de
Lord Farquaad para liberar a Fiona de su encierro. Como sospechaban que el puente
levadizo estaría vigilado por numerosos soldados se han traído muchas escaleras, de
distintas alturas, con la esperanza de que alguna de ellas les permita superar la
muralla; pero ninguna escalera les sirve porque la muralla es muy alta. Shrek se da
cuenta de que, si pudiese combinar todas las escaleras en una sola, conseguiría llegar
exactamente a la parte de arriba y poder entrar al castillo.
Afortunadamente las escaleras son de hierro, así que con la ayuda de Dragona van a
“soldarlas”. Dragona puede soldar dos escaleras cualesquiera con su aliento de fuego,
pero tarda en calentar los extremos tantos minutos como metros suman las
escaleras a soldar. Por ejemplo, en soldar dos escaleras de 6 y 8 metros tardaría 6 + 8
= 14 minutos. Si a esta escalera se le soldase después una de 7 metros, el nuevo
tiempo sería 14 + 7 = 21 minutos, por lo que habrían tardado en hacer la escalera
completa un total de 14 + 21 = 35 minutos.
Diseñar un algoritmo eficiente que encuentre el mejor coste y la manera de soldar las
escaleras para que Shrek tarde lo menos posible en escalar la muralla, indicando las
estructuras de datos elegidas y su forma de uso. Se puede suponer que se dispone
exactamente de las escaleras necesarias para subir a la muralla (ni sobran ni
faltan), es decir, que el dato del problema es la colección de medidas de las
“miniescaleras” (en la estructura de datos que se elija), y que solo se busca la forma
óptima de fundir las escaleras.