Está en la página 1de 7

Universidad Autónoma Gabriel Rene Moreno

Facultad de Ciencias Exactas y Tecnología.


Carrera de Ingeniería Informática

SEMINARIO DE GRADO 2008

Guía de Ejercicios para el Modulo

“ALGORITMOS Y ESTRUCTURAS DE DATOS”

Elaborado por:
Ing. Ubaldo Perez Ferreira

Santa Cruz de la Sierra, Agosto 2008


1. Dado el siguiente Árbol, describir toda la terminología básica.

A Nivel 0

B Nivel 1 C

D E F G
Nivel 2

2. Definir la especificación Formal del TDA Árbol.


3. En los Árboles Binarios que es el Factor de Equilibrio.
4. Que es un Árbol Binario Equilibrado.
5. Que es un Árbol Binario Perfectamente Equilibrado.
6. Que es un Árbol Binario Completo.
7. Que es un Árbol Binario Incompleto.
8. Cuantos nodos hay en cualquier nivel k de un Árbol Binario Completo.
9. Cuantos nodos en total hay en un Árbol Binario Completo si la altura es h.
10. Que es un Árbol Binario Degenerado.
11. Cuando un Árbol Binario es equivalente a una Lista Enlazada Simple.
12. Que es el recorrido de un árbol.
13. Que tipos de recorridos de árbol existen.
14. Cual es la diferenci a entre recorrido en profundidad y recorrido en anchura en un Árbol
Binario.
15. Explicar el recorrido PreOrden, EnOrden y PostOrden.
16. Como implementaría un Árbol Binario Utilizando Estructuras Estáticas (Array).
17. Que es un Árbol Binario de Búsqueda.
18. Cual de los tipos de recorrido (PreOrden, EnOrden y PostOrden) en un Árbol Binario de
Búsquedas se debe utilizar para mostrar los valores de los nodos del árbol ordenado de
manera ascendiente.
19. El resultado de recorrer un Árbol Binario de Búsqueda en post-orden es el siguiente: 7,
21, 10, 30, 25, 68, 60, 85, 75, 50 Dibuja el árbol correspondiente.
20. Si se busca el número 363 en un ABB que contiene números del 1 al 1000 ¿cuál de las
siguientes secuencias de nodos no puede ser la secuencia de nodos examinada?

2
21. Decir qué resultado se obtiene para las siguientes expresiones (mostrando los pasos
para la obtención del resultado), utilizando la especificación del TAD Cola(elemento):

frente (inserta (4, inserta (5, crearCola) ) )


esVacíaCola (resto (inserta (a, crearCola) ) )
inserta (frente (crearCola), crearCola)

22. Responder las siguientes preguntas.

a) ¿Cuántas aristas tiene un árbol con N


nodos?
b) ¿Longitud de A a D?
c) ¿Longitud de C a K?
d) ¿Longitud de B a N?
e) ¿Longitud de B a B?
f) ¿Profundidad de A, B, C y F?
g) ¿Altura de B, C, I, F y del árbol?

23. Responder las siguientes preguntas.

a) ¿Descendientes de E?
b) ¿Descendientes propios de C?
c) ¿Ascendientes de E?
d) ¿Ascendientes propios de I?
e) ¿Tamaño de B?
f) ¿Tamaño de F?
g) ¿Tamaño del árbol?

24. Suponiendo la especificación formal para el TAD Entero (con las operaciones: cero,
sucesor, esCero, igual, suma), escribir la sintaxis y la semántica correspondientes a una
operación esMenor, que comprueba si un entero es menor (estrictamente) que otro.

25. Cual es la diferencia entre un algoritmo y programa.

26. Dada una lista circular A (desordenada y con elementos repetidos) se quiere que usted
obtenga una lista circular B que contenga los elementos que están en A sin repeticiones,
seguidos por el número de ocurrencias. La lista A puede ser modificada. Trabaje suponiendo
que la clase lista circular NO tiene cola a efectos de los métodos a programar.

3
Por ejemplo, si A=(3,4,5,3,3,2,1,1,5,6,3,2,7,9,0,1,1,0,1), su algoritmo debe retornar la lista
B=(3,4,4,1,5,2,2,2,1,5,6,1,7,1,9,1,0,2). Los dos primeros elementos de la lista significan que el 3
aparece 4 veces, los siguientes que el 4 aparece una vez, que el 5 aparece 2 veces y asi
sucesivamente.

