You are on page 1of 20

Anlisis de Algoritmos a Grado en Ingenier Informtica, UAM a a Problemas

(E): ejercicio; (E+): ejercicio avanzado. (P): problema; (P+): problema avanzado. (R): recomendado; se resolver en clase. a

Casos peor, mejor y medio de algoritmos bsicos a


1. (E; R) Denotando como MMul el algoritmo tradicional de multiplicacin de matrices cuadradas, o denir una OB adecuada para el mismo, y estimar para la misma nMMul (A, B), para cualquier par de matrices de dimensin N . o 2. (E; R) El siguiente pseudocdigo corresponde a un algoritmo para encontrar el m o nimo de una tabla indice Min(tabla T, indice P, indice U) Min=T[P]; iMin=P; para i de P+1 a U: si T[i] < Min: Min = T[i]; iMin=i; devolver iMin; Analizar su tiempo de ejecucin del algoritmo usando como operacin bsica la comparacin o o a o de claves. 3. (E) Analizar el tiempo de ejecucin del algoritmo trivial de potenciacin de pseudocdigo o o o pot(int x, int N) p = x; para i de 2 a N: p = p*x; devolver p; 4. (E; R) Para los siguientes fragmentos de cdigo, establecer una operacin bsica adecuada y o o a estimar sus tiempos de ejecucin en funcin de n: o o sum = 0; for (i=1; i<=n; i++) sum++;

Ejercicios

sum = 0; for (i=1; i<=n; i++) for (j=0; j<n; j++) sum++; sum = 0; for (i=1; i<=n; i++) for (j=0; j<n*n; j++) sum++;

Problemas 5. (P; R) Para los siguientes fragmentos de cdigo, establecer una operacin bsica adecuada y o o a estimar sus tiempos de ejecucin en funcin de n: o o sum = 0; for (i=1; i<=n; i++) for (j=0; j<i; j++) sum++; sum = 0; for (i=1; i<=n; i++) for (j=0; j<i*i; j++) for (k=0; k<j; k++) sum++; sum = 0; for (i=1; i<=n; i++) for (j=0; j<i*i; j++) if (j%i == 0) for (k=0; k<j; k++) sum++;

6. (P) Justicar las desigualdades (A + B)/2 max(A, B) A + B. Qu suponen para el e clculo del nmero de OBs sobre selecciones? a u

Crecimiento de funciones

Ejercicios 7. (E; R) Para un cierto problema se disponen de cinco algoritmos cuyos tiempos de ejecucin en o microsegundos para una entrada de tamao N son respectivamente 10.000N , 1.000N log10 N , n 100N 2 , 10N 3 y 103 10N/10 . Dar una tabla con sus tiempos de ejecucin para los valores de N o 10, 100, 1.000, 10.000, 100.000 y 1.000.000. Cul es para cada algoritmo el tamao mximo de una entrada para que sta se ejecute en 1 a n a e minuto? Y en un d a? 8. (E; R) Ordenar las siguientes funciones segn su crecimiento: n, n, n1.5 , n2 , n log n, n log log n, u n log2 n, 2/n, 2n , 2n/2 , 37, n2 log n, n3 .

9. (E) Los tiempos de ejecucin de tres algoritmos para la resolucin de un mismo problema, para o o 1 2 2 2 entradas de tamao N , son N , 10N (log2 N ) y 8 N log2 N , respectivamente. Dar los rangos de n valores de N en los que cada uno de estos algoritmos es ms conveniente. (Considerar potencias a de 2 para los l mites de dichos rangos.) 10. (E; R) El anlisis de dos algoritmos, A y B, muestra que WA (N ) = O(1000N log10 (N )) y a WB (N ) = O(N 2 ). Cul es mejor para problemas pequeos? Cul es mejor para problemas a n a grandes? Especicar qu ser pequeo y grande en este contexto. e a n 11. (E; R) Probar que para todo a > 0, log n = o(na ). 12. (E+) Probar que N = (N ) y que tambin N = (N ) (puede hacerse mediante l e mites?). 13. (E+) Cul es el orden de crecimiento terico de la funcin f (N ) = N log N + 100N ? Cul a o o a es su orden de crecimiento real? 14. (E; R) Se sabe que T1 f y T2 f ; decidir razonadamente la verdad o falsedad de las siguientes armaciones (dar un breve argumento en las ciertas y un contraejemplo o contraargumento en las falsas): (a) T1 + T2 f ; (b) T1 T2 = o(f ); (c) T1 T2 f 2 . 15. (E; R) Se sabe que T1 f y T2 f ; decidir razonadamente la verdad o falsedad de las siguientes armaciones (dar un breve argumento en las ciertas y un contraejemplo o contraargumento en las falsas): (a) T1 + T2 2f ;
2 2 (b) T1 T2 = o(f );

(c) T1 /T2 1. Problemas 16. (P; R) Se sabe que T1 (N ) = O(f (N )) y que T2 (N ) = O(f (N )). Cul de las siguientes a armaciones es cierta y cul falsa? a (a) T1 (N ) + T2 (N ) = O(f (N )); (b) T1 (N ) T2 (N ) = o(f (N )); (c)
T1 (N ) T2 (N )

= O(1);

