Exámenes Resueltos EDA
Transcripción
Exámenes Resueltos EDA
EXÁMENES RESUELTOS ESTRUCTURA DE DATOS Y ALGORITMOS INFORMÁTICA SISTEMAS Y GESTIÓN DELEGACIÓN DE ALUMNOS CENTRO ASOCIADO DE BALEARES EXÁMENES ESTRUCTURA DE DATOS Y ALGORÍTMOS ESTRUCTURAS DE DATOS Y ALGORITMOS Código de I.S: 402029 Código de I.G: 412020 UNIVERSIDAD NACIONAL DE EDUCACION A DISTANCIA Dpto. de Informática y Automática Facultad de Ciencias Septiembre 1995 Duración: 2 horas Esta hoja de enunciados debe ser entregada con los siguientes datos: Nombre: .......................................................................................................................... D.N.I: .............................................................................................................................. Centro en el que está matriculado...................................................................................... Centro en el que realiza el examen:.................................................................................... NOTA: Para la realización de este examen NO se permite el uso de Calculadora ni de ningún tipo de material. ²²²²²² 1.- Explicar detalladamente el método de selección directa utilizando para ello el siguiente arreglo inicial. 46 57 14 44 96 20 8 70 Completar el código del programa 1 (en Modula-2) para que realice el algoritmo de selección directa. Realizar detalladamente el análisis del algoritmo, calculando el número de comparaciones y de movimientos. PROCEDURE seleccion_directa; VAR i,j,k:index; x: item; BEGIN FOR i:=1 TO n-1 DO k:=i; x:=a[i]; FOR j:=i+1 TO n DO IF .................. THEN ...........; ............. END; END; ..................; .................. END; END; Programa 1 2.- Explicar el fundamento de la clasificación polifásica. Utilizar como ejemplo la siguiente distribución de 21 corridas con tres variables de secuencia: f1 f2 f3 13 8 Explicar cualitativa y analíticamente cuáles son las distribuciones iniciales de corridas para las que la clasificación polifásica funcione bien con tres secuencias (utilizar el ejemplo propuesto). 3.- Establecer las definiciones de las estructuras adecuadas para implementar una secuencia pila (FILO) mediante asignación dinámica. Implemetar en Modula-2 los procedimientos meter() y sacar() que se definen sobre dicha estructura. 4.- Explicar detalladamente en qué consisten las tablas de transformación de llaves (hashing), cuáles son sus características y las ideas fundamentales necesarias para elegir una función de transformación. Explicar qué es una colisión y cómo se realiza el manejo de colisiones en general. Detallar la exploración lineal y la cuadrática. Fórmulas: z ln x dx = x (ln x − 1) 1 1 1 + +... 2 3 n 1 Hn = ln n + γ + −... 2n Hn = 1 + ESTRUCTURAS DE DATOS Y ALGORITMOS Código de I.S: 402029 Código de I.G: 412020 UNIVERSIDAD NACIONAL DE EDUCACION A DISTANCIA Primera Semana Dpto. de Informática y Automática Facultad de Ciencias Enero 1996 Duración: 2 horas Esta hoja de enunciados debe ser entregada con los siguientes datos: Nombre: .......................................................................................................................... D.N.I: .............................................................................................................................. Centro en el que está matriculado...................................................................................... Centro en el que realiza el examen:.................................................................................... NOTA: Para la realización de este examen NO se permite el uso de Calculadora ni de ningún tipo de material. ?????? 1.- Explicar detalladamente el método de Knuth-Morris-Pratt (KMP) para encontrar una palabra en un texto base mostrando claramente cómo se realiza la comparación de caracteres. Indicar las ventajas frente al método de búsqueda directa de cadena y cómo se calcula su tabla de distancias. Implementar en Modula-2 el segmento de código para calcular dicha tabla. 2.- Explicar en qué consiste el método de clasificación por mezcla directa. Ilustrarlo mediante la siguiente secuencia 46 57 14 44 96 20 8 70 Explicar cómo se realiza la clasificación por mezcla en un arreglo y discutir si su aplicación es o no más adecuada que el método de clasificación rápida. 3.- Realizar los siguientes procedimientos en Modula-2, definiendo las estructuras adecuadas para los tipos de datos que se indican. a) Procedimiento iterativo para imprimir una lista enlazada con implementación dinámica. b) Procedimiento recursivo para imprimir una lista enlazada con implementación dinámica. c) Procedimiento para imprimir una pila con implementación estática. d) Procedimiento para imprimir una cola con implementación dinámica. 4.- Explicar la organización de árboles de búsqueda óptimos ilustrándolo mediante un ejemplo. Definir claramente la longitud de trayectoria pesada y la longitud acumulada de trayectoria pesada. Indicar las propiedades fundamentales de los árboles de búsqueda óptimos. z Fórmulas: ln x dx ? x (ln x ? 1) 1 1 1 ? ? ... 2 3 n 1 Hn ? ln n ? ? ? ? ... 2n Hn ? 1 ? ESTRUCTURAS DE DATOS Y ALGORITMOS Código de I.S: 402029 Código de I.G: 412020 UNIVERSIDAD NACIONAL DE EDUCACION A DISTANCIA Segunda Semana Febrero 1996 Dpto. de Informática y Automática Facultad de Ciencias Duración: 2 horas Esta hoja de enunciados debe ser entregada con los siguientes datos: Nombre: .......................................................................................................................... D.N.I: .............................................................................................................................. Centro en el que está matriculado...................................................................................... Centro en el que realiza el examen:.................................................................................... NOTA: Para la realización de este examen NO se permite el uso de Calculadora ni de ningún tipo de material. ?????? 1.- Explicar detalladamente en qué consiste la estructura de registros con variantes. Aplicarlo a la estructuración de los datos para calcular distancias con coordenadas cartesianas y polares, indicando las diferencias de uso respecto al caso de utilizar dos registros sin variantes. Realizar las declaraciones de tipos necesarias en Modula-2. 2.- Explicar detalladamente el método de clasificación por partición (clasificación rápida), indicando claramente las ideas en que se basa el algoritmo. Utilizar el siguiente arreglo inicial para mostrar su funcionamiento. 58 69 26 66 108 32 20 82 Completar el código del programa 1 (en Modula-2) para que realice el algoritmo de clasificación rápida recursiva. PROCEDURE rapida; PROCEDURE sort(L,R : index); VAR i,j : index; w,x : item; BEGIN i:=.........; j:=.........; x:=........................... REPEAT WHILE ........ DO i:=i+1 END; WHILE ........ DO j:=j-1 END; IF i <= j THEN ........; ........; .........; i:=i+1; j:=j-1; END UNTIL i>j; IF L < j THEN ...........END; IF I < R THEN ...........END; END sort; BEGIN sort(..........); END rapida; Programa 1 Realizar detalladamente el análisis del comportamiento del proceso de partición. Explicar las limitaciones de la clasificación rápida. 3.- Se tiene una lista enlazada que almacena números enteros. Realizar un procedimiento en Modula-2 que suprima de la lista todos los elementos mayores que uno dado como límite. Por ejemplo, si la lista inicial es lista 56 36 95 13 25 69 y el número dado como límite es 43, la lista resultante es lista 36 13 25 4.- Definir un árbol perfectamente balanceado. Programar un procedimiento en Modula-2 que construya un árbol perfectamente balanceado con n nodos y llave números enteros. Explicar detalladamente cómo se construye el árbol siguiendo las sentencias del algoritmo. Ilustrarlo construyendo el árbol para la siguiente secuencia 8 9 11 15 19 20 21 1 Fórmulas: z ln x dx ? x (ln x ? 1) ; Hn ? 1 ? 1 1 1 1 ? ? ... ; Hn ? ln n ? ? ? ? ... 2 3 n 2n 7 ESTRUCTURAS DE DATOS Y ALGORITMOS Código de I.S: 402029 Código de I.G: 412020 UNIVERSIDAD NACIONAL DE EDUCACION A DISTANCIA Dpto. de Informática y Automática Facultad de Ciencias Septiembre 1996 Duración: 2 horas Esta hoja de enunciados debe ser entregada con los siguientes datos: Nombre: .......................................................................................................................... D.N.I: .............................................................................................................................. Centro en el que está matriculado...................................................................................... Centro en el que realiza el examen:.................................................................................... NOTA: Para la realización de este examen NO se permite el uso de Calculadora ni de ningún tipo de material. ?????? 1.- Explicar detalladamente en qué consiste la estructura de registros con variantes. Aplicarlo a la estructuración de los datos para calcular distancias con coordenadas cartesianas y polares, indicando las diferencias de uso respecto al caso de utilizar dos registros sin variantes. Realizar las declaraciones de tipos necesarias en Modula-2. 2.- a) Explicar detalladamente el método de inserción binaria utilizando para ello el siguiente arreglo inicial. 46 57 14 44 96 20 8 70 b) Completar el código del programa 1 (en Modula-2) para que realice el algoritmo de inserción binaria. c) Realizar el análisis del programa 1, calculando el número de comparaciones y de movimientos. PROCEDURE insercion_binaria; VAR i,j,m,L,R : integer; x : integer; BEGIN FOR i:=2 TO n DO x:=a[i]; L:=........; R:=..........; WHILE ........ DO m:=.........................; IF .................. THEN L:=m+1 ELSE R:=m END; END; FOR j:=i TO R+1 BY -1 DO ................ END; a[R]:=x; END; END; Programa 1 3.- Se tiene una lista enlazada que almacena números enteros. Realizar un procedimiento en Modula-2 que suprima de la lista todos los elementos mayores que uno dado como límite. Por ejemplo, si la lista inicial es lista 56 36 95 13 25 69 y el número dado como límite es 43, la lista resultante es lista 36 13 25 4.- Explicar detalladamente en qué consisten las tablas de transformación de llaves (hashing), cuáles son sus características y las ideas fundamentales necesarias para elegir una función de transformación. Explicar qué es una colisión y cómo se realiza el manejo de colisiones en general. Detallar la exploración lineal y la cuadrática. z Fórmulas: ln x dx ? x (ln x ? 1) 1 1 1 ? ? ... 2 3 n 1 Hn ? ln n ? ? ? ? ... 2n Hn ? 1 ? ESTRUCTURAS DE DATOS Y ALGORITMOS Código de I.S: 402029 Código de I.G: 412020 UNIVERSIDAD NACIONAL DE EDUCACION A DISTANCIA Primera Semana Dpto. de Informática y Automática Facultad de Ciencias Enero 1997 Duración: 2 horas Esta hoja de enunciados debe ser entregada con los siguientes datos: Nombre: .......................................................................................................................... D.N.I: .............................................................................................................................. Centro en el que está matriculado...................................................................................... Centro en el que realiza el examen:.................................................................................... NOTA: Para la realización de este examen NO se permite el uso de Calculadora ni de ningún tipo de material. ?????? 1.- Para encontrar la primera presencia de una palabra en un texto se dispone de tres algoritmos: el método de búsqueda directa de cadena, el método de Knuth-Morris-Pratt (KMP) y el algoritmo Boyer-Moore (BM). a) Indicar cuál de ellos utilizaría para encontrar una palabra en un texto con 10000 caracteres. ¿Utilizaría el mismo si el texto fuese de 50 caracteres?. Explique su elección en cada caso razonando comparativamente, es decir, mostrando sus ventajas respecto a los otros métodos. b) Explicar claramente cómo se realiza la comparación de caracteres en el algoritmo de BoyerMoore y cómo se calcula su tabla de distancias. Implementar en Modula-2 el segmento de código para calcular dicha tabla. 2.- El programa 1 muestra el procedimiento en Modula-2 correspondiente a un método directo de clasificación de arreglos. a) Deducir cuál de ellos es (inserción, selección o intercambio)., explicando detalladamente su mecanismo. Utilizar para ello el siguiente arreglo inicial. 46 57 14 44 96 20 8 70 b) Realizar el análisis del programa 1, calculando el número de comparaciones y de movimientos para los casos mejor, peor y promedio. PROCEDURE incognita; VAR i,j: index; BEGIN FOR i:=2 TO n DO a[0]:=a[i]; j:=i; WHILE a[0]<a[j-1] DO a[j]:=a[j-1]; a[j]:=a[0]; END j:=j-1; END; END incognita Programa 1 3.- Explicar detalladamente la Estructura de Datos Abstracta denominada Cola, especificando su definición, manejo y aplicación. Realizar en Modula-2 las definiciones de tipos y todas las funciones y/o procedimientos para su implementación estática. Mostrar un ejemplo en el que sea más adecuada la implementación estática que la dinámica. 4.- Definir un árbol perfectamente balanceado. Programar un procedimiento en Modula-2 que construya un árbol perfectamente balanceado con n nodos y llave números enteros. Explicar detalladamente cómo se construye el árbol siguiendo las sentencias del algoritmo. Ilustrarlo construyendo el árbol para la siguiente secuencia 8 z Fórmulas: ln x dx ? x (ln x ? 1) 1 1 1 ? ? ... 2 3 n 1 Hn ? ln n ? ? ? ? ... 2n Hn ? 1 ? 9 11 15 19 20 21 1 7 ESTRUCTURAS DE DATOS Y ALGORITMOS Código de I.S: 402029 Código de I.G: 412020 UNIVERSIDAD NACIONAL DE EDUCACION A DISTANCIA Segunda Semana Febrero 1997 Dpto. de Informática y Automática Facultad de Ciencias Duración: 2 horas Esta hoja de enunciados debe ser entregada con los siguientes datos: Nombre: .......................................................................................................................... D.N.I: .............................................................................................................................. Centro en el que está matriculado...................................................................................... Centro en el que realiza el examen:.................................................................................... NOTA: Para la realización de este examen NO se permite el uso de Calculadora ni de ningún tipo de material. ?????? 1.- a) Explicar detalladamente el método de inserción binaria utilizando para ello el siguiente arreglo inicial. 46 57 14 44 96 20 8 70 b) Completar el código del programa 1 (en Modula-2) para que realice el algoritmo de inserción binaria. c) Realizar el análisis del programa 1, calculando el número de comparaciones y de movimientos. PROCEDURE insercion_binaria; VAR i,j,m,L,R : integer; x : integer; BEGIN FOR i:=2 TO n DO x:=a[i]; L:=........; R:=..........; WHILE ........ DO m:=.........................; IF .................. THEN L:=m+1 ELSE R:=m END; END; FOR j:=i TO R+1 BY -1 DO ................ END; a[R]:=x; END; END; Programa 1 2.- Explicar el fundamento de la clasificación polifásica. Utilizar como ejemplo la siguiente distribución de 21 corridas con tres variables de secuencia: f1 f2 f3 13 8 Explicar cualitativa y analíticamente cuáles son las distribuciones iniciales de corridas para las que la clasificación polifásica funcione bien con tres secuencias (utilizar el ejemplo propuesto). 3.- En la figura 1 se presentan dos situaciones iniciales de árboles AVL. Explicar detalladamente el efecto de la inserción del dato que se indica, especificando por qué hay necesidad o no de rebalanceo y detallar el proceso de rebalanceo hasta alcanzar la situación final adecuada. 5 5 4 2 7 2 1 (a) Insertar dato:=1 7 4 (b) Insertar dato:=3 En el árbol (a) se inserta un dato de valor 1. En el árbol (b) se inserta un dato de valor 3. 4.- Explicar la organización de árboles de búsqueda óptimos ilustrándolo mediante un ejemplo. Definir claramente la longitud de trayectoria pesada y la longitud acumulada de trayectoria pesada. Indicar las propiedades fundamentales de los árboles de búsqueda óptimos. Fórmulas: z ln x dx ? x (ln x ? 1) ; Hn ? 1 ? 1 1 1 1 ? ? ... ; Hn ? ln n ? ? ? ? ... 2 3 n 2n ESTRUCTURAS DE DATOS Y ALGORITMOS Código de I.S: 402029 Código de I.G: 412020 UNIVERSIDAD NACIONAL DE EDUCACION A DISTANCIA Dpto. de Informática y Automática Facultad de Ciencias Septiembre 1997 Duración: 2 horas Esta hoja de enunciados debe ser entregada con los siguientes datos: Nombre: .......................................................................................................................... D.N.I: .............................................................................................................................. Centro en el que está matriculado...................................................................................... Centro en el que realiza el examen:.................................................................................... NOTA: Para la realización de este examen NO se permite el uso de Calculadora ni de ningún tipo de material. ?????? 1.- Explicar detalladamente el método de selección directa utilizando para ello el siguiente arreglo inicial. 46 57 14 44 96 20 8 70 Completar el código del programa 1 (en Modula-2) para que realice el algoritmo de selección directa. Realizar detalladamente el análisis del algoritmo, calculando el número de comparaciones y de movimientos. PROCEDURE seleccion_directa; VAR i,j,k:index; x: item; BEGIN FOR i:=1 TO n-1 DO k:=i; x:=a[i]; FOR j:=i+1 TO n DO IF .................. THEN ...........; ............. END; END; ..................; .................. END; END; Programa 1 2.- Explicar el método de clasificación por montón describiendo la definición de montón de Williams, la manera de construir un montón in situ de Floyd y el algoritmo de clasificación. Usar para ello el siguiente arreglo inicial 44 55 12 42 94 18 6 67 Completar el programa 2 (en Modula-2) para que realice el desplazamiento de Floyd y desarrollar el segmento de programa que realiza la construcción de Floyd de un montón. PROCEDURE sift(L,R: index); VAR i,j:index; x: item; BEGIN i:=L; j:=2*L; x:=a[L]; IF (j<R) & ....................THEN j:=j+1 END; WHILE (j<=R) & .............. DO .............; i:=j; .............. IF (j<R) &.................. THEN j:=j+1 END END ......... END sift Programa 2 3.- En la figura 1 se presentan dos situaciones iniciales de árboles AVL. Explicar detalladamente el efecto de la inserción del dato que se indica, especificando por qué hay necesidad o no de rebalanceo y detallar el proceso de rebalanceo hasta alcanzar la situación final adecuada. 5 5 4 2 7 2 1 7 4 (b) Insertar dato:=3 (a) Insertar dato:=1 En el árbol (a) se inserta un dato de valor 1. En el árbol (b) se inserta un dato de valor 4.- Explicar en qué consisten las tranformaciones de llaves (hashing) y realizar el análisis de la tranformación de llaves indicando el número esperado de transformaciones requeridas. Fórmulas: z ln x dx ? x (ln x ? 1) Hn ? 1 ? 1 1 1 ? ? ... 2 3 n Hn ? ln n ? ? ? 1 ? ... 2n ESTRUCTURAS DE DATOS Y ALGORITMOS Código de I.S: 402029 Código de I.G: 412020 UNIVERSIDAD NACIONAL DE EDUCACION A DISTANCIA Primera Semana Dpto. de Informática y Automática Facultad de Ciencias Enero 1998 Duración: 2 horas Esta hoja de enunciados debe ser entregada con los siguientes datos: Nombre: .......................................................................................................................... D.N.I: .............................................................................................................................. Centro en el que está matriculado...................................................................................... Centro en el que realiza el examen:.................................................................................... NOTA: Para la realización de este examen NO se permite el uso de Calculadora ni de ningún tipo de material. Indique claramente la Ingeniería (Sistemas o Gestión) en la que está matriculado. ?????? 1.- Realizar detalladamente el análisis del algoritmo de selección directa (Programa 1). PROCEDURE seleccion_directa; VAR i,j,k: index; x: item; BEGIN FOR i:=1 TO n-1 DO k:=i; x:=a[i]; FOR j:=i+1 TO n DO IF a[j] < x THEN k:=j; x:=a[k] END; END; a[k]:=a[i]; a[i]:= x END; END seleccion_directa Programa 1 2.- Explicar el fundamento de la clasificación polifásica. Utilizar como ejemplo la siguiente distribución de 21 corridas con tres variables de secuencia: f1 f2 f3 13 8 Explicar cualitativa y analíticamente cuáles son las distribuciones iniciales de corridas para las que la clasificación polifásica funcione bien con tres secuencias (utilizar el ejemplo propuesto). 3.- En la figura 1 se presentan dos árboles. Teniendo en cuenta que un árbol B de orden n tiene las siguientes características: 1.- Cada página contiene a lo sumo 2n elementos. 2.- Cada página, excepto la de la raíz, contiene al menos n elementos. 3.- Cada página es una página de hoja (no tiene descendientes o tiene m+1 descendientes siendo m el número de llaves en esta página) 4.- Todas las páginas de hoja aparecen en el mismo nivel. Determinar, indicando explícitamente las razones, si son o no árboles B de orden 2. Si alguno de ellos es un árbol B de orden 2, explicar detalladamente el proceso de inserción del valor 22 en él, indicando claramente la razón por la que es necesario cada paso del proceso. Si alguno de ellos no es un árbol B de orden 2, proponga un árbol que lo sea con esos datos. 20 7 10 15 18 20 26 30 35 40 7 10 15 21 Figura 1.a. 30 35 40 Figura 1.b 4.- Explicar la organización de árboles de búsqueda óptimos ilustrándolo mediante un ejemplo. Definir claramente la longitud de trayectoria pesada y la longitud acumulada de trayectoria pesada. Indicar las propiedades fundamentales de los árboles de búsqueda óptimos Fórmulas: z ln x dx ? x (ln x ? 1) Hn ? 1 ? 1 1 1 ? ? ... 2 3 n Hn ? ln n ? ? ? 1 ? ... 2n ESTRUCTURAS DE DATOS Y ALGORITMOS Código de I.S: 402029 Código de I.G: 412020 UNIVERSIDAD NACIONAL DE EDUCACION A DISTANCIA Segunda Semana Dpto. de Informática y Automática Facultad de Ciencias Febrero 1998 Duración: 2 horas Esta hoja de enunciados debe ser entregada con los siguientes datos: Nombre: .......................................................................................................................... D.N.I: .............................................................................................................................. Centro en el que está matriculado...................................................................................... Centro en el que realiza el examen:.................................................................................... NOTA: Para la realización de este examen NO se permite el uso de Calculadora ni de ningún tipo de material. Indique claramente la Ingeniería (Sistemas o Gestión) en la que está matriculado. ?????? 1.- Realizar detalladamente el análisis del siguiente algoritmo de clasificación de arreglos. PROCEDURE incognita; VAR i,j: index; BEGIN FOR i:=2 TO n DO a[0]:=a[i]; j:=i; WHILE a[0]<a[j-1] DO a[j]:=a[j-1]; a[j]:=a[0]; END j:=j-1; END; END incognita Explicar a cuál de lo algoritmos conocidos corresponde. 2.- Explicar en qué consiste el método de clasificación por mezcla natural, explicando para ello los conceptos necesarios en este tipo de clasificación. Ilustrarlo mediante la siguiente secuencia 17 31 05 59 13 41 43 67 11 23 29 47 03 07 71 02 19 57 37 61 Describir qué consideraciones son necesarias para que la mezcla natural esté bien programada dadas las dos secuencias ordenadas ("corridas") siguientes a = 03 07 13 19 29 37 43 57 61 71 b = 02 05 11 17 23 31 41 47 59 67 3.- En la figura 1 se presenta un árbol B de orden 2. Teniendo en cuenta que un árbol B de orden n tiene las siguientes características: 1.- Cada página contiene a lo sumo 2n elementos. 2.- Cada página, excepto la de la raíz, contiene al menos n elementos. 3.- Cada página es una página de hoja (no tiene descendientes o tiene m+1 descendientes siendo m el número de llaves en esta página) 4.- Todas las páginas de hoja aparecen en el mismo nivel. explicar detalladamente el proceso de inserción sucesiva de los siguientes valores 38, 24, 45, 25 indicando claramente la razón por la que es necesario cada paso del proceso. 10 20 30 40 5 7 8 13 15 18 22 26 27 32 35 42 46 Figura 1 4.- Explicar detalladamente en qué consisten las tablas de transformación de llaves (hashing), cuáles son sus características y las ideas fundamentales necesarias para elegir una función de transformación. Explicar qué es una colisión y cómo se realiza el manejo de colisiones en general. Detallar la exploración lineal y la cuadrática. Fórmulas: z ln x dx ? x (ln x ? 1) Hn ? 1 ? 1 1 1 ? ? ... 2 3 n Hn ? ln n ? ? ? 1 ? ... 2n ESTRUCTURAS DE DATOS Y ALGORITMOS Código de I.S: 402029 Código de I.G: 412020 UNIVERSIDAD NACIONAL DE EDUCACION A DISTANCIA Dpto. de Informática y Automática Facultad de Ciencias Septiembre 1998 Duración: 2 horas Esta hoja de enunciados debe ser entregada con los siguientes datos: Nombre: .......................................................................................................................... D.N.I: .............................................................................................................................. Centro en el que está matriculado...................................................................................... Centro en el que realiza el examen:.................................................................................... NOTA: Para la realización de este examen NO se permite el uso de Calculadora ni de ningún tipo de material. ?????? 1.- Realizar detalladamente el análisis del algoritmo (mejor caso , peor caso y caso promedio) de selección directa. PROCEDURE seleccion_directa; VAR i,j,k: index; x: item; BEGIN FOR i:=1 TO n-1 DO k:=i; x:=a[i]; FOR j:=i+1 TO n DO IF a[j] < x THEN k:=j; x:=a[k] END; END; a[k]:=a[i]; a[i]:= x END; END seleccion_directa 2.- Explicar el método de clasificación por montón describiendo la definición de montón de Williams, la manera de construir un montón in situ de Floyd y el algoritmo de clasificación. Usar para ello el siguiente arreglo inicial 44 55 12 42 94 18 6 67 Completar el programa 2 (en Modula-2) para que realice el desplazamiento de Floyd y desarrollar el segmento de programa que realiza la construcción de Floyd de un montón. PROCEDURE sift(L,R: index); VAR i,j:index; x: item; BEGIN i:=L; j:=2*L; x:=a[L]; IF (j<R) & ....................THEN j:=j+1 END; WHILE (j<=R) & .............. DO .............; i:=j; .............. IF (j<R) &.................. THEN j:=j+1 END END ......... END sift Programa 2 3.- Definir un árbol perfectamente balanceado. Proponer una estrucutra de nodo y programar un procedimiento en Modula-2 que construya un árbol perfectamente balanceado con llave números enteros y tal que construya el árbol sin necesidad de conocer previamente el número de nodos a insertar. Explicar detalladamente cómo se construye el árbol siguiendo las sentencias del algoritmo. Ilustrarlo construyendo el árbol para la siguiente secuencia 8 9 11 15 19 20 21 1 7 4.- En la figura 1 se presenta un árbol B de orden 2. Teniendo en cuenta que un árbol B de orden n tiene las siguientes características: 1.- Cada página contiene a lo sumo 2n elementos. 2.- Cada página, excepto la de la raíz, contiene al menos n elementos. 3.- Cada página es una página de hoja (no tiene descendientes o tiene m+1 descendientes siendo m el número de llaves en esta página) 4.- Todas las páginas de hoja aparecen en el mismo nivel. explicar detalladamente el proceso de inserción sucesiva de los siguientes valores 38, 24, 45, 25 indicando claramente la razón por la que es necesario cada paso del proceso. 10 20 30 40 5 7 Fórmulas: 8 13 15 18 z 22 26 27 32 35 42 46 Figura 1 ln x dx ? x (ln x ? 1) Hn ? 1 ? 1 1 1 ? ? ... 2 3 n Hn ? ln n ? ? ? 1 ? ... 2n ESTRUCTURAS DE DATOS Y ALGORITMOS UNIVERSIDAD NACIONAL DE EDUCACION A DISTANCIA Código de I.S: 402029 Código de I.G: 412020 Primera Semana Dpto. de Informática y Automática Facultad de Ciencias Enero 1999 Duración: 2 horas Esta hoja de enunciados debe ser entregada con los siguientes datos: Nombre: .......................................................................................................................... D.N.I: .............................................................................................................................. Centro en el que está matriculado...................................................................................... Centro en el que realiza el examen:.................................................................................... NOTA: Para la realización de este examen NO se permite el uso de Calculadora ni de ningún tipo de material. Indique claramente la Ingeniería (Sistemas o Gestión) en la que está matriculado. ¡Error! Marcador no definido.¡Error! Marcador no definido.¡Error! Marcador no definido.¡Error! Marcador no definido.¡Error! Marcador no definido.¡Error! Marcador no definido. 1.- Realizar detalladamente el análisis del algoritmo (mejor caso , peor caso y caso promedio) de selección directa. PROCEDURE seleccion_directa; VAR i,j,k: index; x: item; BEGIN FOR i:=1 TO n-1 DO k:=i; x:=a[i]; FOR j:=i+1 TO n DO IF a[j] < x THEN k:=j; x:=a[k] END; END; a[k]:=a[i]; a[i]:= x END; END seleccion_directa Programa 1 2.- Explicar detalladamente el método de clasificación por partición (clasificación rápida), indicando claramente las ideas en que se basa el algoritmo. Utilizar el siguiente arreglo inicial para mostrar su funcionamiento. 58 69 26 66 108 32 20 82 Comentar cualitativamente el análisis del comportamiento del proceso de partición, explicando las limitaciones de la clasificación rápida. Completar el código del programa 2 (en Modula-2) para que realice el algoritmo de clasificación rápida recursiva. PROCEDURE rapida; PROCEDURE sort(L,R : index); VAR i,j : index; w,x : item; BEGIN i:=.........; j:=.........; x:=........................... REPEAT WHILE ........ DO i:=i+1 END; WHILE ........ DO j:=j-1 END; IF i <= j THEN ........; ........; .........; i:=i+1; j:=j-1; END UNTIL i>j; IF L < j THEN ...........END; IF I < R THEN ...........END; END sort; BEGIN sort(..........); END rapida; Programa 2 3.- En la figura 1 se presentan dos situaciones iniciales de árboles AVL. Explicar detalladamente el efecto de la inserción del dato que se indica, especificando por qué hay necesidad o no de rebalanceo y detallar el proceso de rebalanceo hasta alcanzar la situación final adecuada. 5 5 4 7 2 2 1 (a) Insertar dato:=1 7 4 (b) Insertar dato:=3 En el árbol (a) se inserta un dato de valor 1. En el árbol (b) se inserta un dato de valor 3 4.- Explicar la organización de árboles de búsqueda óptimos ilustrándolo mediante un ejemplo. Definir claramente la longitud de trayectoria pesada y la longitud acumulada de trayectoria pesada. Indicar las propiedades fundamentales de los árboles de búsqueda óptimos Fórmulas: z ln x dx ? x (ln x ? 1) Hn ? 1 ? 1 1 1 ? ? ... 2 3 n Hn ? ln n ? ? ? 1 ? ... 2n ESTRUCTURAS DE DATOS Y ALGORITMOS UNIVERSIDAD NACIONAL DE EDUCACION A DISTANCIA Código de I.S: 402029 Código de I.G: 412020 Segunda Semana Dpto. de Informática y Automática Facultad de Ciencias Febrero 1999 Duración: 2 horas Esta hoja de enunciados debe ser entregada con los siguientes datos: Nombre: .......................................................................................................................... D.N.I: .............................................................................................................................. Centro en el que está matriculado...................................................................................... Centro en el que realiza el examen:.................................................................................... NOTA: Para la realización de este examen NO se permite el uso de Calculadora ni de ningún tipo de material. Indique claramente la Ingeniería (Sistemas o Gestión) en la que está matriculado. ¡Error! Marcador no definido.¡Error! Marcador no definido.¡Error! Marcador no definido.¡Error! Marcador no definido.¡Error! Marcador no definido.¡Error! Marcador no definido. 1.- Para encontrar la primera presencia de una palabra en un texto se dispone de tres algoritmos: el método de búsqueda directa de cadena, el método de Knuth-Morris-Pratt (KMP) y el algoritmo Boyer-Moore (BM). a) Indicar cuál de ellos utilizaría para encontrar una palabra en un texto con 10000 caracteres. ¿Utilizaría el mismo si el texto fuese de 50 caracteres?. Explique su elección en cada caso razonando comparativamente, es decir, mostrando sus ventajas respecto a los otros métodos. b) Explicar claramente cómo se realiza la comparación de caracteres en el algoritmo de BoyerMoore y cómo se calcula su tabla de distancias. Implementar en Modula-2 el segmento de código para calcular dicha tabla. 2.- Realizar detalladamente el análisis del algoritmo (mejor caso , peor caso y caso promedio) de selección directa. PROCEDURE seleccion_directa; VAR i,j,k: index; x: item; BEGIN FOR i:=1 TO n-1 DO k:=i; x:=a[i]; FOR j:=i+1 TO n DO IF a[j] < x THEN k:=j; x:=a[k] END; END; a[k]:=a[i]; a[i]:= x END; END seleccion_directa 3.- Realizar los siguientes procedimientos en Modula-2, definiendo las estructuras adecuadas para los tipos de datos que se indican. a) Procedimiento iterativo para imprimir una lista enlazada con implementación dinámica. b) Procedimiento recursivo para imprimir una lista enlazada con implementación dinámica. c) Procedimiento para imprimir una pila con implementación estática. d) Procedimiento para imprimir una cola con implementación dinámica. 4.- Un árbol B Binario Simétrico (BBS) se define como aquel que posee las siguientes propiedades: 1) Todo nodo contiene una llave y, como máximo, dos (apuntadores a) subárboles. 2) Todo apuntador es horizontal o vertical. No existen dos apuntadores consecutivos horizontales en ninguna trayectoria de búsqueda. 3) Todos los nodos terminales (nodos sin descendientes) aparecen en el mismo nivel (terminal) Construir un árbol BBS con las siguientes inserciones en el orden dado 1/2/3/4/5/6/7 indicando claramente en cada inserción dónde y por qué se inserta cada nodo, así como por qué y cómo se debe rebalancear en su caso el árbol. Fórmulas: z ln x dx ? x (ln x ? 1) Hn ? 1 ? 1 1 1 ? ? ... 2 3 n Hn ? ln n ? ? ? 1 ? ... 2n ESTRUCTURAS DE DATOS Y ALGORITMOS Código de I.S: 402029 Código de I.G: 412020 UNIVERSIDAD NACIONAL DE EDUCACION A DISTANCIA Original Dpto. de Informática y Automática Facultad de Ciencias Septiembre 1999 Duración: 2 horas Esta hoja de enunciados debe ser entregada con los siguientes datos: Nombre: .......................................................................................................................... D.N.I: .............................................................................................................................. Centro en el que está matriculado...................................................................................... Centro en el que realiza el examen:.................................................................................... NOTA: Para la realización de este examen NO se permite el uso de Calculadora ni de ningún tipo de material. Indique claramente la Ingeniería (Sistemas o Gestión) en la que está matriculado. ?????? 1.- Realizar detalladamente el análisis del algoritmo de inserción binaria (Programa 1). PROCEDURE insercion_binaria; VAR i,j,m,L,R : integer; x : integer; BEGIN FOR i:=2 TO n DO x:=a[i]; L:=........; R:=..........; WHILE ........ DO m:=.........................; IF .................. THEN L:=m+1 ELSE R:=m END; END; FOR j:=i TO R+1 BY -1 DO ................ END; a[R]:=x; END; END; Programa 1 2.- Explicar el fundamento de la clasificación polifásica. Utilizar como ejemplo la siguiente distribución de 21 corridas con tres variables de secuencia: f1 f2 f3 13 8 Explicar cualitativa y analíticamente cuáles son las distribuciones iniciales de corridas para las que la clasificación polifásica funcione bien con tres secuencias (utilizar el ejemplo propuesto). 3.- En la figura 1 se presentan dos situaciones iniciales de árboles AVL. Explicar detalladamente el efecto de la inserción del dato que se indica, especificando por qué hay necesidad o no de rebalanceo y detallar el proceso de rebalanceo hasta alcanzar la situación final adecuada. 5 5 4 7 2 2 1 (a) Insertar dato:=1 7 4 (b) Insertar dato:=3 En el árbol (a) se inserta un dato de valor 1. En el árbol (b) se inserta un dato de valor 3 4.- Un árbol B Binario Simétrico (BBS) se define como aquel que posee las siguientes propiedades: 1) Todo nodo contiene una llave y, como máximo, dos (apuntadores a) subárboles. 2) Todo apuntador es horizontal o vertical. No existen dos apuntadores consecutivos horizontales en ninguna trayectoria de búsqueda. 3) Todos los nodos terminales (nodos sin descendientes) aparecen en el mismo nivel (terminal) Construir un árbol BBS con las siguientes inserciones en el orden dado 1/2/3/4/5/6/7 indicando claramente en cada inserción dónde y por qué se inserta cada nodo, así como por qué y cómo se debe rebalancear en su caso el árbol. Fórmulas: z ln x dx ? x (ln x ? 1) Hn ? 1 ? 1 1 1 ? ? ... 2 3 n Hn ? ln n ? ? ? 1 ? ... 2n ESTRUCTURAS DE DATOS Y ALGORITMOS Código de I.S: 402029 Código de I.G: 412020 UNIVERSIDAD NACIONAL DE EDUCACION A DISTANCIA Primera Semana Dpto. de Informática y Automática Facultad de Ciencias Enero 2000 Duración: 2 horas Esta hoja de enunciados debe ser entregada con los siguientes datos: Nombre: .......................................................................................................................... D.N.I: .............................................................................................................................. Centro en el que está matriculado...................................................................................... Centro en el que realiza el examen:.................................................................................... NOTA: Para la realización de este examen NO se permite el uso de Calculadora ni de ningún tipo de material. Indique claramente la Ingeniería (Sistemas o Gestión) en la que está matriculado. ¡Error! Marcador no definido.¡Error! Marcador no definido.¡Error! Marcador no definido.¡Error! Marcador no definido.¡Error! Marcador no definido.¡Error! Marcador no definido. 1.- El programa 1 muestra el código en Módula 2 del algoritmo de inserción directa. Realizar el análisis detallado calculando el número de comparaciones y de movimientos para los casos mejor, peor y promedio. PROCEDURE inserción_directa; VAR i,j: index; BEGIN FOR i:=2 TO n DO a[0]:=a[i]; j:=i; WHILE a[0]<a[j-1] DO a[j]:=a[j-1]; a[j]:=a[0]; END j:=j-1; END; END inserción_directa Programa 1 2.- Explicar en qué consiste el método de clasificación por mezcla natural, explicando para ello los conceptos necesarios en este tipo de clasificación. Ilustrarlo mediante la siguiente secuencia 17 31 05 59 13 41 43 67 11 23 29 47 03 07 71 02 19 57 37 61 Describir qué consideraciones son necesarias para implementar los algoritmos de copia y mezcla. Indicar qué debe tenerse en cuenta para que el algoritmo esté bien programado. Ilustrarlo mediante la siguiente secuencia 03 02 05 11 07 13 19 17 23 31 29 37 43 41 47 59 57 61 71 67 3.- Definir un árbol perfectamente balanceado. Proponer una estructura de nodo y programar un procedimiento en Modula-2 que construya un árbol perfectamente balanceado con llave números enteros y tal que construya el árbol sin necesidad de conocer previamente el número de nodos a insertar. Explicar detalladamente cómo se construye el árbol siguiendo las sentencias del algoritmo. Ilustrarlo construyendo el árbol para la siguiente secuencia 8 9 11 15 19 20 21 1 7 4.- En la figura 1 se presenta un árbol B de orden 2. Teniendo en cuenta que un árbol B de orden n tiene las siguientes características: 1.- Cada página contiene a lo sumo 2n elementos. 2.- Cada página, excepto la de la raíz, contiene al menos n elementos. 3.- Cada página es una página de hoja (no tiene descendientes o tiene m+1 descendientes siendo m el número de llaves en esta página) 4.- Todas las páginas de hoja aparecen en el mismo nivel. explicar detalladamente el proceso de inserción sucesiva de los siguientes valores 38, 24, 45, 25 indicando claramente la razón por la que es necesario cada paso del proceso. 10 20 30 40 5 7 8 13 15 18 22 26 27 32 35 42 46 Figura 1 Fórmulas: z ln x dx ? x (ln x ? 1) Hn ? 1 ? 1 1 1 ? ? ... 2 3 n Hn ? ln n ? ? ? 1 ? ... 2n ESTRUCTURAS DE DATOS Y ALGORITMOS Código de I.S: 402029 Código de I.G: 412020 UNIVERSIDAD NACIONAL DE EDUCACION A DISTANCIA Segunda Semana Dpto. de Informática y Automática Facultad de Ciencias Febrero 2000 Duración: 2 hora Esta hoja de enunciados debe ser entregada con los siguientes datos: Nombre: .......................................................................................................................... D.N.I: .............................................................................................................................. Centro en el que está matriculado...................................................................................... Centro en el que realiza el examen:.................................................................................... NOTA: Para la realización de este examen NO se permite el uso de Calculadora ni de ningún tipo de material. Indique claramente la Ingeniería (Sistemas o Gestión) en la que está matriculado. ¡Error! Marcador no definido.¡Error! Marcador no definido.¡Error! Marcador no definido.¡Error! Marcador no definido.¡Error! Marcador no definido.¡Error! Marcador no definido. 1.- El programa 1 muestra el código en Módula 2 de un algoritmo directo de clasificación de arreglos. Realizar el análisis detallado calculando el número de comparaciones y de movimientos para los casos mejor, peor y promedio. PROCEDURE incognita; VAR i,j: index; BEGIN FOR i:=2 TO n DO a[0]:=a[i]; j:=i; WHILE a[0]<a[j-1] DO a[j]:=a[j-1]; a[j]:=a[0]; END j:=j-1; END; END incognita Programa 1 2.- Realizar los siguientes procedimientos en Modula-2, definiendo las estructuras adecuadas para los tipos de datos que se indican. a) Procedimiento iterativo para imprimir una lista enlazada con implementación dinámica. b) Procedimiento recursivo para imprimir una lista enlazada con implementación dinámica. c) Procedimiento para imprimir una pila con implementación estática. d) Procedimiento para imprimir una cola con implementación dinámica. . 3.- En la figura 1 se presentan dos situaciones iniciales de árboles AVL. Explicar detalladamente el efecto de la inserción del dato que se indica, especificando por qué hay necesidad o no de rebalanceo y detallar el proceso de rebalanceo hasta alcanzar la situación final adecuada. 5 5 4 7 2 2 1 (a) Insertar dato:=1 7 4 (b) Insertar dato:=3 En el árbol (a) se inserta un dato de valor 1 En el árbol (b) se inserta un dato de valor 3 4.- Un árbol B Binario Simétrico (BBS) se define como aquel que posee las siguientes propiedades: 1) Todo nodo contiene una llave y, como máximo, dos (apuntadores a) subárboles. 2) Todo apuntador es horizontal o vertical. No existen dos apuntadores consecutivos horizontales en ninguna trayectoria de búsqueda. 3) Todos los nodos terminales (nodos sin descendientes) aparecen en el mismo nivel (terminal) Construir un árbol BBS con las siguientes inserciones en el orden dado 1/2/3/4/5/6/7 indicando claramente en cada inserción dónde y por qué se inserta cada nodo, así como por qué y cómo se debe rebalancear en su caso el árbol. Fórmulas: z ln x dx ? x (ln x ? 1) Hn ? 1 ? 1 1 1 ? ? ... 2 3 n Hn ? ln n ? ? ? 1 ? ... 2n ESTRUCTURAS DE DATOS Y ALGORITMOS Código de I.S: 402029 Código de I.G: 412020 UNIVERSIDAD NACIONAL DE EDUCACION A DISTANCIA Original Dpto. de Informática y Automática Facultad de Ciencias Septiembre 2000 Duración: 2 horas Esta hoja de enunciados debe ser entregada con los siguientes datos: Nombre: .......................................................................................................................... D.N.I: .............................................................................................................................. Centro en el que está matriculado...................................................................................... Centro en el que realiza el examen:.................................................................................... NOTA: Para la realización de este examen NO se permite el uso de Calculadora ni de ningún tipo de material. Indique claramente la Ingeniería (Sistemas o Gestión) en la que está matriculado. ?????? 1.- Realizar detalladamente el análisis del algoritmo (mejor caso , peor caso y caso promedio) de selección directa. PROCEDURE seleccion_directa; VAR i,j,k: index; x: item; BEGIN FOR i:=1 TO n-1 DO k:=i; x:=a[i]; FOR j:=i+1 TO n DO IF a[j] < x THEN k:=j; x:=a[k] END; END; a[k]:=a[i]; a[i]:= x END; END seleccion_directa 2.- Explicar el método de clasificación por montón describiendo la definición de montón de Williams, la manera de construir un montón in situ de Floyd y el algoritmo de clasificación. Usar para ello el siguiente arreglo inicial 44 55 12 42 94 18 6 67 Completar el programa en Modula-2 para que realice el desplazamiento de Floyd y desarrollar el segmento de programa que realiza la construcción de Floyd de un montón. PROCEDURE sift(L,R: index); VAR i,j:index; x: item; BEGIN i:=L; j:=2*L; x:=a[L]; IF (j<R) & ....................THEN j:=j+1 END; WHILE (j<=R) & .............. DO .............; i:=j; .............. IF (j<R) &.................. THEN j:=j+1 END END ......... END sift 3.- Un árbol B Binario Simétrico (BBS) se define como aquel que posee las siguientes propiedades: 1) Todo nodo contiene una llave y, como máximo dos apuntadores a subárboles. 2) Todo apuntador es horizontal o vertical. No existen dos apuntadores consecutivos horizontales en ninguna trayectoria de búsqueda. 3) Todos los nodos terminales (nodos sin descendientes) aparecen en el mismo nivel (terminal) Construir un árbol BBS con las siguientes inserciones en el orden dado 74958 indicando claramente en cada inserción dónde y por qué se inserta cada nodo, así como por qué y cómo se debe rebalancear en su caso el árbol. 4.- Explicar detalladamente en qué consisten las tablas de transformación de llaves (hashing), cuáles son sus características y las ideas fundamentales necesarias para elegir una función de transformación. Explicar qué es una colisión y cómo se realiza el manejo de colisiones en general. Detallar la exploración lineal y la cuadrática. Fórmulas: z ln x dx ? x (ln x ? 1) Hn ? 1 ? 1 1 1 ? ? ... 2 3 n Hn ? ln n ? ? ? 1 ? ... 2n ESTRUCTURAS DE DATOS Y ALGORITMOS Código de I.S: 402029 Código de I.G: 412020 UNIVERSIDAD NACIONAL DE EDUCACION A DISTANCIA Primera Semana Dpto. de Informática y Automática Facultad de Ciencias Enero 2001 Duración: 2 horas Esta hoja de enunciados debe ser entregada con los siguientes datos: Nombre: .......................................................................................................................... Indique claramente la Ingeniería (Sistemas o Gestión) en la que está matriculado. Indique claramente el Centro Asociado en el que está matriculado. NOTA: Para la realización de este examen NO se permite el uso de Calculadora ni de ningún tipo de material. ?????? 1.- Realizar detalladamente el análisis del algoritmo de inserción binaria PROCEDURE insercion_binaria; VAR i,j,m,L,R : integer; x : integer; BEGIN FOR i:=2 TO n DO x:=a[i]; L:=........; R:=..........; WHILE ........ DO m:=.........................; IF .................. THEN L:=m+1 ELSE R:=m END; END; FOR j:=i TO R+1 BY -1 DO ................ END; a[R]:=x; END; END; 2.- Explicar detalladamente el método de clasificación por mezcla directa. Explicar su aplicación, los conceptos relacionados con ella (pases, fases, etc.) sus denominaciones, inconvenientes y posibles mejoras. Ilustrarlo mediante la siguiente secuencia 46 57 14 44 96 20 8 70 Comentar el análisis del coste de este método de clasificación. 3.- Definir el TDA pila. Detallar sus características. Realizar la implementación estática de sus operadores básicos. 4.- Un árbol B Binario Simétrico (BBS) se define como aquel que posee las siguientes propiedades: 1) Todo nodo contiene una llave y, como máximo dos apuntadores a subárboles. 2) Todo apuntador es horizontal o vertical. No existen dos apuntadores consecutivos horizontales en ninguna trayectoria de búsqueda. 3) Todos los nodos terminales aparecen en el mismo nivel Construir un árbol BBS con las siguientes inserciones en el orden dado 74958 indicando claramente en cada inserción dónde y por qué se inserta cada nodo, así como por qué y cómo se debe rebalancear en su caso el árbol. Fórmulas: z ln x dx ? x (ln x ? 1) Hn ? 1 ? 1 1 1 ? ? ... 2 3 n Hn ? ln n ? ? ? 1 ? ... 2n ESTRUCTURAS DE DATOS Y ALGORITMOS Código de I.S: 402029 Código de I.G: 412020 UNIVERSIDAD NACIONAL DE EDUCACION A DISTANCIA Segunda Semana Dpto. de Informática y Automática Facultad de Ciencias Febrero 2001 Duración: 2 horas Esta hoja de enunciados debe ser entregada con los siguientes datos: Nombre: .......................................................................................................................... Indique claramente la Ingeniería (Sistemas o Gestión) en la que está matriculado. Indique claramente el Centro Asociado en el que está matriculado. NOTA: Para la realización de este examen NO se permite el uso de Calculadora ni de ningún tipo de material. ?????? 1.- Realizar detalladamente el análisis del costo de la clasificación por partición, suponiendo que un pivote de valor aleatorio. Téngase en cuenta que el coste vendrá dado por dos llamadas recursivas más el tiempo que transcurre en la partición. 2.- Explicar el método de clasificación por montón describiendo la definición de montón de Williams, la manera de construir un montón in situ de Floyd y el algoritmo de clasificación. Usar para ello el siguiente arreglo inicial 44 55 12 42 94 18 6 67 Completar el programa 2 (en Modula-2) para que realice el desplazamiento de Floyd y desarrollar el segmento de programa que realiza la construcción de Floyd de un montón. PROCEDURE sift(L,R: index); VAR i,j:index; x: item; BEGIN i:=L; j:=2*L; x:=a[L]; IF (j<R) & ....................THEN j:=j+1 END; WHILE (j<=R) & .............. DO .............; i:=j; .............. IF (j<R) &.................. THEN j:=j+1 END END ......... END sift 3.- Definir un árbol perfectamente balanceado. Proponer una estructura de nodo y programar un procedimiento en Modula-2 que construya un árbol perfectamente balanceado con llave números enteros y tal que construya el árbol sin necesidad de conocer previamente el número de nodos a insertar. Explicar detalladamente cómo se construye el árbol siguiendo las sentencias del algoritmo. Ilustrarlo construyendo el árbol para la siguiente secuencia 8 9 11 15 19 20 21 1 7 4.- En la figura 1 se presenta un árbol B de orden 2. Teniendo en cuenta que un árbol B de orden n tiene las siguientes características: 1.- Cada página contiene a lo sumo 2n elementos. 2.- Cada página, excepto la de la raíz, contiene al menos n elementos. 3.- Cada página es una página de hoja (no tiene descendientes o tiene m+1 descendientes siendo m el número de llaves en esta página) 4.- Todas las páginas de hoja aparecen en el mismo nivel. explicar detalladamente el proceso de inserción sucesiva de los siguientes valores 38, 24, 45, 25 indicando claramente la razón por la que es necesario cada paso del proceso. 10 20 30 40 5 7 8 13 15 18 22 26 27 32 35 42 46 Figura 1 Fórmulas: z ln x dx ? x (ln x ? 1) Hn ? 1 ? 1 1 1 ? ? ... 2 3 n Hn ? ln n ? ? ? 1 ? ... 2n ESTRUCTURAS DE DATOS Y ALGORITMOS Código de I.S: 402029 Código de I.G: 412020 UNIVERSIDAD NACIONAL DE EDUCACION A DISTANCIA Original Dpto. de Informática y Automática Facultad de Ciencias Septiembre 2001 Duración: 2 horas Esta hoja de enunciados no debe ser entregada: Indique claramente en la hoja de examen: - La Ingeniería (Sistemas o Gestión) en la que está matriculado. - El Centro Asociado en el que está matriculado NOTA: Para la realización de este examen NO se permite el uso de Calculadora ni de ningún tipo de material. ?????? 1.- El siguiente programa muestra el código en Módula 2 del algoritmo de inserción directa. Realizar el análisis detallado calculando el número de comparaciones y de movimientos para los casos mejor, peor y promedio. PROCEDURE inserción_directa; VAR i,j: index; BEGIN FOR i:=2 TO n DO a[0]:=a[i]; j:=i; WHILE a[0]<a[j-1] DO a[j]:=a[j-1]; a[j]:=a[0]; END j:=j-1; END; END inserción_directa 2.- Realizar detalladamente el análisis del costo de la clasificación por partición, suponiendo un pivote de valor aleatorio. Téngase en cuenta que el coste vendrá dado por dos llamadas recursivas más el tiempo que transcurre en la partición. 3.- Calcular el número de comparaciones promedio para buscar un nodo en un árbol binario de búsqueda. 3.- Un árbol B Binario Simétrico (BBS) se define como aquel que posee las siguientes propiedades: 1) Todo nodo contiene una llave y, como máximo dos apuntadores a subárboles. 2) Todo apuntador es horizontal o vertical. No existen dos apuntadores consecutivos horizontales en ninguna trayectoria de búsqueda. 3) Todos los nodos terminales (nodos sin descendientes) aparecen en el mismo nivel (terminal) Construir un árbol BBS con las siguientes inserciones en el orden dado 4261735 indicando claramente en cada inserción dónde y por qué se inserta cada nodo, así como por qué y cómo se debe rebalancear en su caso el árbol. Fórmulas: z ln x dx ? x (ln x ? 1) Hn ? 1 ? 1 1 1 ? ? ... 2 3 n Hn ? ln n ? ? ? 1 ? ... 2n Demonstration copy of activePDF Toolkit (http://www.active4.com) Demonstration copy of activePDF Toolkit (http://www.active4.com) Demonstration copy of activePDF Toolkit (http://www.active4.com) Demonstration copy of activePDF Toolkit (http://www.active4.com) Demonstration copy of activePDF Toolkit (http://www.active4.com) Demonstration copy of activePDF Toolkit (http://www.active4.com) Demonstration copy of activePDF Toolkit (http://www.active4.com) SOLUCIONES 1) Solución: A. Este ejercicio se encuentra resuelto en el texto base, pág 63. 2) Solución: B. Este algoritmo corresponde a la selección directa. Se encuentra resuelto en el texto base, pág 60. 3) Solución: A. Este algoritmo corresponde a la selección directa. Se encuentra resuelto en el texto base, pág 59. 4) Solución: C. Se encuentra resuelto en el texto base, pág 55. 5) Solución: A. Se encuentra resuelto en el texto base, pág 120. 6) Solución: A. Se encuentra resuelto en el texto base, pág 135. 7) Solución: D. La distribución debe ser uniforme y además depende del manejo de colisiones. Ver el texto base, pág 139. 8) Solución: B. 8 14 5 9 3 1 10 17 23 2 18 30 35 13 28 20 25 31 16 22 Distribución 1: 8 5 14 3 9 1 2 18 30 35 20 25 31 10 17 23 13 28 16 22 Mezcla 1: 5 8 9 14 1 3 10 17 23 2 13 18 28 30 35 16 20 22 25 31 Distribución 2: 5 1 8 3 9 14 2 13 18 28 30 35 10 17 23 16 20 22 25 31 Mezcla 2: 1 3 5 8 9 10 14 17 23 2 13 16 18 20 22 25 28 30 31 35 Distribución 3: 1 2 3 5 8 9 10 14 17 23 13 16 18 20 22 25 28 30 2 13 Mezcla 3: Ordenado 9) Solución: A. .Se encuentra resuelto en el texto base, pág 157. 10) Solución: D. Los TDAs sólo pueden manejarse mediante los operadores básicos y asociados. Para imprimir una cola deben utilizarse los operadores Cola_vacía y Sacar_cola. En caso contrario se estaría rompiendo el encapsulamiento y la abstracción del TDA. 11) Solución: D. El árbol es: 10 7 5 15 18 8 9 y la longitud de trayectoria interna es 2*1+3*2+1*3=11 12) Solución: D. El árbol es: 10 7 5 15 18 8 9 y la longitud de trayectoria externa es 0*1+1*2+5*3+2*4=25 13) Solución: D. En la construcción del árbol de búsqueda se observa que en algunas inserciones ni el número de nodos ni la altura de los subárboles izquierdo y derecho difieren como máximo en 1. Por ejemplo, al insertar el valor 13, el nodo 16 (raíz) tiene un subárbol izquierdo con 5 nodos y un subárbol derecho con 3 nodos, con lo que ya no es perfectamente balanceado. Por otro lado, al insertar el nodo 9, el subárbol con raíz el 10 riene altura 2 a la izquierda (el 4 y el 9) y 0 a la derecha 14) Solución: B o C. Se encuentra resuelto en el texto base, pág 231. 15) Solución: A. Se encuentra resuelto en el texto base, pág 231. Puede observarse que tiene un nodo a la derecha y ninguno a la izquierda 16) Solución: C. Se encuentra resuelto en el texto base, pág 252. 17) Solución: A. Se encuentra resuelto en el texto base, pág 253. 18) Solución: A. Se encuentra resuelto en el texto base, pág 264. 19) Solución: C. Se encuentra resuelto en el texto base, pág 265. 20) Solución: C. Se encuentra resuelto en el texto base, pág 265. Pregunta TIPO A 1 A 2 B 3 A 4 C 5 A 6 A 7 D 8 B 9 A 10 D 11 D 12 D 13 D 14 B o C o ambas 15 A 16 C 17 A 18 A 19 C 20 C TIPO B C A B A A C A D B D D B o C o ambas D D C C A B A B TIPO C B D B B B C B A A D D D A o C o ambas D B A A C C A SOLUCIONES 1) Solución B. Este ejercicio se encuentra resuelto en el texto base, pág 86 2) Solución D. Este ejercicio se encuentra resuelto en el texto base, pág 86: T(n)=2*T(n/2)+cn, 3) Solución D. Este ejercicio se encuentra resuelto en el texto base, pág 85 4) Solución D. Este ejercicio se encuentra resuelto en el texto base, pág 76 3, 8, 5, 9, 14, 23, 17, 13, 22 5) Solución D. Distribución: A= 8, 14, 3, 23, 13, 22, 2 B= 5, 9, 17, 4, 10 Primera mezcla: 5, 8, 9, 14, 3, 17, 23, 4, 10, 13, 22, 2 6) Solución C. Este ejercicio se encuentra resuelto en el texto base, pág 133: 7) Solución D. La primera elección debe realizarse entre métodos de clasificación de arreglos o métodos de clasificación en memoria secundaria. Dado que se dispone de memoria primaria suficiente es mejor utilizar estos algoritmos ya que siempre es más rápido acceder a memoria principal que a secundaria. Las comparaciones y los movimientos son siempre mucho más costosos en memoria secundaria. La segunda elección debe realizarse entre métodos directos de clasificación de arreglos y métodos avanzados. Serán más adecuados en función del tamaño de los datos a tratar. En este caso, el número de elementos (5000 a 10000) es lo suficientemente grande como para desestimar los métodos directos. Por último, queda por decidir qué método avanzado utilizar. En este caso, el quicksort es absolutamente desaconsejable ya que los valores de los datos no son muy diferentes, y por tanto la probabilidad de elegir un pivote con un coste correspondiente al peor caso (cuadrático) es elevada. Por tanto, debería pensarse en utilizar la clasificación por montón, o la Shell. 8) Solución B. Este ejercicio se encuentra resuelto en el texto base, pág 139-140 9) Solución B. El tratamiento de los TDA, una vez definido con sus operaciones básicas y auxiliares, es independiente de la implementación (en otro caso no sería Abstracto). Por tanto el pseudocódigo nunca depende de la implementación. 10) Solución C. Este ejercicio se encuentra resuelto en el texto base, pág 175-189 11) Solución B. Este ejercicio se encuentra resuelto en el texto base, pág 221 12) Solución D. Es necesario un rebalanceo LL en N (ver texto base, pág 221-223) 13) Solución A. Este ejercicio se encuentra resuelto en el texto base, pág 237 14) Solución C. ver texto base, pág 198 15) Solución C. ver texto base, pág 244, 215 16) Solución C. ver texto base, pág 216. 17) Solución C. Análogo al ejercicio del texto base, pág 265 18) Solución C. Análogo al ejercicio del texto base, pág 250-252 19) Solución A. Análogo al ejercicio del texto base, pág 253 20) Solución B. ver texto base, pág 272 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 TIPO A B D D D D C D B B C B D A C C C C C A B TIPO B D D C A D D D A C B C A D B C A B B C A TIPO C D B A A B D D D D C B A D A B C A C A B COMENTARIOS GENERALES • Todos los ejercicios (construcción de algoritmos, análisis, etc), deben explicarse detalladamente, tal y como se realiza en el texto base. • En el curso 2000 - 2001 el texto base de la asignatura fue actualizado. Por ello, algunas preguntas de los exámenes de cursos anteriores están fuera de temario o eran formuladas teniendo en cuenta los contenidos del texto base del curso correspondiente, por lo que en la actualidad se realizarían de otra manera en función de los contenidos del nuevo. CURSO 2000 - 2001 SEPTIEMBRE 2001 PREGUNTA 1: La respuesta se encuentra detallada en el texto base, Págs. 50 - 53. PREGUNTA 2: La respuesta se encuentra detallada en el texto base, Págs. 86 - 89. PREGUNTA 3: La respuesta se encuentra detallada en el texto base, Págs. 215 - 218. PREGUNTA 4: Este ejercicio es análogo al mostrado en las páginas 264 - 265 del texto base, figura 6.15. ENERO 2001 (Primera Semana) PREGUNTA 1: La respuesta se encuentra detallada en el texto base, Págs. 55 - 57. Obsérvese que el análisis de los movimientos es el mismo que en la inserción directa. En la respuesta debe mostrarse y realizarse completamente, tal y como se realiza en las páginas 52-53 del texto base. PREGUNTA 2: La respuesta se encuentra detallada en el texto base, Págs. 95 - 101. PREGUNTA 3: La respuesta se encuentra detallada en el texto base, Págs. 155 - 159. PREGUNTA 4: La respuesta se encuentra detallada en el texto base, Págs. 264 - 265, figura 6.15. FEBRERO 2001 (Segunda Semana) PREGUNTA 1: La respuesta se encuentra detallada en el texto base, Págs. 86 - 89. PREGUNTA 2: La respuesta se encuentra detallada en el texto base, Págs. 75 - 81. PREGUNTA 3: La respuesta se encuentra detallada en el texto base, Págs. 202 - 204. PREGUNTA 4: Este ejercicio es un caso incluido en el ejemplo mostrado 250 - 252, figura 6.4. CURSO 1999 - 2000 SEPTIEMBRE 2000 PREGUNTA 1: La respuesta se encuentra detallada en el texto base, Págs. 59 - 62. PREGUNTA 2: La respuesta se encuentra detallada en el texto base, Págs. 75 - 81. PREGUNTA 3: La respuesta se encuentra detallada en el texto base, Págs. 264 - 265. PREGUNTA 4: La respuesta se encuentra detallada en el texto base, 131 - 139. Esta pregunta tiene una respuesta demasiado amplia con el texto base del curso. En la actualidad se realizaría sobre alguno de los aspectos que incluye. Por ejemplo, el concepto y manejo de colisiones. ENERO 2000 (Primera Semana) PREGUNTA 1: La respuesta se encuentra detallada en el texto base, Págs. 50 - 53. PREGUNTA 2: La respuesta se encuentra detallada en el texto base, Págs. 101 - 105. Como se indica en la Guía Didáctica no es necesario la implementación del algoritmo completo, sólo para obtener la máxima calificación es necesario comentar los procedimientos de distribución y mezcla. PREGUNTA 3: La respuesta se encuentra detallada en el texto base, Págs. 202 - 204. PREGUNTA 4: Este ejercicio es un caso incluido en el ejemplo mostrado 250 - 252, figura 6.4. FEBRERO 2000 (Segunda Semana) PREGUNTA 1: De la implementación del código debe deducirse claramente que es el algoritmo de inserción directa. Para ello conviene explicar una traza del código. El análisis de este algoritmo se encuentra detallado en el texto base, Págs. 50 - 53. PREGUNTA 2: La respuesta a los apartados a) y b) se encuentra detallada en el texto base, Págs. 34 - 35. Los apartados c) y d) suelen ser incorrectamente resueltos porque deben utilizarse los operadores definidos, básicos y auxiliares, de los TDA, tal y como se detalla a lo largo de todo el texto base. En ningún caso deben realizarse sobre las estructuras estáticas o dinámicas correspondientes a sus implementaciones. Así, se deben utilizar las funciones Sacar, PilaVacía, etc, y nunca manipular los arreglos o listas enlazadas. Esto es totalmente contrario al concepto de TDA, y de la abstracción y el encapsulado de datos. PREGUNTA 3: La respuesta se encuentra detallada en el texto base y en las películas incluidas en el CDROM del mismo. Págs. 230 - 231. PREGUNTA 4: La respuesta se encuentra detallada en el texto base, Págs. 264, figura 6.14. CURSO 1998 - 1999 SEPTIEMBRE 1999 PREGUNTA 1: La respuesta se encuentra detallada en el texto base, Págs. 55 - 57. PREGUNTA 2: La respuesta se encuentra detallada en el texto base, Págs. 116 - 120. PREGUNTA 3: La respuesta se encuentra detallada en el texto base y en las películas incluidas en el CDROM del mismo. Págs. 230 - 231. PREGUNTA 4: La respuesta se encuentra detallada en el texto base, Págs. 264, figura 6.14. ENERO 1999 (Primera Semana) PREGUNTA 1: La respuesta se encuentra detallada en el texto base, Págs. 59 - 62. PREGUNTA 2: La respuesta se encuentra detallada en el texto base, Págs. 82 - 86. PREGUNTA 3: La respuesta se encuentra detallada en el texto base y en las películas incluidas en el CDROM del mismo. Págs. 230 - 231. PREGUNTA 4: NO PERTENECE AL TEMARIO ACTUAL FEBRERO 1999 (Segunda Semana) PREGUNTA 1: NO PERTENECE AL TEMARIO ACTUAL PREGUNTA 2: La respuesta se encuentra detallada en el texto base, Págs. 59 - 62. PREGUNTA 3: La respuesta a los apartados a) y b) se encuentra detallada en el texto base, Págs. 34 - 35. Los apartados c) y d) suelen ser incorrectamente resueltos porque deben utilizarse los operadores definidos, básicos y auxiliares, de los TDA, tal y como se detalla a lo largo de todo el texto base. En ningún caso deben realizarse sobre las estructuras estáticas o dinámicas correspondientes a sus implementaciones. Así, se deben utilizar las funciones Sacar, PilaVacía, etc, y nunca manipular los arreglos o listas enlazadas. Esto es totalmente contrario al concepto de TDA, y de la abstracción y el encapsulado de datos. PREGUNTA 4: La respuesta se encuentra detallada en el texto base, Págs. 264, figura 6.14. CURSO 1997 - 1998 SEPTIEMBRE 1998 PREGUNTA 1: La respuesta se encuentra detallada en el texto base, Págs. 59 - 62. PREGUNTA 2: La respuesta se encuentra detallada en el texto base, Págs. 75 - 81. PREGUNTA 3: La respuesta se encuentra detallada en el texto base, Págs. 202 - 204. PREGUNTA 4: Este ejercicio es un caso incluido en el ejemplo mostrado 250 - 252, figura 6.4. ENERO 1998 (Primera Semana) PREGUNTA 1: La respuesta se encuentra detallada en el texto base, Págs. 59 - 62. SELECC PREGUNTA 2: La respuesta se encuentra detallada en el texto base, Págs. 116 - 120. PREGUNTA 3: Este ejercicio es análogo al ilustrado en la la figura 6.3 del texto base, Págs. 248 - 249. PREGUNTA 4: NO PERTENECE AL TEMARIO ACTUAL FEBRERO 1998 (Segunda Semana) PREGUNTA 1: De la implementación del código debe deducirse claramente que es el algoritmo de inserción directa. Para ello conviene explicar una traza del código. El análisis de este algoritmo se encuentra detallado en el texto base, Págs. 50 - 53. PREGUNTA 2: La respuesta se encuentra detallada en el texto base, Págs. 101 - 105. Como se indica en la Guía Didáctica no es necesario la implementación del algoritmo completo, sólo para obtener la máxima calificación es necesario comentar los procedimientos de distribución y mezcla. PREGUNTA 3: Este ejercicio es un caso incluido en el ejemplo mostrado 250 - 252, figura 6.4. PREGUNTA 4: La respuesta se encuentra detallada en el texto base, 131 - 139. Esta pregunta tiene una respuesta demasiado amplia con el texto base del curso. En la actualidad se realizaría sobre alguno de los aspectos que incluye. Por ejemplo, el concepto y manejo de colisiones. CURSO 1996 - 1997 SEPTIEMBRE 1997 PREGUNTA 1: La respuesta se encuentra detallada en el texto base, Págs. 57 - 62. PREGUNTA 2: La respuesta se encuentra detallada en el texto base, Págs. 75 - 81. PREGUNTA 3: La respuesta se encuentra detallada en el texto base y en las películas incluidas en el CDROM del mismo. Págs. 230 - 231. PREGUNTA 4: La respuesta se encuentra detallada en el texto base, 131 - 139. Esta pregunta tiene una respuesta demasiado amplia con el texto base del curso. En la actualidad se realizaría sobre alguno de los aspectos que incluye. Por ejemplo, el análisis. ENERO 1997 (Primera Semana) PREGUNTA 1: NO PERTENECE AL TEMARIO ACTUAL PREGUNTA 2: De la implementación del código debe deducirse claramente que es el algoritmo de inserción directa. Para ello conviene explicar una traza del código. El análisis de este algoritmo se encuentra detallado en el texto base, Págs. 50 - 53. PREGUNTA 3: La respuesta se encuentra detallada en el texto base, 162 - 174. PREGUNTA 4: La respuesta se encuentra detallada en el texto base y en las películas incluidas en el CDROM del mismo., 201 - 202. FEBRERO 1997 (Segunda Semana) PREGUNTA 1: La respuesta se encuentra detallada en el texto base, Págs. 53 - 57. Obsérvese que el análisis de los movimientos es el mismo que en la inserción directa. En la respuesta debe mostrarse y realizarse completamente, tal y como se realiza en las páginas 5253 del texto base. PREGUNTA 2: La respuesta se encuentra detallada en el texto base, Págs. 116 - 120. PREGUNTA 3: La respuesta se encuentra detallada en el texto base y en las películas incluidas en el CDROM del mismo. Págs. 230 - 231. PREGUNTA 4: NO PERTENECE AL TEMARIO ACTUAL CURSO 1995 - 1996 SEPTIEMBRE 1996 PREGUNTA 1: NO PERTENECE AL TEMARIO ACTUAL PREGUNTA 2: La respuesta se encuentra detallada en el texto base, Págs. 53 - 57. Obsérvese que el análisis de los movimientos es el mismo que en la inserción directa. En la respuesta debe mostrarse y realizarse completamente, tal y como se realiza en las páginas 52 - 53 del texto base. PREGUNTA 3: Este es un ejercicio clásico de programación de listas enlazadas, y como es habitual existen diversas implementaciones válidas. Las técnicas y habilidades que debe manejar con soltura son las que se detallan en el capítulo 1 del texto base, y en especial en el algoritmo de inserción según un orden. Págs. 28 - 34. La construcción del algoritmo debe explicarse detalladamente tal y como se realiza en el texto base. PREGUNTA 4: La respuesta se encuentra detallada en el texto base, 131 - 139. Esta pregunta tiene una respuesta demasiado amplia con el texto base del curso. En la actualidad se realizaría sobre alguno de los aspectos que incluye. Por ejemplo, el análisis. ENERO 1996 (Primera Semana) PREGUNTA 1: NO PERTENECE AL TEMARIO ACTUAL PREGUNTA 2: La respuesta se encuentra detallada en el texto base, Págs. 95 - 101. PREGUNTA 3: La respuesta a los apartados a) y b) se encuentra detallada en el texto base, Págs. 34 - 35. Los apartados c) y d) suelen ser incorrectamente resueltos porque deben utilizarse los operadores definidos, básicos y auxiliares, de los TDA, tal y como se detalla a lo largo de todo el texto base. En ningún caso deben realizarse sobre las estructuras estáticas o dinámicas correspondientes a sus implementaciones. Así, se deben utilizar las funciones Sacar, PilaVacía, etc, y nunca manipular los arreglos o listas enlazadas. Esto es totalmente contrario al concepto de TDA, y de la abstracción y el encapsulado de datos. PREGUNTA 4: NO PERTENECE AL TEMARIO ACTUAL FEBRERO 1996 (Segunda Semana) PREGUNTA 1: NO PERTENECE AL TEMARIO ACTUAL PREGUNTA 2: La respuesta se encuentra detallada en el texto base, Págs. 82 - 86. PREGUNTA 3: Este es un ejercicio clásico de programación de listas enlazadas, y como es habitual existen diversas implementaciones válidas. Las técnicas y habilidades que debe manejar con soltura son las que se detallan en el capítulo 1 del texto base, y en especial en el algoritmo de inserción según un orden. Págs. 28 - 34. La construcción del algoritmo debe explicarse detalladamente tal y como se realiza en el texto base. PREGUNTA 4: La respuesta se encuentra detallada en el texto base y en las películas incluidas en el CDROM del mismo., 201 - 202. CURSO 1994 - 1995 SEPTIEMBRE 1995 PREGUNTA 1: La respuesta se encuentra detallada en el texto base, Págs. 57 - 62. PREGUNTA 2: La respuesta se encuentra detallada en el texto base, Págs. 116 - 120. PREGUNTA 3: La respuesta se encuentra detallada en el texto base, Págs. 160 - 161. PREGUNTA 4: La respuesta se encuentra detallada en el texto base, 131 - 139. Esta pregunta tiene una respuesta demasiado amplia con el texto base del curso. En la actualidad se realizaría sobre alguno de los aspectos que incluye. Por ejemplo, el concepto y manejo de colisiones. ESTRUCTURAS DE DATOS Y ALGORITMOS Recopilación de las Preguntas de examen clasificadas por temas, (curso 95/96 a 98/99) p o r A lb e r t R . G a rr id o , a lu m n o d e I.T . I. d e S is t e m a s . (C . A . 6 1 0 0 -T e r r a s s a ) NOTAS: 1. Colores: Todo lo que no esté en color negro son indicaciones adicionales. Es decir, las preguntas del examen tal cual, figuran en negro. Cualquier cosa en otro color indica una anotación incluida por mí, como las que describo a continuación. 2. Leyenda (1): Antes de cada pregunta figura entre corchetes un código indicando en qué examen (o exámenes) ha salido. El formato es [aaAAm-n] , donde: - aaAA son los años del curso. - m indica la convocatoria: E para enero (1ª semana), F febrero (2ª semana), S septiembre, y R reserva (septiembre) - n es el número de pregunta. Ejemplo: [9798E-2] indica que se trata de la 2ª pregunta del examen de enero (1ª semana) del curso 1997/1998. 3. Leyenda (2): Al final de cada pregunta (o apartado) he procurado colocar otro código, esta vez en color rojo, para indicar en qué capítulo y página del libro se trata de esta pregunta. Así, en la pregunta [9596F-1], figura el código [1.8;40] indicando que ésta pregunta pertenece al capítulo 1 (Estructuras de datos fundamentales), punto 8 (Variantes de estructuras del registro) y que viene (empieza) en la página 40 en el libro. EL TEMA III, según consta en la guía del curso, “está constituido por apuntes remitidos por el profesor de la asignatura a los Centros Asociados”. En este caso, la página la indico precediendo AP al número de página de dichos apuntes, p.e.: [3.2;AP6] [9596F-1] [9596S-1] ♦ Explicar detalladamente en qué consiste la estructura de registros con variantes. Aplicarlo a la estructuración de los datos para calcular distancias con coordenadas cartesianas y polares, indicando las diferencias de uso respecto al caso de utilizar dos registros sin variantes. Realizar las declaraciones de tipos necesarias en Modula-2. [1.8;40] [9495E-1] [9697E-1] ♦ Para encontrar la primera presencia de una palabra en un texto se dispone de tres algoritmos: el método de búsqueda directa de cadena, el método de Knuth-Morris-Pratt (KMP) y el algoritmo de Boyer-Moore (BM). a) Indicar cuál de ellos utilizaría para encontrar una palabra en un texto con 10000 caracteres. ¿Utilizaría el mismo si el texto fuese de 50 caracteres?. Explique su elección en cada caso razonando comparativamente, es decir, mostrando sus ventajas respecto a los otros métodos. b) Explicar claramente cómo se realiza la comparación de caracteres en el algoritmo de Boyer-Moore y cómo se calcula su tabla de distancias. Implementar en Modula-2 el segmento de código para calcular dicha tabla. [1.12.4;66] [1.12.5;68] [1.12.6;73] [9596E-1] [9697R-1] ♦ Explicar detalladamente el método de Knuth-Morris-Pratt (KMP) para encontrar una palabra en un texto base mostrando claramente cómo se realiza la comparación de caracteres. Indicar las ventajas frente al método de búsqueda directa en cadena y cómo se calcula su tabla de distancias. Implementar en Modula-2 el segmento de código para calcular dicha tabla. [1.12.5;68] [1.12.4;66] Página 1 de 8 [email protected] Preguntas Exámenes E.D.A. [9697E-2] ♦ El programa 1 muestra el procedimiento en Modula-2 correspondiente a un método directo de clasificación de arreglos. a) Deducir cuál de ellos es (inserción, selección o intercambio)., explicando detalladamente su mecanismo. Utilizar para ello el siguiente arreglo inicial. [2.2.1;84] 46 57 14 44 96 20 8 70 b) Realizar el análisis del programa 1, calculando el número de comparaciones y de movimientos para los casos mejor, peor y promedio. [2.2.1;86] PROCEDURE incognita; VAR i,j:index; BEGIN FOR i:=2 TO n DO a[0]:=a[i]; j:=i; WHILE a[0]<a[j-1] DO a[j]:=a[j-1]; j:=j-1; END; a[j]:=a[0]; END; END incognita Programa 1 [9495E-2] [9596S-2] [9697F-1] ♦ a) Explicar detalladamente el método de inserción binaria utilizando para ello el siguiente arreglo inicial. 46 57 14 44 96 20 8 70 b) Completar el código del programa 1 (en Modula-2) para que realice el algoritmo de inserción binaria. c) Realizar el análisis del programa 1, calculando el número de comparaciones y de movimientos. PROCEDURE inserción_binaria; VAR i,j,m,L,R : integer; x : integer; BEGIN FOR i:=2 TO n DO x:=a[i]; L:=........; R:=...........; WHILE ....... DO m:=.........................; IF .................. THEN L:=m+1 ELSE R:=m END; END; FOR j:=i TO R+1 BY –1 DO ................ END; a[R]:=x; END; END; Programa 1 [2.2.1;86] [email protected] Página 2 de 8 Preguntas Exámenes E.D.A. [9697S-1] [9697R-2] ♦ Explicar detalladamente el método de selección directa utilizando para ello el siguiente arreglo inicial. 46 57 14 44 96 20 8 70 Completar el código del programa 1 (en Modula-2) para que realice el algoritmo de selección directa. Realizar detalladamente el análisis del algoritmo, calculando el número de comparaciones y de movimientos. PROCEDURE selección_directa; VAR i,j,k:index; x: item; BEGIN FOR i:=1 TO n-1 DO k:=i; x:=a[i]; FOR j:=i+1 TO n DO IF ................... THEN ...........; ............. END; END; ..................; .................. END; END; Programa 1 [2.2.2;87] [9798E-1] [9798S-1] [9899E-1] ♦ Realizar detalladamente el análisis del algoritmo (mejor caso , peor caso y caso promedio) de selección directa. PROCEDURE selección_directa; VAR i,j,k:index; x: item; BEGIN FOR i:=1 TO n-1 DO k:=i; x:=a[i]; FOR j:=i+1 TO n DO IF a[j] < x THEN k:=j; x:=a[k] END; END; a[k]:=a[i]; a[i]:=x END; END selección_directa [2.2.2;88] [9697S-2] [9798S-2] ♦ Explicar el método de clasificación por montón describiendo la definición de montón de Williams, la manera de construir un montón in situ de Floyd y el algoritmo de clasificación. Usar para ello el siguiente arreglo inicial. [2.3.2;96] 44 55 12 42 94 18 6 67 Sigue en la próxima página... [email protected] Página 3 de 8 Preguntas Exámenes E.D.A. Completar el programa 2 (en Modula-2) para que realice el desplazamiento de Floyd y desarrollar el segmento de programa que realiza la construcción de Floyd de un montón. PROCEDURE sift(L,R:index); VAR i,j:index; x: item; BEGIN i:=L; j:=2*L; x:=a[L]; IF (j<R) & ................... THEN j:=j+1 END; WHILE (j<=R) & .............. DO ..............; i:=j; .............. IF (j<R) &.................. THEN j:=j+1 END; END ......... END sift Programa 2 [2.3.2;98] [9596F-2] [9899E-2] ♦ Explicar detalladamente el método de clasificación por partición (clasificación rápida), indicando claramente las ideas en que se basa el algoritmo. Utilizar el siguiente arreglo inicial para mostrar su funcionamiento. [2.3.3;100] 58 69 26 66 108 32 20 82 Completar el código del programa 1 (en Modula-2) para que realice el algoritmo de clasificación rápida recursiva. [2.3.3;102] PROCEDURE rapida; PROCEDURE sort(L,R : index); VAR i,j : index; w,x : item; BEGIN i:=.........; j:=.........; x:=........................... REPEAT WHILE ........ DO i:=i+1 END; WHILE ........ DO j:=j-1 END; IF i <= j THEN ........; ........; .........; i:=i+1; j:=j-1; END UNTIL i>j; IF L < j THEN ...........END; IF I < R THEN ...........END; END sort; BEGIN sort(..........); END rapida; Programa 1 Realizar detalladamente el análisis del comportamiento del proceso de partición. Explicar las limitaciones de la clasificación rápida. [2.3.3;103/104] [email protected] Página 4 de 8 Preguntas Exámenes E.D.A. [9697R-3] ♦ Explicar detalladamente el método de clasificación por inserción por incremento decreciente (Shell). Completar el algoritmo dado en el programa 1 para que realice la clasificación Shell. Indicar cómo se aplica el arreglo inicial dado en el ejercicio 2. [9697R-2] PROCEDURE Shell; CONST t=4; VAR i,j,k,s : index; x : item; m : 1..t; h : ARRAY [1..t] OF INTEGER; BEGIN h[i]:=9; h[2]:=5; h[3]:=3; h[4]:=1; FOR i:=k+1 TO n DO k:=h[m]; s:=-k; FOR i:=k+1 TO n DO x:=..........; j:=...........; IF s=........ THEN s:=........... END; s:=.........; a[s]:=............; WHILE x<a[j] DO .....................; j:=............ END; a[j+k]:=.......; END END END Programa 1 [2.3.1;93] [9596E-2] [9798F-2] ♦ Explicar en qué consiste el método de clasificación por mezcla directa. Ilustrarlo mediante la siguiente secuencia. 46 57 14 44 96 20 8 70 Explicar cómo se realiza la clasificación por mezcla en un arreglo y discutir si su aplicación es o no más adecuada que el método de clasificación rápida. [2.4.1;110] [9697F-2] [9798E-2] ♦ Explicar el fundamento de la clasificación polifásica. Utilizar como ejemplo la siguiente distribución de 21 corridas con tres variables de secuencia: f1 f2 f3 13 8 Explicar cualitativa y analíticamente cuáles son las distribuciones iniciales de corridas para las que la clasificación polifásica funcione bien con tres secuencias (utilizar el ejemplo propuesto). [2.4.4;126] [email protected] Página 5 de 8 Preguntas Exámenes E.D.A. [9697E-3] ♦ Explicar detalladamente la Estructura de Datos Abstracta denominada Cola, especificando su definición, manejo y aplicación. [3.2;AP2] Realizar en Modula-2 las definiciones de tipos y todas las funciones y/o procedimientos para su implementación estática. [3.2;AP6/12] Mostrar un ejemplo en el que sea más adecuada la implementación estática que la dinámica. [3.2;AP28] [9596E-3] ♦ Realizar los siguientes procedimientos en Modula-2, definiendo las estructuras adecuadas para los tipos de datos que se indican. a) Procedimiento iterativo para imprimir una lista enlazada con implementación dinámica. [4.3;195] b) Procedimiento recursivo para imprimir una lista enlazada con implementación dinámica. c) Procedimiento para imprimir una pila con implementación estática. [3.2;AP3] d) Procedimiento para imprimir una cola con implementación dinámica. [3.4;AP24] [9596F-3] [9596S-3] ♦ Se tiene una lista enlazada que almacena números enteros. Realizar un procedimiento en Modula-2 que suprima de la lista todos los elementos mayores que uno dado como límite. Por ejemplo, si la lista inicial es lista 56 36 95 13 25 69 y el número dado como límite es 43, la lista resultante es lista 36 13 25 [3.3;AP14] [9495E-3] ♦ Se dispone de dos listas enlazadas construidas dinámicamente con nodos del mismo tipo base y de igual longitud. Realizar un procedimiento en Modula-2 que determine si ambas listas son iguales o diferentes. Serán iguales si el campo llave del primer nodo tiene el mismo valor en ambas listas y el campo llave del segundo nodo tiene el mismo valor en ambas listas y así sucesivamente. [4.3;195] [9697F-3] [9697S-3] [9899E-3] ♦ En la figura 1 se representan dos situaciones iniciales de árboles AVL. Explicar detalladamente el efecto de la inserción del dato que se indica, especificando por qué hay necesidad o no de rebalanceo y detallar el proceso de rebalanceo hasta alcanzar la situación final adecuada. Sigue en la próxima página... [email protected] Página 6 de 8 Preguntas Exámenes E.D.A. 5 5 4 7 2 2 7 1 4 (a) Insertar dato:=1 (b) Insertar dato:=3 En el árbol (a) se inserta un dato de valor 1. En el árbol (b) se inserta un dato de valor 3. [4.5.1;233/236] [9596F-4] [9798S-4] ♦ Definir un árbol perfectamente balanceado. Programar un procedimiento en Modula2 que construya un árbol perfectamente balanceado con n nodos y llave números enteros. Explicar detalladamente cómo se construye el árbol siguiendo las sentencias del algoritmo. Ilustrarlo construyendo el árbol para la siguiente secuencia. 8 9 11 15 19 20 21 1 7 [4.4.1;215] [9798S-3] ♦ Definir un árbol perfectamente balanceado. Proponer una estructura de nodo y programar un procedimiento en Modula-2 que construya un árbol perfectamente balanceado con llave números enteros y tal que construya el árbol sin necesidad de conocer previamente el número de nodos a insertar. Explicar detalladamente cómo se construye el árbol siguiendo las sentencias del algoritmo. Ilustrarlo construyendo el árbol para la siguiente secuencia. 8 9 11 15 19 20 21 1 7 [4.4.1;215] [9798E-3] ♦ En la figura 1 se presentan dos árboles. Teniendo en cuenta que un árbol B de orden n tiene las siguientes características: 1.- Cada página contiene a los sumo 2n elementos. 2.- Cada página, excepto la de la raíz, contiene al menos n elementos. 3.- Cada página es una página de hoja (no tiene descendientes o tiene m+1 descendientes siendo m el número de llaves en esta página. 4.- Todas las páginas hoja aparecen en el mismo nivel. Determinar, indicando explícitamente las razones, si son o no árboles B de orden 2. Si alguno de ellos es un árbol B de orden 2, explicar detalladamente el proceso de inserción del valor 22 en él, indicando claramente la razón por la que es necesario cada paso del proceso. Sigue en la próxima página... [email protected] Página 7 de 8 Preguntas Exámenes E.D.A. Si alguno de ellos no es un árbol B de orden 2, proponga un árbol que lo sea con esos datos. 20 7 10 15 18 20 26 30 35 40 7 10 15 21 30 35 40 [4.7.1;257] [9798F-3] [9798S-3] ♦ En la figura 1 se presenta un árbol B de orden 2. Teniendo en cuenta que un árbol B de orden n tiene las siguientes características: 1.- Cada página contiene a los sumo 2n elementos. 2.- Cada página, excepto la de la raíz, contiene al menos n elementos. 3.- Cada página es una página de hoja (no tiene descendientes o tiene m+1 descendientes siendo m el número de llaves en esta página. 4.- Todas las páginas hoja aparecen en el mismo nivel. explicar detalladamente el proceso de inserción sucesiva de los siguientes valores 38, 24, 45, 25 indicando claramente la razón por la que es necesario cada paso del proceso. 10 20 30 40 5 7 8 13 15 18 22 26 27 32 36 42 48 [4.7.1;262] [9596E-4] [9697F-4] [9798E-4] [9899E-4] ♦ Explicar la organización de árboles de búsqueda óptimos ilustrándolo mediante un ejemplo. Definir claramente la longitud de trayectoria pesada y la longitud acumulada de trayectoria pesada. Indicar las propiedades fundamentales de los árboles de búsqueda óptimos. [4.6;243] [9596E-4] [9697F-4] [9798E-4] [9899E-4] ♦ Explicar detalladamente en qué consisten las tablas de transformación de llaves (hashing), cuáles son sus características y las ideas fundamentales necesarias para elegir una función de transformación. Explicar qué es una colisión y cómo se realiza el manejo de colisiones en general. Detallar la exploración lineal y la cuadrática. [5;285..289] [email protected] Página 8 de 8 Preguntas Exámenes E.D.A. Inserción Directa Inserció n Binaria Selección Directa Intercam bio Directo Sacudid a Shel ¿Qué hace? Considera el primer elemento Comp. ordenado y a partir de esa premisa va insertando los elementos en el sitio y desplazando el resto hacia Mov. la derecha Como inserción directa, pero la búsqueda del sitio la hace por dicotomía. Montón C min = n − 1 Coste Peor Caso C M min = 2(n − M Como el de la burbuja pero en ambos sentidos: ascendente y descendente ∑ = n i −1 = 2 i =1 n = max 2 Coste Medio + n − 2 C 2 + 3n − 4 2 = prom M = prom 1 C 2 n 2 n = max + n − 2 4 2 + 9 n − 10 4 C min = n − 1 Ω( I .B.) = Θ(n 2 ) C = n(log 2 n − log 2 e) + log 2 e Mov. Como la directa Como la directa Como la directa C min = 3(n − 1C min = 3(n − 1) M Compara un par de elementos contiguos, si no está ordenado lo ordena. max n Comp. Selecciona el elemento menor del Comp. vector sin ordenar y lo coloca al final de la parte ordenada. Mov. − n 2 Comp. C = Mov. M min = 0 Comp. n 2 M = 3 ( n − 1) + max C = max C min = 3(n − 1) n 2 n2 4 − n 2 = 3C = 3 M C = n 2 − n 2 C min = n − 1 C max = n − k1 n M C ≅ n (ln n + γ ) prom γ = 0 . 577216 donde 2 n prom prom − n 2 1 M = 2 = 1 (n 2 max 2 ... = 3 − n (k 2 n 2 − n 4 + ln n )) Como Intecambio Como Intecambio directo Como Intecambio directo directo Se basa en la ordenación por Observaci El análisis detallado del algoritmo es supercomplicado y el libro no lo explica. inserción de los elementos que ones difieren h1 posiciones, luego h2, asi Coste n 2 t n2 hasta ht=1. Es dificil decidir la asintótico O ∑ i − 1 ≡ Θ ( n 2 ) O ≡ Θ (n 2 ) i=1 h mejor secuencia: (siendo n i i =1 h k = 2 k − 1 = 1 , 3 , 5 , 7 ,... potencia de 2) i i Mov. ∑ h QuickSort Coste Mejor Caso i = 9 × 4 − 9 × 2 + 1 Este algoritmo usa las propiedades Comp. de montón para ordenar un vector en dos veces: construyendo un montón en la primera mitad primero y kuego invirtiendo el vector para aplicar el mismo Mov. método. C min = 2n(log i ) C max = 2 n log n − O ( n ) C prom = 2 n log n − O ( n log(log n )) ¿?????? ¿?????? ¿?????? Este algoritmo es una combinación Observaci El algoritmo es de naturaleza recursiva, así que se usan la famosas fórmulas descritas en [Peña ] del intercambio directo y de divide ones y vencerás. Elige un “pivote” al azar y recorre el vector desde la Coste n T ( n ) = O ( n log ( ) 2T n + cn derecha buscando elementos asintótico T n = 2 ( ) ( 1 ) T n T c i = O(n 2 ) = + mayores que el pivote para = O n log n i=2 intercambiarlos con los valores menores a la izquierda del pivote. Hasta encontrarse el incremento y el decremento y luego vuelve a comenzar con cada una de las particiones. ( ( ) ) ∑ n)