Control semana N°8 Cristian Alejandro Lagos Malla Análisis de Algoritmos Instituto IACC 15 – 03 - 2018
DESARROLLO
PREGUNTAS: Suponga que tene un conjuno de animales, donde esos se disribuen uni!ormemene enre animales acu"tcos, animales erresres erresres animales a#reos $con la misma cantdad de animales de cada tpo%: a% &'(mo se clasi)car*an denro denro de un +as+ b% &Usar*a un +as+ simple o uno encadenado c% &'(mo ser*a su !unci(n de +as+ d% &'u"no demorar*a una b-squeda en su esrucura esrucura
Escriba en pseudoc(digo el algorimo de b-squeda binaria de !orma recursi.a/
1.A) ara la !lasi"i!a!i#n dentro de un $as$% se &ro&one 'ue el arra( donde guardemos la in"orma!i#n sea un arra( de &unteros $a!ia listas listas enla)adas*
Posición 1 2 3
Nombre terrestres acuáticos Aéreos
Perro Tilapia Áuila
Guepardo Tiburón Auiluc!o
") #n este caso$ % se&n las condiciones planteadas$ se usar'a un !as! encadenado, dado que ese corresponde a una de las #cnicas e0isenes para la soluci(n de las colisiones denro de las ablas de +as+/ Esas colisiones se producen cuando la !unci(n de +as+ reorna el mismo .alor para dos daos
distnos/ 'uando eso pasa se es" utli1ando un +as+ encadenado, el nue.o elemeno se encola despu#s del elemeno que a e0ise en la posici(n del +as+/
Esa #cnica, si bien es ciero que aumena la complejidad en la b-squeda de elemenos, incluso esa complejidad sigue siendo menor que almacenar odos los elemenos elemenos en una lisa enla1ada: si el peor caso de b-squeda de un elemeno en un conjuno desordenado de ama2o n +ace que demore 3$n%, para que un +as+ encadenado demore lo mismo, la !unci(n de +as+ debiera reornar siempre el mismo *ndice, lo cual .iolar*a la regla de las !unciones de +as+ que dice que los elemenos deben esar uni!ormemene disribuidos denro del conjuno/ '% El +as+ing consa de una !unci(n de +as+, llamada +$0%, que puede ser de)nida de !orma arbiraria, pero debe utli1arse la misma para la consrucci(n de odo el +as+/ Para el problema se2alado se omar" la segunda lera del nombre se pondr" en la posici(n que le correspond correspondee del al!abeo/
Posición ( 1 2 3 * + ,
Nombre
Perro
Guepardo
Áuila
Auiluc!o
Tilapia
Tiburón
4%Un caso promedio de +as+ encadenado siempre siempre es el c"lculo de la !unci(n de +as+ para ubicarse en la lisa correca, que demora 3$5% m"s el caso que el elemeno buscado sea el -ltmo de la lisa para ese espacio del +as+/ 'omo es b-squeda secuencial, eso eso demorar*a 3$6%, donde 6 es un n-mero muc+o menor a n, a que el conjuno de los elemenos de la lisa es un subconjuno del conjuno de elemenos oales/ Para el ejemplo anerior, eso se raduce en que el tempo en enconrar el elemeno 7Tibur(n8 es 3$5%, pues +$Tibur(n% 9 el tempo de enconrar a tbur(n en la lisa es ; $Tilapia Tibur(n%/ El largo de la lisa que corresponde a la posici(n es ;, lo que es muc+o menor que el conjuno de odos los nombres: $Perro, $Perro, Guepardo,
3$5% > 3$6% con 6 ? n
2.Para reali/ar un pseudocodio de aloritmo de bus0ueda binaria de orma recursia$ es necesario saber que este algoritmo debe adoptar la forma en que misma función vaya vaya reduciendo el tamaño (N) del problema a un caso c aso base, de tal manera, al conocer la solución del caso base, va a poder p oder dar solución a cualquier problema de tamaño N. El pseudocódigo sería; int BinarySearch(int x, int v[], int tam) {
int RecursiveBinarySearch(int x, int v[], int i, int m, int d) { if (i>d) return -1; else if ( x == v[m] ) return m; else if ( x < v[m] ) return RecursiveBinarySearch(x, v, i, (int)((i+m-1)/2), (m-1)); else return RecursiveBinarySearch(x, v, (m+1), (int) ((d+m+1)/2), d); } int i = 0; int m = tam/2; int d = tam; return RecursiveBinarySearch(x, v, i, m, d);
+,,+,NCIA. /I/LI+ICA.
A'' $;@5%/ Bas+ing recursi(n denro denro de algorimos/ An"lisis de Algorimos/ Semana C/