(d) T1 (N ) = O(T2 (N )). (dar un breve argumento para las armaciones ciertas y un contraejemplo para las falsas). 17. (P; R) Se sabe que T1 (N ) = (f (N )) y que T2 (N ) = (f (N )). Cul de las siguientes a armaciones es cierta y cul falsa? a (a) T1 (N ) + T2 (N ) = (f (N )); (b) T1 (N ) T2 (N ) = o(f (N )); (c)
T1 (N ) T2 (N )

= (1); 3

(d) T1 (N ) = (T2 (N )). (dar un breve argumento para las armaciones ciertas y un contraejemplo para las falsas). 18. (P) Diremos que F = f + O(g) si g = o(f ) y |F f | = O(g). Comprobar que N k+1 /(K + 1) + O(N K ). 19. (P+) Probar que para todo N , log N ! = (N log N ) y N ! = o(N N ). 20. (P; R) Es cierto que para cualquier f y cualquier constante C, f (Cn) = O(f (n))? Es cierto que f (n + C) = O(f (n))?
N k 1 i

Estimacin de sumas o

Ejercicios 21. Estimar razonadamente el crecimiento de la siguiente funcin: o


N

S(N ) =
1

1 i1/3

,
2

i 22. (E) De una cierta tabla de tamao N se sabe que P (T [i]) = CN , donde CN es una constante n normalizadora. Cul ser el nmero medio de comparaciones de clave que realizar sobre la a a u a misma el algoritmo de bsqueda lineal en bsquedas con xito? u u e

23. (E; R) Se quiere usar el siguiente pseudocdigo para bsquedas lineales en tablas ordenadas o u int BLin(tabla T, dim N, clave K) i=1; mientras i <= N y T[i] > K: i++; si i > N: devolver error; else si T[i] != K: devolver error; else: devolver i; Suponiendo que P (K = i) = P (i < K < i + 1) = P (i < 1) = P (i > N ) = ABLin (N ) considerando tanto bsquedas con acierto como con error. u 24. (E; R) Dada una tabla T , se sabe que P (K = T [i]) = donde CN =
N log i . 1 i 1 , 2N +1

calcular

1 log i , CN i

Calcular razonadamente ABLin (N ). 25. (E) Dada una tabla T , se sabe que P (K = T [i]) = donde CN =
N 1

1 i log i, CN

i log i. Calcular razonadamente Ae (N ). BLin 4

Problemas 26. (E) Comprobar por induccin la veracidad de la identidad o 27. (P; R) Demostrar por induccin las siguientes frmulas: o o N 2 1 n = n(n + 1)(2n + 1)/6, N 3 2 1 n = (n(n + 1)/2) . 28. (P+) Dar una frmula para la suma N nxn , y tambin para N n2 xn . (Observse que la o e e 1 1 primera se parece a una derivada y la segunda no est demasiado lejos.) a
N 1

a + ib = N (a +

N +1 b). 2

Evolucin de algoritmos locales o

Ejercicios 29. (E) Dada la lista [20, 3, 10, 6, 8, 2, 13, 17], indicar el estado de la misma tras cada una de las iteraciones del mtodo de la burbuja y del de insercin. e o 30. (E) Sobre la lista 16 6 3 4 9 31 1 8 2 7, dar razonadamente la evolucin del mtodo de o e insercin, indicando el estado de la tabla tras la ubicacin de cada elemento, y el nmero de o o u comparaciones de elementos realizadas en dicha ubicacin. o 31. (E) Sobre la lista 8 18 5 6 10 3 4 11 31 7, dar razonadamente la evolucin del mtodo de la o e burbuja, indicando para la primera iteracin qu elementos se usan como burbuja y detallando o e los estados parciales de la tabla, y para las dems iteraciones el estado nal de la tabla tras las a mismas. Cuntas iteraciones se harn? a a Problemas 32. (P; R) En los cuadros de la gura inferior se representan tres fases consecutivas de la evolucin o de una lista de 50 nmeros entre 1 y 50 a la que se aplican ciertos mtodos de ordenacin. Las u e o coordenadas (i, j) de un punto del grco indican que el nmero de la posicin isima de la a u o e lista es precisamente j (por ejemplo, un nmero i est en su posicin correcta si j = i, esto u a o es, si el par (i, j) est en la diagonal). Cules de los mtodos de ordenacin estudiados en el a a e o curso podr generar estos grcos? a a

Ecacia de algoritmos locales

Ejercicios 33. (E; R) Dadas las permutaciones de S6 (6 1 5 2 4 3), (6 5 4 1 2 3) y (2 3 6 4 5 1), calcular sus traspuestas, encontrar las inversiones de ambas y comprobar el resultado del problema anterior. Si se les aplica un algoritmo de ordenacin local, cuntas cdcs efectuar como m o a a nimo sobre ellas? 34. (E; R) Cuntas comparaciones de clave realizar como m a a nimo un algoritmo de ordenacin o local sobre la permutacin de N = 2K elementos (2K 2K-1 2K-2 ... K+1 1 2 3 ... K)? o

