1. Deber N° 2
Problema 1.- Discuta cualitativamente la diferencia entre el tiempo promedio de ejecucion de un
algoritmo deterministico (tal como quicksort) y el tiempo esperado de un algoritmo aleatorio (tal como
quicksort aleatorio).
Problema 2.- La ecuacion de recurrencia t(n) = 7 t(n/2) + n2 describe el tiempo de ejecucion de un
algoritmo A. Otro algoritmo A’ que resuelve el mismo problema tiene en cambio la ecuacion t(n) =
at(n/4) + n2. ¿Cuál es el valor entero mayor que a puede tomar para que el tiempo de ejecucion de A’ sea
asintoticamente mas rapido que el de A?
Problema 3.- Resuelva las siguientes ecuaciones de recurrencia utilizando el teorema maestro. Justifique
con claridad el uso de los varios casos.
t(n) = 9 t(n/3) + n2 + n/2 + 1
t(n) 5 t(n/2) + n2
t(n) = 12 T(n/4) + n2
Problema 4.- El tiempo de ejecucion de la operación PARTICION sobre una secuencia de tamaño n es
teta(n); justifique esta afirmacion.
Problema 5.-
i. analice la recurrencia t(n) = √n t(√n) + n usando el arbol recursivo.
ii. ahora demuestre por induccion que la cota obtenida en (i) es correcta.
Problema 6.- ¿De que manera modificaria el algoritmo quicksort para ordenar una secuencia en orden
descendente?
Problema 7.- Los bancos registran las transacciones de una cuenta según el tiempo en que estas
ocurrieron, pero a la mayoria de las personas les gusta recibir sus estados de cuenta con las transacciones
listadas según el numero de cheque. Las personas normalmente giran sus cheques en orden según el
numero de cheque, mientras que los beneficiarios los cobran sin ningun orden particular. El problema de
convertir de uno a otro ordenamiento es un problema de ordenar una entrada que ya esta casi ordenada.
Se dice que el tiempo necesario para realizar esta conversion por insercion es mejor que el obtenido por
quicksort. ¿Qué piensa usted? Discuta su respuesta.
Problema 8.- Demuestre que el tiempo esperado para el algoritmo quicksort aleatorio es OMEGA(n lg n).
Problema 9.- El algoritmo o metodo de Strassen se utiliza para multiplicar dos matrices cuadradas de nxn
en tiempos teta(nlg7); lo que representa una mejora considerable con respecto al metodo que se usa
tradicionalmente y que requiere tiempos teta(n3). (Brevemente, el metodo consiste en dividir las matrices
de nxn en matrices de (n/2)x(n/2), calcular 7 matrices auxiliares y a partir de ellas encontrar las
submatrices de la matriz resultante) En este ejercicio haga lo siguiente:
a) Describa en que consiste el metodo de Strassen. Ilustre el metodo con un ejemplo.
b) Explique por que se diceque este es un algoritmo diseñado por division y conquista.
c) Demuestre que el metodo de Strassen es correcto
d) Encuentre la ecuacion de recurrencia para calcular el tiempo de ejecucion del algoritmo.
e) Resuelva la ecuacion obtenida en c).
f) Compare este resultado con el obtenido por el metodo convencional.
Problema 10.- Se quiere multiplicar dos numeros enteros muy grandes, cuyas representaciones requieren,
por ejemplo, 512 bits; el sistema de computo que tenemos esta limitado en cuanto a que la representacion
y las operaciones con numeros enteros deben hacerse con palabras de 64 bits. Diseñe por division y
conquista un metodo o algoritmo que permita realizar la multiplicacion de enteros de 512 bits en terminos
de multiplicaciones de palabras de 64 bits. Suponga que el tiempo para realizar sumas y desplazamientos
de palabras de 64 bits es teta(1). Siga los mismos pasos que en el ejercicio anterior.
Problema 11.- Se tienen un naipe de n cartas y se le pide a un voluntario que escoja una de las n cartas,
cuya identidad se mantendrá en secreto. Diseñe un metodo -similar al visto en clase- para encontrar dicha
carta “secreta” en tiempos teta(lg n). Considere que el tiempo para que el voluntario señale en que pila se
encuentra la carta es teta(1).
2. Problema 12.- En la industria de la construccion de semiconductores VLSI (very large scale integration)
se requiere probar millones de chips para detectar cuales estan defectuosos. La idea basica del metodo
consiste en hacer que los chips se prueben unos a otros; para ello se construye un dispositivo que reporta
el estado del par de chips instalado. Los chips buenos siempre dicen la verdad, es decir, reportan con
exactitud si el chip bajo prueba es bueno o malo; los chips malos no son confiables, es decir, dicen
cualquier cosa sobre el otro.
Diseñe un metodo para identificar todos los chips buenos. El problema debe resolverse en tiempos O(n).
Suponga que el numero de chips buenos es mayor que el de chips malos, y que para efectos de calcular el
tiempo por cada chip que se prueba se cuenta 1.
Note que basta encontrar un chip que sea bueno para encontrar todos los demas que sean buenos en
tiempos lineales; asi que hay que encontrar un chip que sea bueno en tiempos O(n).
Visita
http://www.fiec.espol.edu.ec
http://www.espol.edu.ec
Encontrarás más información