You are on page 1of 2

UNIVERSIDAD MINUTO DE DIOS. FACULTAD DE INGENIERA.

PROGRAMA INGENIERA DE SISTEMAS


ASIGNATURA: DISEO DE SOFTWARE. AO 2017. PROYECTO FINAL

Disee los siguientes programas teniendo en cuenta los siguientes parmetros:

Los programas deben ser desarrollados exclusivamente con la tcnica descrita al


inicio.
Los tres programas deben ser integrados en un men principal que permita acceder
a cada uno de ellos.
Los programas deben ser flexibles (dinmicos). De ninguna manera se aceptarn
programas con datos quemados en cdigo, o funcionando exclusivamente para
algunos casos particulares.
Los programas podrn ser desarrollados por grupos de mximo 2 personas y sern
sustentados por slo una de ellas, escogida al azar, el da del examen final (ltima
semana de Noviembre).

DIVIDIR Y VENCER
Sea A[1n] un vector de enteros. Un elemento x se denomina elemento mayoritario de A si
x aparece en el vector ms de n/2 veces, es decir, Card {i | A[i]=x} > n/2. A travs de una
estrategia dividir y vencer, implemente un algoritmo capaz de decidir si un vector dado
contiene un elemento mayoritario (no puede haber ms de uno). El tamao del vector y los
valores del mismo sern cargados por el usuario.

PROGRAMACIN DINMICA
Sobre un ro hay n embarcaderos. En cada uno de ellos se puede alquilar un bote que
permite ir a cualquier otro embarcadero ro abajo (es imposible ir ro arriba). Existe una
tabla de tarifas que indica el coste del viaje del embarcadero i al j para cualquier
embarcadero de partida i y cualquier embarcadero de llegada j ms abajo en el ro (i < j).
Puede suceder que un viaje de i a j sea ms caro que una sucesin de viajes ms cortos, en
cuyo caso se tomara un primer bote hasta un embarcadero k y un segundo bote para
continuar a partir de k. No hay coste adicional por cambiar de bote.
Disee un algoritmo basado en una estrategia de programacin dinmica que determine el
coste mnimo para ir de un punto i a un punto j. El usuario podr cargar el nmero de
embarcaderos y los diferentes costes en una tabla, as como tambin el embarcadero de
partida y el de llegada, y el algoritmo dar como respuesta qu embarcaderos incluir la
ruta y cul es su costo.
UNIVERSIDAD MINUTO DE DIOS. FACULTAD DE INGENIERA.
PROGRAMA INGENIERA DE SISTEMAS
ASIGNATURA: DISEO DE SOFTWARE. AO 2017. PROYECTO FINAL

VUELTA ATRS
Dadas n personas y n tareas, se desea asignar a cada persona una tarea. El coste de asignar
a la persona i la tarea j viene determinado por la posicin [i,j] de una matriz dada (TARIFAS).
Disear un algoritmo, basado en una estrategia de vuelta atrs, que asigne una tarea a cada
persona minimizando el coste de la asignacin.
Por ejemplo, si consideramos tres personas a, b y c, a los que hay que asignar las tareas 1,2
y 3 con la matriz de costes siguiente:

1 2 3
a 4 7 3
b 2 6 1
c 3 9 4

Se podra asignar la tarea 1 a la persona a, la tarea 2 a la persona b y la tarea 3 a la persona


c, entonces nuestro coste total ser 4+6+4=14, mientras que si asignamos la tarea 3 a la
persona a, la tarea 2 a la persona b y la tarea 1 a la persona c, el coste ser solamente
3+6+3=12. Se puede verificar entonces, que la asignacin ptima es a2, b3 y c1, cuyo
coste es 7+1+3=11.
El usuario podr cargar la matriz TARIFAS y el programa dar como respuesta la asignacin
de las tareas a cada una de las personas.

You might also like