35. (E; R) Expresar en funcin de N cuantas comparaciones de clave realizar como m o a nimo un algoritmo local si se aplica a la permutacin de N = 3K elementos (2K+1, 2K+2, ..., 3K, o 2K, 2K-1, ... K+2, K+1, 1, 2, ..., K) 36. (E) Expresar en funcin de N cuntas comparaciones de clave realizar como m o a a nimo un algoritmo local si se aplica a la permutacin de N = 4K elementos o (3K+1, 3K+2, ..., 4K, 3K, 3K-1, ..., 2K+2, 2K+1, 2K, 2K-1, ... ..., K) K+2, K+1, 1, 2,

37. (E; R) Decidir razonadamente el nmero de comparaciones de clave que un algoritmo de u ordenacin local har como m o a nimo sobre la permutacin de N = 3K elementos o (3K, 3K 1, , ..., 2K + 1, K + 1, K + 2, ..., 2K, K, K 1, ..., 2, 1). Problemas 38. (P) Comprobar mediante la denicin de permutacin traspuesta que dada una permutacin o o o , se cumple que ( ) coincide con . 39. (E+; R) Se aplica un algoritmo local A de ordenacin a la permutacin de N = 2K elemeno o tos (1 2K 2 2K-1 3 2K-2 ... K K+1). Cuntas comparaciones de clave efectuar A sobre a a dicha permutacin? o

40. (E+; R) Decidir razonadamente el nmero de comparaciones de clave que un algoritmo de u ordenacin local har como m o a nimo sobre la permutacin de N = 2K elementos (2K, 1, o 2K-1, 2, ..., 2K-i, i+1, ..., K+1, K). 41. (P) Calcular el valor de WBurbuja (N ), ABurbuja (N ), WSeleccion (N ) y ASeleccion (N ).
A 42. (E) Se dene BA (N ) como BA (N ) = min{nA (I) : I EN }. Analizar BInsert (N ), BSelec (N ), BBurbuja (N ).

43. (E+) Modicar el psc del mtodo de Insercin para que pueda trabajar con e o ndices iniciales P y nales U cualesquiera. 44. (P; R) Analizar BInsert (N ), BSelec (N ), BBurbuja (N ) usando el intercambio de elementos como operacin bsica. Analizar tambin WSelect (N ), y WBurbuja (N ) bajo este punto de vista. o a e 45. (P+; R) Dar una estimacin aproximada de ABurbuja (N ) suponiendo que en la misma se o utiliza el siguiente psc: Burbuja(tabla T, dim N) switch = 1; long = N; mientras switch == 1 y long > 1: switch = 0; para i de 1 a long-1: si T[i] > T[i+1]: intercambiar T[i] y T[i+1]; switch = 1; long--; 46. (P; R) El siguiente pseudocdigo es una ligera variante del habitualmente utilizado en la o ordenacin por Insercin: o o InsertSort(tabla T, dim N) para i de 2 a N: j=i; mientras j > 1 y T[j-1] > T[j]: intercambiar T[j-1] y T[j]; j--; volver; Utilizando el intercambio de elementos como operacin bsica, calcular razonadamente WInserSort (N ) o a y AInserSort (N ). 47. (P) Un algoritmo de ordenacin se dice estable si al aplicarlo a una tabla con elementos tal o vez repetidos, dos elementos con la misma clave (y por tanto relativamente ya bien ordenados) mantienen sus posiciones relativas al nalizar el algoritmo. Cules de los mtodos de a e ordenacin estudiados son estables? (Modicar su psc si fuera necesario.) o 48. (P+) Supongamos que en una tabla los elementos T[i] y T[i+K] estn en inversin. Probar a o que si los intercambiamos, se elimina como m nimo una inversin y como mximo 2K 1. o a

MergeSort y QuickSort

Ejercicios 49. (E) Estudiar la evolucin de las permutaciones o (a) (5 9 8 2 3 10 1 7 4 6), (b) (3 10 1 7 5 9 8 2 4 6), (c) (10 1 7 3 9 8 2 5 4 6), cuando se le aplica la rutina Partir suponiendo que su subrutina Medio devuelve el ndice P. 50. (E) Dar la evolucin del algoritmo Partir sobre la tabla (7 8 2 4 5 3 10 1 6). o 51. (E+) Dada la lista [18, 7, 4, 6, 12, 23, 2], a. Indicar mediante un rbol las distintas sublistas que se generan en la fase de partir al a aplicrsele el mtodo MergeSort (situar en un nodo dado una sublista y a su izquierda y a e derecha las otras dos que se generan de ella). Numerar cada nodo segn el orden en que el u mtodo MergeSort genera su correspondiente lista. e b. Tomado como base las sublistas elementales del ultimo nivel del rbol anterior, indicar a mediante un rbol invertido las distintas sublistas que se generan en la fase de combinacin a o del mtodo MergeSort (por ejemplo, el ultimo nodo debiera contener la lista inicial ordenada). e Numerar tambin aqu cada nodo segn el orden en que el mtodo MergeSort genera su corree u e spondiente lista. 52. (E) Dadas las listas [45 29 47 32 19 12 26 51] y [12 9 22 37 25 32 6 14], estudiar su evolucin sobre un AB cuando se les aplica el mtodo de ordenacin de MergeSort y QuickSort. o e o 53. (E) Dadas las listas [Q B K C F A G P] , [34 43 12 58 17 92 21] indicar su evolucin en un rbol binario al aplicarseles los mtodos de MergeSort. o a e Problemas 54. (P+) Estudiar el tiempo de ejecucin del QuickSort en los casos mejor y peor tomando como o operacin bsica el intercambio de elementos. o a 55. (P) Calcular AP artir (N ), donde P artir es la rutina de divisin que utiliza el mtodo de Quicko e Sort para dividir una tabla en dos subtablas utilizando como operacin bsica el intercambio o a de elementos de la tabla. 56. (P+) Estudiar el tiempo medio de ejecucin del QuickSort tomando como operacin bsica el o o a intercambio de elementos. 57. (P) Estudiar BCombinar y BM S (N ). 58. (P+) Estudiar ACombinar cuando se aplica a dos tablas de tamao N . n 59. (P+) Estimar de manera adecuada el posible valor de AM S (N ). 60. (P+) Una operacin bsica alternativa en el Merge Sort podr ser la copia de elementos que o a a se realiza en la rutina Combinar. Estimar los posibles valores de WM S (N ) y AM S (N ) respecto a esta operacin. o 8

