Analisis de Algoritmos

5,058 views

Published on

Ejercicios de Analisis de Algoritmos

Published in: Business
  • Be the first to comment

  • Be the first to like this

Analisis de Algoritmos

  1. 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. 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

×