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)

Documentos relacionados