61. (P+) Analizar BQS (N ). 62. (P) Se quiere aplicar el algoritmo QuickSort tomando siempre P como pivote sobre un conjunto de tablas T de tamao N = 2M + 1 de la forma n [M + 1, 2, . . . M, 1, T [M + 2], . . . , T [N ]], donde los valores T[j], M +2 < j N estn entre M +2 y N = 2M +1; esto es, la primera parte a de las tablas es siempre la misma, de la forma T[1] = M+1, T[i] = i si 1 < i < M +1, T[M+1]=1 y la segunda parte var estando formada por los enteros de M + 2 a N desordenados. Estimar a, razonadamente en funcin de N cul ser el coste medio de tales ordenaciones. o a a

Desigualdades recurrentes

Ejercicios 63. (E; R) De una cierta funcion T se sabe que T (1) = 0 y que T (N ) lgN + T ( N/2 ). Estimar el orden de T (N ) para N de la forma N = 2K (Sugerencia: reiterar la igualdad anterior). 64. (E; R) Estimar el orden de la funcin T (N ) en las siguientes recurrencias suponiendo que o T (1) = 0 (a) T (N ) 2T ( N/2 ) + N 3 ; (b) T (N ) 2T (N 1) + 1; (c) T (N ) T (N 1) + N ; (d) T (N ) 2T ( N/4 ) + N ; 65. (E; R) Estimar razonadamente el crecimiento de la funcin T que satisface T (1) = 0, as como o la desigualdad recurrente T (N ) N + 4T ( N/4 ). 66. (E; R) Estimar el crecimiento de la funcin T (N ) de argumento entero que verica la desigualo dad recurrente T (N ) N + 2T ( N/2 ), donde T (1) = 0. Problemas 67. (P; R) Estimar razonadamente el crecimiento de la funcin T que satisface T (1) = 0, as como o la desigualdad recurrente T (N ) T ( N/2 ) + N lg(N ). 68. (P; R) Estimar el orden de la funcin T (N ) tal que T (1) = 0 y T (N ) T ( o N ) + 1.

Anlisis de algoritmos recurrentes a

Ejercicios 69. (E; R) El siguiente algoritmo resuelve el problema de las torres de Hanoi para mover N discos de un poste A a otro B usando un tercero C como almacenamiento intermedio 9

Hanoi(discos N, poste A, poste B, poste C) si N == 1: mover un disco de A a B; else Hanoi(N-1, A, C, B); mover un disco de A a B; Hanoi(N-1, C, B, A); Usando el movimiento de discos como OB, cuntos movimientos se harn para trasladar N a a discos de A a B? Cuntas llamadas recursivas hace el algoritmo para N discos? a Problemas 70. (P; R) El siguiente algoritmo proporciona la posicin del elemento mximo de una tabla T o a entre las posiciones P y U: ind MaxRec(tabla T, ind P, ind U) si P == U: devolver P ; M = (P+U)/2 ; m1 = MaxRec(T, P, M) ; m2 = MaxRec(T, M+1, U) ; si T[m1] > T[m2] : devolver m1 ; else : devolver m2 ; Usando la cdc como operacin bsica, estimar razonadamente el trabajo en el caso peor del o a algoritmo sobre tablas de N elementos. Para ello establecer una desigualdad recurrente para dicho trabajo, resolverla en algn caso particular adecuado y, nalmente, dar la solucin general. u o 71. (P; R) El siguiente pseudocdigo corresponde a una versin recursiva del clculo de la media o o a de una tabla float media(tabla T, pos P, pos U) si P == U : devolver T[P] ; else : M = suelo ((P+U)/2) ; medI = media(T, P, M) ; medD = media(T, M+1, U) ; nI = M-P+1 ; // num elems de subtabla izquierda nD = U-M ; // num elems de subtabla derecha nT = U-P+1 ; // num total de elementos med = ( nI*medI + nD*medD ) / nT ; devolver med ; Suponiendo que se usa la suma como operacin bsica, estimar el nmero de sumas n(N ) que o a u hace el algoritmo sobre una tabla de N elementos efectuando para ello los siguientes pasos: i. escribir una ecuacin recurrente para n(N ) ; o ii. resolver la misma en algn caso particular conveniente; u iii. resolver o acotar la misma en el caso general. 10

