Está en la página 1de 2

Segundo examen parcial - Fundamentos de análisis y diseño de

algoritmos
Duración: 2 horas
*
Carlos Andres Delgado S, Ing
17 de Junio 2017

Nombre: bote. A continuación un ejemplo con 4 embarcaderos,


Código: se quiere ir de 1 a 4.

2 3 4
1. Estructuras de datos [30 puntos]
1 10 40 100
1. (10 puntos) En el procedimiento Build-Heap, 2 - 20 80
se construye el montı́culo, en un ciclo desde 3 - - 5
length[A]/2 hasta 1 de manera creciente. Esto es
un capricho, pues de igual forma, el montı́culo pue- La solución óptima en este caso es tomar 1 a 2 (costo
de ser construido, si el ciclo fuese desde 1 hasta 10), 2 a 3 (costo 20), 3 a 4 (Costo 5) para un costo total
lenght[A]/2, aplicando Heapify en cada iteración. de 35.
Indique si es verdadero o falso, justifique su afir-
mación. 2.2. Problema del cambio de monedas
2. (10 puntos) Si se deseara que el algoritmo Heap- Usted se encuentra administrando un pequeño ne-
Soft ordenara descendentemente, es suficiente con gocio ubicado en la ciudad de Tulúa. Las personas le
la siguiente modificación. compran productos y al momento de pagar usted en-
H e a p S o f t D e s c (A) trega una devuelta en monedas. Se desea encontrar un
B u i l d−Heap (A) algoritmo que minimice el número de monedas que se
f o r i =2 t o n−1
H e a p i f y (A, i ) retornan. El problema se puede describir ası́:

Tiene un valor numérico entero a devolver A


Indique si es verdadero o falso, justifique su afir-
mación. Tiene un conjunto de monedas B = {b1 , b2 , ..., bn }
3. (10 puntos) ¿Cómo se puede implementar una Se busca encontrar el subconjunto de monedas
cola utilizando pilas? Analice las complejidades de Bs = {bi , .., bj , ..., bn } de tal forma su suma sea
las operaciones. igual A y el tamaño de Bs sea el menor posible.

Ejemplo:
2. Programación dinámica y vo-
raz [70 puntos] A = 50

2.1. Problema del viaje más barato B = {10, 10, 20, 30, 10, 20}
Sobre el rı́o Cauca hay n embarcaderos. En cada uno La solución óptima a este problema es Bs =
de ellos se puede alquilar un bote que permite ir a cual- {20, 30} ya que es el subconjunto de menor ta-
quier otro embarcadero rı́o abajo (es imposible ir rı́o maño que suma 50
arriba). Existe una tabla de tarifas que indica el coste
del viaje del embarcadero i al j para cualquier embar- 2.3. Preguntas
cadero de partida i y cualquier embarcadero de llegada
j más abajo en el rı́o i < j. Puede suceder que un viaje Para cada uno de los problemas anteriores responda:
de i a j sea más caro que una sucesión de viajes más
cortos, en cuyo caso se tomarı́a un primer bote hasta 1. (4 puntos) ¿Cual es la complejidad de la solución
un embarcadero k y un segundo bote para continuar ingenua? Justifique.
a partir de k. No hay coste adicional por cambiar de
* carlos.andres.delgado@correounivalle.edu.co

1
2. Cocinemos una deliciosa solución dinámica:
a) (9 puntos) Paso 1: Caracterice la solución
optima. Identifique si el problema se puede
solucionar mediante divide y vencerás. Ob-
serve si existe solapamiento de problemas y
sı́ una solución optima esta compuesta por
soluciones óptimas de los subproblemas.
b) (7 puntos) Paso 2: Defina recursivamente
el valor de una solución óptima. Identifique
la estructura de memorización, que significa
cada una de sus posiciones y cómo se calcula
cada una. Justifique formalmente.
c) (7 puntos) Pasos 3 y 4: Muestre cómo se
calcula el valor de la solución optima de for-
ma Bottom-up.
3. (8 puntos) A partir de la caracterización realiza-
da diseñe una solución voraz al problema. Justifi-
que formalmente.

¡Exitos!

También podría gustarte