27. Que es un Nodo.


28. Como se puede implementar un nodo utilizando estructuras estáticas (arreglos).
29. Como se puede implementar un nodo utilizando estructuras dinámicas (punteros).
30. Que es una lista enlazada.
31. Que tipos de lista enlazadas conoce.
32. Que operaciones se pueden realizar con una lista enlazada
33. Explicar Gráficamente las siguientes operaciones sobre listas enlazadas simples.
a. Inserción un nodo en la lista.
b. Eliminar un nodo de la lista.
34. Que operaciones se pueden realizar con una lista enlazada circular
35. Explicar Gráficamente las siguientes operaciones sobre listas enlazadas circular.
a. Inserción un nodo en la parte intermedia de la lista.
b. Eliminar de un nodo de la lista.
36. Que operaciones se pueden realizar con una lista doblemente enlazada.
37. Explicar Gráficamente las siguientes operaciones sobre listas doblemente enlazadas.
a. Inserción un nodo en la parte intermedia de la lista.
b. Eliminar de un nodo de la lista.
38. Hallar el tiempo y grado de complejidad de:

1. i=2
2. while i < m
3. i=i+1
4. if p2(m) = i then
5. print i
6. else
7 j=0
8 while j <= m
9 j=j+1
10 print i*j
11 end while
12 end if
13 end while
Considerar que O(p2(n))=n2 y que 1/2 del if son verdaderas.

39. Dado el siguiente algoritmo que ordena la lista A[] de forma ascendente:

1. for i=1 to n-1 a) Realizar los cambios necesarios para que


2. for j=1 to n-1 el algoritmo ordene la lista A[] de forma
3. if A[j] > A[j+1] descendente
then b) Realizar los cambios necesarios para
4. mejorar el algoritmo original.
Aux=A[j] c) Hallar el tiempo y grado de complejidad del
5. algoritmo mejorado para el mejor caso y
A[j]=A[j+1] para el peor caso.
6.
A[j+1]=Aux 4
40. Sobre un Grafo (dirigido y Pesado) representado por Listas, implemente el
procedimiento, que devuelva el valor del camino mas corto entre el vértice A y el vértice Z.
41. Describir la Especificación Formal del TDA Polinomio.
42. Implementar las siguientes operación del TDA Polinomio utilizando arreglos:
a. COEF(Poly,exp) Æ cohef, //Devuelve el coeficiente de un termino
b. ATTACH(Poly,cohef, exp) Æ Poly //Adiciona un termino al polinomio
c. REM(Poly,cohef, exp) Æ Poly //Remover un termino del Polinomio
43. Implementar la operación SUMA del TDA Polinomio utilizando arreglos::
a. SUMA(Poly, Poly) Æ Poly, // Suma de Polinomios
44. Que es una Matriz Sparce y cual es la forma de representar una matriz Sparce.
45. Un Sistema Operativo necesita controlar la memoria libre y la que esta siendo usada por
algún proceso. ¿Cuál seria la mejor representación?, como seria la implementación para las
operaciones: Obtener Cantidad de Memoria Libre, pedir memoria y liberar un bloque de
memoria.
46. Que condición debe cumplir un algoritmo recursivo.
47. Escribir un algoritmo recursivo para la búsqueda binaria en un vector.
48. Escribir un algoritmo recursivo para la búsqueda de un elemento en un Árbol Binario.

49. Se desea almacenar en el vector V(m) dos Pilas S1 y S2, se utilizara dos puntero Top1 y
Top2 para cada pila respectivamente, tal como se muestra en el esquema siguiente:

Implemente las funciones Add(S,x) y Delete(S)


Cuando están vacía las Pilas?
Cuando están llenas las Pilas?

50. Se desea almacenar en el vector V(m) n Pilas S1, S2, …, Sn , Cada Pila Si tendra un
tamaño de │m/n│.

Implemente las funciones Add(S,x) y Delete(S)


Cual es el espacio libre en cualquier Pila Si ?
Cual es el espacio disponible de todo el Vector V ?
Cuantas celdas ocupadas existen en V ?
Cuando esta vacia una Pila Si ?
Cuando están llenas una Pila Si ?