72. (P) Suponiendo N = 2K , un nmero A de N cifras puede descomponerse como A = A1 DK + u K1 u A2 , donde A1 , A2 tienen N/2 cifras y DK = 102 . Si as se descomponen dos nmeros A, B de N cifras, la frmula o
2 AB = A1 B1 DK + (A1 B2 + A2 B1 ) DK + A2 B2

sugiere el siguiente algoritmo recursivo para multiplicar A y B: int MMR(int A, int B, int N) si N==1: devolver A*B; else: calcular A1, A2, B1, B2; O = MMR(A1, B1); P = MMR(A1, B2) + MMR(A2, B1); Q = MMR(A2, B2); devolver (O * DK + P) * DK + Q; donde DK denota 102 . Tomando como OB la multiplicacin, cul es la complejidad TM M R (N ) o a de aplicar M M R a dos nmeros de N = 2K cifras? u 73. (P+) En las condiciones del problema anterior, la frmula o
2 AB = A1 B1 DK + ((A1 + A2 )(B1 + B2 ) A1 B1 A2 B2 ) DK + A2 B2
K1

reduce la multiplicacin de dos nmeros de N cifras a esencialmente tres multiplicaciones de o u dos nmeros de N/2 cifras. Dar el pseudocdigo de un algoritmo recursivo M M RmR de u o multiplicacin de nmeros que aproveche dicha frmula y estimar su complejidad TM M RmR (N ) o u o K al aplicarlo a dos nmeros de N = 2 cifras. u 74. (P+; R) Se quiere estimar el nmero de llamadas recursivas del algoritmo inferior con una u versin sin recursin de cola de las torres de Hanoi. Escribir la correspondiente ecuacin o o o recurrente y resolverla. hanoi2(int N, int A, int B, int C) mientras N > 1 : hanoi(N-1, A, C, B) ; mover de A a B ; N-- ; T = A ; A = C ; C = T ; mover de A a B ; 75. (P+; R) El pseudocdigo inferior corresponde a un algoritmo para el clculo del nmero de o a u hojas de un rbol binario: a int numHojas(ab T) si T vacio : devolver 0 ; else si izq(T) vacio y der(T) vacio : devolver 1 ; else : devolver numHojas(izq(T)) + numHojas(der(T)) ; 11

i. Escribir razonadamente la ecuacin general en recurrencias para el nmero de sumas que o u realiza dicho algoritmo en funcin de su nmero de nodos N. o u ii. Resolver dicha ecuacin para rboles binarios completos (si un tal rbol tiene profundidad o a a K K, su nmero de nodos es 2 1). u iii. Cul es el rendimiento del algoritmo en el caso peor para rboles binarios generales? a a Sugerencia: intentar establecer qu situacin podr suponer un trabajo mximo del algoritmo. e o a a 76. (P+; R) Se quiere estimar el nmero de llamadas recursivas del algoritmo inferior de PreOrden u sobre rboles binarios completos. Escribir la correspondiente ecuacin recurrente y resolverla. a o PO(AB T) si T != NULL : visitar(T) ; PO(izq(T)) ; PO(der(T)) ; 77. (P+) En la versin inferior se ha eliminado la segunda recursin de cola del algoritmo de o o PreOrden. Estimar para rboles binarios completos el nuevo nmero de llamadas recursivas a u escribiendo y resolviendo la correspondiente ecuacin recurrente. o PO2(AB T) mientras T != NULL : visitar(T) ; PO2(izq(T)) ; T = der(T) ; 78. (P+) El algoritmo recursivo inferior calcula los nmeros de Fibonacci: u long Fib(int N) si N == 0 o N == 1 : devolver 1 ; else : devolver Fib(N-1) + Fib(N-2) ; Si T (N ) es el nmero de sumas que Fib ejecuta sobre un entero N , qu ecuacin recurrente u e o verica T (N )? Cul ser su solucin? a a o 79. (P+; R) Calcular el orden de G(N ) =
N 0

Fi , donde Fi es el isimo nmero de Fibonacci. e u

HeapSort

Ejercicios 80. (E) Dadas las listas Q B K C F A G P E D H R 12

