You are on page 1of 1

Anlisis Diseo de Algoritmos

D0#2. D+ 4+567A8+$ 9 ,:+5,:A$ D+ 4A ,2;07#A,:<5


+$,7+4A #=,5:,A $70+>:2> D+ :56+5:+>2$ +5 :532>;?#:,A 75:'+>$:DAD D+ ;?4A6A

1. Dado un conjunto de n objetos, cada uno con un peso p = (p1, p2, ..., pn). Queremos repartir los objetos en dos montones diferentes, de manera que queden lo ms equilibrados posible en peso. Aplicando Programacin Dinmica se quiere conocer cual es el desequilibrio mnimo. Aplicarlo sobre el ejemplo n = ! p = (2, 1, ", ) ! construir la tabla. 2. Disponemos de una tabla # con n filas ! m columnas que representan las posibilidades de que ciertos trabajadores (n) realicen determinados trabajos (m). $i #%i, j& = ' entonces el trabajador i()simo puede reali*ar el trabajo j()simo. +n caso contrario no. ,ada trabajo puede ser reali*ado por uno o nin-.n trabajador, ! cada trabajador debe tener un trabajo o nin-uno. Aplicando Vuelta Atrs obtener todas las posibilidades de asi-nar trabajadores con trabajos, de forma que el n.mero de trabajos reali*ados sea m/imo. 0lantear la soluci1n como una n(tupla ! definir formalmente las restricciones tanto e/plcitas como implcitas. Dibujar el rbol de e/pansi1n que encuentra todas las soluciones correspondiente a tres operarios ! cuatro trabajos ! una tabla # #arbajo1 2perario1 2perario2 2perario" 3 3 ' #rabajo2 ' ' ' #rabajo" 3 ' 3 #rabajo ' 3 '

". ,alcular el tiempo de ejecuci1n ! el orden de complejidad para los casos mejor ! peor en el si-uiente al-oritmo
int algoritmo (int x){ if ( x < 10) return x; else return (x MOD 10) + algoritmo (x DIV 10); }

You might also like