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