34 43 12 58 17 92 21 67 56 72 80 1. construir sus correspondientes Max heaps indicando la evolucin de estos en cada uno de o los pasos a dar; 2. usar estos heaps para ordenarlas, indicando la evolucin de los mismos en cada uno de los o pasos a dar. 81. (E) Aplicar el mtodo HeapSort a la ordenacin de la lista 8 6 2 10 9 1 3 5 7 4. e o 82. (E) Dada la lista [14, 4, 8, 10, 19, 17, 18, 15], aplicar a la misma el mtodo HeapSort e utilizando un maxheap. Durante la fase de creacin del heap, indicar sus estados parciales o utilizando su representacin sobre un rbol binario. Durante de ordenacin, representar el o a o estado del heap y de la lista parcialmente ordenada usando como estructura de datos una tabla. 83. (E) Dada la lista [15, 1, 10, 5, 8, 3, 11, 14], dar la evolucin sobre la misma del mtodo o e de ordenacin HeapSort, indicando en la construccin del maxheap asociado y en la extraccin o o o desde el mismo cada uno de sus sucesivos estados. 84. (E) Dar la evolucin del mtodo HeapSort sobre la tabla 9 8 10 2 5 6 7 12 11. o e Problemas 85. (P) Tomando como OB el acceso a un nodo, cul ser la complejidad en el caso peor para la a a construccin de un max heap? Cul ser la complejidad en el caso peor para esta ordenacin o a a o desde un heap? Combinando ambos pasos se consigue un algoritmo de ordenacin por comparacin de claves. o o Cul es su complejidad en el caso peor? a 86. (P+) Estimar razonadamente BHeapSort (N ) y AHeapSort (N ) 87. (P) Los elementos de un heap pueden almacenarse de manera muy sencilla en una tabla haciendo que el elemento que ocupe el lugar isimo del heap cuando ste se recorre por niveles e e ocupe la posicin isima de la tabla. Almacenndolo as qu relacin hay entre el o e a , e o ndice i de un nodo y los de sus hijos? Cul hay entre el a ndice i de un nodo y el de su padre? 88. (P) Implementacin de HeapSort sobre tablas Si de acuerdo con el problema anterior se o contempla una tabla con ndices de 1 a N como un heap, se observa que los unicos elementos que pueden no cumplir la condicin de MaxHeap son los situados en los o ndices N/2 , N/2 1, N/2 2, . . . , 3, 2, 1. Comprobar que reubicando dichos elementos en ese orden se puede conseguir un MaxHeap. 89. (P) Una vez creado un MaxHeap sobre una tabla, comprobar que se puede obtener una ordenacin de la misma intercambiando repetidamente los elementos en posiciones N, N 1, . . . o con el elemento ra y reubicando el elemento as subido. z 90. (P; R) En los cuadros inferiores se representan tres fases consecutivas de la evolucin de o una lista de 50 nmeros entre 1 y 50 a la que se aplican ciertos mtodos de ordenacin. Las u e o coordenadas (i, j) de un punto del grco indican que el nmero de la posicin isima de la a u o e lista es precisamente j (por ejemplo, un nmero i est en su posicin correcta si j = i, esto u a o es, si el par (i, j) est en la diagonal). Cules de los mtodos de ordenacin estudiados en el a a e o curso podr generar estos grcos? a a 13

10

Arboles de decisin o

Ejercicios 91. (E) Escribir el rbol de decisin de los algoritmos de Burbuja, InsertSort y Seleccin N = 3. a o o 92. (E; R) Escribir el rbol de decisin de los algoritmos de QuickSort y MergeSort para N = 3. a o 93. (E) Un cierto algoritmo de ordenacin tiene el siguiente pseudocdigo: o o RaroSort(tabla T, ind P, ind U) si T[P] < T[P+1]: InsertSort(T, P, U) ; else: MergeSort(T, P, U) ; Dar su rbol de decisin para tablas con 3 elementos. a o 14

94. (E) Dar razonadamente el rbol de decisin para N=3 del algoritmo inferior de ordenacin. a o o Usar la notacin i:j con i < j para indicar la comparacin de los elementos i y j de la tabla o o inicial T. RaroSort(tabla T, dim N) si T[1] < T[2]: QuickSort(T, N) ; // usar primer elemento como pivote else : InsertSort(T, N) ; 95. (E+) Construir razonadamante el rbol de decisin para N = 3 para la siguiente variante del a o algoritmo SelectSort. SelectSortMax(tabla T, dim N) para i de N a 2: iMax=Max(T, 1, i); intercambiar T[i] con T[iMax]; indice Max(tabla T, indice P, indice U) Max=T[P]; iMax=P; para i de P+1 a U: si T[i] > Max: Max = T[i]; iMax=i; devolver iMax; 96. (E+; R) El algoritmo de ordenacin por insercin puede ejecutarse sobre el siguiente pseuo o docdigo: o InsertSortMax(tabla T, dim N) para i de N-1 a 1: A = T[i]; j = i+1; mientras j <= N y T[j] < A: T[j-1] = T[j]; j++; T[j-1] = A; Dar razonadamente su rbol de decisin para N = 3, sealando tras cada cdc el estado de la a o n evolucin de la tabla. o 97. (E+; R) Construir razonadamente el rbol de decisin para tablas de 3 elementos de la a o siguiente versin del algoritmo de ordenacin de la burbuja: o o PlomoSort(tabla T, dim N) camb = 1; ini = 1; mientras fin < N y camb == 1: 15