5
51. Que es el Análisis de Algoritmos?

52. Hallar el tiempo y grado de complejidad de:


a) b)
1. Read(x,n) 1. Read(x,n)
2. p = n + 1 2. p = n + 1
3. i = 1 3. i = 1
4. while i ≤ n and p = n + 1 4. while i ≤ n and x ≠ V[i]
5. if x = V[i] then 5. i=i+1
6. p=i 6. end while
7. end if
8. i = i + 1 x ≠ V[i] es verdadero en 2/3
9. end while

El IF es verdadero en 1/2

53. Escriba la Especificación Formal del TAD Pila e implemente las siguientes funciones
utilizando un vector V[n].

long(p) que calcule el numero de elementos de una pila p.


desapila(p, n) que elimine los últimos n elementos apilados en una pila p si los
hay.
inversa(p) que genere la inversa de una pila p.
fondo(p) que calcule el elemento del fondo de una pila p.
duplica(p) que duplique una pila p de forma que cada elemento de p aparezca
apilado dos veces seguidas conservando el mismo orden relativo que en p.
concatena(p, q) que genere la pila resultante de apilar en p los elementos de q
desde el fondo hacia la cima.
mezcla(p, q) que genere la pila resultante de ir apilando alternativamente los
elementos de p y q desde sus respectivos fondos hacia las cimas.

54. Responda las siguientes preguntas:


a. ¿Cuáles operaciones de una lista enlazada están negadas en una pila y por
qué?
b. Cuales son las operaciones básicas de una cola. Explíquelas.

55. Una matriz de M-columnas puede ser vista como M-pilas consecutivas, donde la
operación push de colocar un elemento en la pila, debería recibir el elemento a colocar y la
identificación de la pila j donde se desea introducir el elemento. Elabore el algoritmo que permita
implementar la operación push de una sucesión de M-pilas en un objeto matriz NxM.

56. Se ha realizado una encriptación de mensajes, de forma que el mensaje original


representado en una lista dinámica, se transforma en dos colas: una de caracteres y otro de
números naturales que representan posiciones.

Ejemplo: un examen

6
Mensaje original
U n e x a m e n

a e n e U x m
Cola de caracteres
n
6 4 2 8 1 5 7 3 9 Cola de posiciones

Construir un método DECODIFICAR que dada la cola de caracteres y la cola de


posiciones, reconstruya el mensaje original. No utilizar estructuras auxiliares.

57. Hacer un método que reciba una lista y una pila, el método deberá modificar la lista
original, eliminando las posiciones indicadas por cada nodo de la pila.

Lista -> 2 ->4 ->6 ->8 ->9 ->3

Pila -> 2 6

Lista nueva-> 2 ->6 ->8 ->9

58. Decimos que una pila P es un sombrero de otra pila Q, si todos los elementos de P están
en Q, en el mismo orden, y en las posiciones más próximas a la cima. La pila nula se considera
un sombrero de cualquier pila. Por ejemplo, en la siguiente figura, la pila A es un sombrero de la
pila B, pero no de la pila C. Escribir un método que dado dos pilas de números enteros, verifique
si la primera es sombrero de la segunda.

59. La Estructura de Datos denominada DoblePila se caracteriza porque aunque los


elementos pueden ser insertados solamente por la cima de la pila, pueden ser extraída tanto por
la cima como por el fondo de la pila, las operaciones básicas son las siguientes:
1. Create()ÆPila Crea una DoblePila
2. Add(Pila,x)Æ Pila Adiciona un elemento a la Pilas
3. DelTop(Pila)ÆPila Borra el elemento tope de la Pila
4. DelFon(Pila)ÆPila Borra el elemento del fondo de la Pila
5. IsVacia(Pila)ÆBoolean Es TRUE si la Pila esta vacía, de lo contrario es FALSE.
6. IsFull(Pila)Æ Boolean Es TRUE si la Pila esta llena, de lo contrario es FALSE

a) Implementar en el Lenguaje SPARK, las funciones básicas utilizando Vectores.


b) Indicar como pueden ser definidos los siguientes Axiomas, si P es una Pila y x es un
elemento de la Pila:
a. DelTop(Add(P,x)) ::= ?
b. DelFon(Add(P,x)) ::= ?