camb = 0; para i de N a ini+1: si T[i] < T[i-1]: intercambiar T[i] y T[i-1]; camb = 1; ini++; Dar tambin el rbol de decisin si en el cdigo se eliminan las sentencias con el indicador de e a o o intercambios camb. 98. (E) a. Dada una tabla T , el algoritmo InsertSort efecta en primer lugar la comparacin entre u o T [1] y T [2]. Suponiendo que T [1] > T [2], contra qu elemento T [j] se compara entonces T [1]? e b. Suponiendo que T [1] gana dicha comparacin, dar razonadamente el subrbol de decisin o a o que sigue a la misma para tablas de 4 elementos (esto es, el subrbol que sigue por la derecha a a la ra es 1 : 2, y a su hijo derecho de la forma 1 : j). Tras cada cdc, indicar el estado de la z tabla y marcar el elemento a insertar. Problemas 99. (E+; R) Sobre una tabla de cuatro elementos el algoritmo MergeSort realiza en primer lugar la comparacin 1:2 y si el primer elemento resulta mayor, se realiza la comparacin 3:4. o o Dar razonadamente el resto del rbol de decisin del MergeSort para tablas de 4 elementos a o suponiedo que el primer elemento es mayor que el segundo y que el tercero es menor que el cuarto. Indicar tras cada iteracin el estado de las tablas implicadas. o 100. (E+; R) El siguiente pseudocdigo da una versin descendente del algoritmo de la Burbuja o o en la que la lista comienza a ordenarse desde su inicio. PS(tabla T, dim N) k = 1; mientras k < N : para i de N a k+1: si T[i] < T[i-1]: intercambiar T[i] y T[i-1]; k++; En una tabla de 4 elementos PS realiza 3 : 4 como primera cdc. Si T [3] > T [4], cul es a la siguiente cdc? Suponiendo que en la siguiente cdc es menor el elemento de mayor ndice, 4 construir razonadamente el subrbol de decisin de TP S resultante. a o 101. (E+; R) El algoritmo inferior es una variante descendente de InsertSort. ISD(tabla T, dim N) para i de N-1 a 1 : j=i ; mientras j < N y T[j] > T[j+1] : swap(T[j], T[j+1]) ; j++ ; volver; 16

En una tabla de 4 elementos ISD realiza 3 : 4 como primera cdc. Si T [3] > T [4], cul es a la siguiente cdc? Suponiendo que en la siguiente cdc es menor el elemento de mayor ndice, 4 construir razonadamente el subrbol de decisin de TISD resultante. a o 102. (E+; R) Dar razonadamente el rbol de decisin del algoritmo HeapSort para tablas de 3 a o elementos. 103. (P; R) Probar que si T es un 2-rbol con N nodos entonces T tiene N + 1 hojas (sugerencia: a induccin). o 104. (P) Establecer de manera precisa la relacin entre la profundidad de un rbol binario y su o a nmero de hojas. u 105. (P) Si un rbol binario completo contiene N elementos. cul es su profundidad? cul es su a a a lce?. 106. (P+; R) La longitud de caminos internos (lci) de un rbol T se dene como a lci(T ) =
{N :nodo interno de T }

prof (N ).

Probar que si T es un 2-rbol con N nodos internos, entonces lce(T ) = lci(T )+2N (sugerencia: a induccin). o

11

Algoritmos bsicos de b squeda a u

Ejercicios 107. (E) Dada la tabla T 1 15 2 14 3 13 4 12 5 11 escribir su rbol binario de bsqueda B. a u Dar los rboles de bsqueda B que resultan de extraer del anterior los elementos 15, 13, 3 a u en ese orden. 108. (E+) Calcular expl citamente ABBin (N ) para N = 3 y N = 7 (suponer equiprobabilidad). Problemas 109. (P) Estimar el coste medio de la primitiva Borrar en un diccionario que usa como edd una tabla ordenada. 110. (P; R) Probar que si un nodo de un ABdB tiene 2 hijos, su sucesor slo tiene a lo sumo el hijo o derecho. 111. (P) Si N es un nodo de un ABdB, su predecesor es el nodo M tal que info(M) es la clave inmediatamente anterior a info(N). Probar que si un nodo de un ABdB tiene 2 hijos, su predecesor slo tiene a lo sumo el hijo izquierdo. o 112. (P+; R) Dar el pseudocdigo de una funcin Sucesor que reciba un puntero a un nodo de un o o rbol binario y devuelve un puntero a su sucesor. a 17

113. (P+) Dar el pseudocdigo de una funcin Predecesor que reciba un puntero a un nodo de un o o rbol binario y devuelve un puntero a su predecesor. a 114. (P; R) La construccin de un ABdB puede verse como una forma particular de ordenacin de o o listas. Cul ser su rbol de decisin para N = 3? a a a o 115. (P; R) Suponiedo que la construccin de un ABdB se aplica a tablas de N = 4 elementos, la o primera cdc que se efecta es 1:2 y la segunda 1:3. Dar razonadamente el subrbol del rbol u a a 4 de decisin TCrearABdB suponiendo que T[1] > T[2] y que T[1] < T[3] representando tras o cada cdc el estado de los ABdB parciales resultantes.

12

Arboles AVL

Ejercicios 116. (E) Construir el AVL asociado a la lista 1 2 3 4 5 6 7 15 14 13 12 11 10 9 8 117. (E) Construir el AVL asociado a la lista inversa de la anterior (de 15 a 8 y de 1 a 7), indicando en cada paso con detalle las rotaciones necesarias. 118. (E) Construir el rbol AVL asociado a la lista 1 15 2 14 3 13 4 12 5 11 6 10 7 9 8. a 119. (E; R) Construir razonadamente el rbol AVL para la lista 9 8 10 2 5 6 7 12 11. a 120. (E; R) Construir todos los rboles de Fibonacci de profundidades 2, 3 y 4 (no hay tantos!). a Problemas 121. (P) Dar el esquema general de una rotacin a derechas y de una rotacin doble izquierdao o derecha. 122. (P+) Probar que en el proceso de creacin de un AVL no pueden darse desequilibrios de la o forma (2, 0) o (0, 2). 123. (P+) Intentar probar que en la construccin de un AVL basta arreglar el desequilibrio ms o a profundo para que los superiores se arreglen automticamente. a 124. (P+) Un rbol de Fibonacci de profundidad P es un rbol AVL con dicha profundidad y a a un nmero m u nimo de nodos. Demostrar que si T es un rbol de Fibonacci de profundidad P , a entonces Ti es un rbol de Fibonacci de profundidad P 1 y Td es un rbol de Fibonacci de a a profundidad P 2, o al revs, Ti es un rbol de Fibonacci de profundidad P 2 y Td es un e a rbol de Fibonacci de profundidad P 1. a 125. (P+; R) Probar por induccin que el nsimo nmero de Fibonacci FN cumple o e u 1 FN = (N +1 N +1 ) 5 con = (1 + 5)/2 y = (1 5)/2 y deducir de aqu el orden de la funcin f (N ) = FN . o

126. (P+; R) Cuntos rboles de Fibonacci de profundidad P hay? a a

18

13

Hashing

Ejercicios 127. (E) Construir una funcin hash adecuada para una tabla hash con encadenamiento y 9 puno teros. Cmo se insertarn en la misma los valores 5, 28, 19, 15, 20, 33, 12, 17 y 10? o a 128. (E; R) Se quiere construir una tabla hash con encadenamiento para almacenar 1000 datos. Si se considera aceptable un promedio de 4 colisiones tanto en bsquedas con xito como sin u e xito, cul puede ser un tamao de tabla adecuado? e a n 129. (E; R) Se quiere construir una tabla hash con direccionamiento abierto y sondeo lineal para almacenar 1000 datos. Si se considera aceptable un promedio de 5 colisiones en bsquedas sin u xito, cul puede ser un tamao de tabla adecuado? e a n Para el tamao resultante de la tabla anterior, cul ser el nmero medio de colisiones en n a a u bsquedas con xito? u e 130. (E+; R) Se puede demostrar que usando sondeos cuadrticos en una tabla de dimensin m a o con N datos, el nmero medio de sondeos necesarios en una bsqueda fallida es u u 1 1 + log , 1 1 donde es el factor de carga. Cul ser nmero medio Ae (N, m) de sondeos necesarios en a a u SC una bsqueda con xito? u e Af (N, m) SC 131. (E+; R) De un cierto mtodo hash por encadenamiento HX se sabe que Af (N, m) = 2 . e HX Hallar de manera sucientemente razonada el valor de Ae (N, m). HX 132. (E+) De un cierto mtodo hash por direccionmiento abierto SX se sabe que Af (N, m) = e SX 2 1 + 1/(1 ) . Hallar razonadamente el valor de Ae (N, m). SX Problemas 133. (P; R) En general y sobre tablas hash, qu ser ms alto, el coste medio de bsquedas fallidas e a a u o el de bsquedas con xito? Razonar la respuesta. u e 134. (P+; R) Se quieren construir tablas hash dinmicas con direccionamiento abierto y sondeo a lineal segn el siguiente esquema: cuando en una tabla de tamao N el factor de carga llega a u n 0.5, se construye una nueva tabla de tamao 2N donde se reinsertan los elementos de la tabla n previa. En promedio, cuntos sondeos se precisan para el rehashing en la nueva tabla de los elementos a ya insertados en la tabla inicial? Cul ser el nmero medio de sondeos a realizar hasta que a a u la nueva tabla alcance un factor de carga de 0.5? A la vista de lo anterior, discutir el coste por insercin del rehashing. o 135. (P; R) Si en una tabla hash con direccionamiento abierto se utilizan sondeos cuadrticos para a resolver colisiones puede haber claves imposibles de insertar aunque la tabla posea espacios libres. Comprobar este efecto cuando la tabla tiene tamao 16 y se usa como funcin hash n o h(K) = K%16.

19

136. (P+; R) Probar que si en una tabla hash de tamao M , con M primo, con direccionamiento n abierto y factor de carga < 1/2, se utilizan sondeos cuadrticos para resolver colisiones, a siempre es posible insertar una nueva clave K. Sugerencia: suponer ya insertados P elementos, con P < M/2 y comprobar que dada una clave K, cualquiera que sea la funcin de hash h, todos los valores del conjunto o h(K) + i2 : 0 i M/2 son distintos; observar que en dicho conjunto hay ms de P elementos. a 137. (P) Dar el pseudocdigo de unas rutinas que busquen, inserten y borren elementos de una tabla o hash en la que se utilice direccionamiento abierto y resolucin de colisiones mediante sondeos o lineales. 138. (P) En hashing con encadenamiento se supone construida una rutina BusqH(clave K, tablaH T) que recibe una clave K y devuelve un puntero a un nodo de la lista apuntada por T[h(K)] que contiene dicha clave o NULL si ningn nodo la contiene. u Construir mediante ella las rutinas BorrarH(clave K, tablaH T) y InsH(clave K, tablaH T) que borren o inserten la clave K del o en el nodo apropiado de la tabla de hash T. Construir mediante sta ultima otra rutina CrearH(tabla R, tablaH T) que a partir de una tabla R e proporcione un puntero a una tabla de hash que contenga los elementos de R.

20

You might also like