Está en la página 1de 4

Tarea 3: Parte A

Estructura de Datos y Algoritmos


Programa de Maestrı́a en Computación Aplicada
Instituto de Cálculo Aplicado - División de Postgrado
Facultad de Ingenierı́a - Universidad del Zulia
22 de noviembre de 2003

1. Métodos Elementales de Búsqueda


1. Implemente los siguientes algoritmos:

a) búsqueda secuencial.
b) búsqueda binaria.
c) búsqueda por interpolación.

2. Compare experimentalmente el desempeño de los algoritmos implemen-


tados por usted y el algoritmo de búsqueda binaria de la biblioteca
estándar de Java. Para ello utilice entre 100 y 1000 elementos. Justi-
fique su respuesta.

3. Agregue un método a su implementación de búsqueda binaria para que


soporte la búsqueda de registros con claves repetidas.

2. Árboles Binarios de Búsqueda


1. Dibuje el árbol binario de búsqueda que resulta de:

a) ingresar en un árbol inicialmente vacı́o los registros con las claves


CUESTIONFACIL, y
b) suprimir las letras A,S,N.

1
2. Escriba un programa que imprima en orden inverso las claves de un
árbol binario de búsqueda.

3. Modifique la implementación de árbol binario de búsqueda suministra-


da en clase de forma tal que soporte la inserción, búsqueda y eliminación
de registros con claves repetidas.

3. Hashing (Dispersión)
1. Dar el contenido de la tabla de dispersión que resulta cuando se insertan
las claves CUESTIONFACIL en una tabla inicialmente vacı́a de tamaño 13
mediante el uso de encadenamiento separado. Utilice h1 (x) = k mod 13
como función de dispersión de la k-ésima letra del alfabeto).

2. Dar el contenido de la tabla de dispersión que resulta cuando se insertan


las claves CUESTIONFACIL en una tabla inicialmente vacı́a de tamaño
13 mediante el uso de exploración lineal. Utilice h1 (x) = k mod 13 como
función de dispersión de la k-ésima letra del alfabeto).

3. Dar el contenido de la tabla de dispersión que resulta cuando se insertan


las claves CUESTIONFACIL en una tabla inicialmente vacı́a de tamaño
13 mediante el uso de doble dispersión. Utilice h1 (x) = k mod 13 como
función de dispersión de la k-ésima letra del alfabeto y h2 (x) = 1 +
k mod 11 como segunda función de dispersión).

4. Implemente una tabla hash que incluya como método para resolver
colisiones:

a) encadenamiento separado
b) doble dispesión

Las claves de la tabla hash serán del tipo (java.lang.Object).

5. Compare experimentalmente las implementaciones anteriores con la im-


plementación de la biblioteca estándar de Java (java.util.HashMap)
en cuanto rendimiento y uso de memoria. Describa detalladamente la
metodologı́a que empleará para realizar esta comparación.

2
4. Programación Dinámica
1. Adaptar el algoritmo para resolver el problema de las monedas (dado
en clase) para que funcione correctamente aun cuando el número de
monedas de una cierta denominación esté limitado (Problema Bono
para el Examen 1: 3 puntos).

2. Dada una palabra base (original) y una palabra compuesta (compound),


decida si la palabra compuesta es válida. Una palabra compuesta es
válida si y sólo si está conformada por una concatenación de prefijos
y/o sufijos de la palabra original. Es decir, la palabra compuesta es
válida si ésta puede ser particionada en N partes tales que cada parte
es igual a un prefijo o sufijo de la palabra original. Si la palabra es
inválida, el algoritmo debe retornar -1; en caso contrario debe retornar
el mı́nimo valor de N (Problema Bono para el Examen 2: 3 pun-
tos).

Nombre de la Clase: WordParts


Firma del Método: public static int partCount(String original,
String compound)
Restricciones:
• original contendrá entre 1 y 50 caracteres.
• compound contendrá entre 0 y 50 caracteres.
• Las palabras sólo contendrán letras mayúsculas del alfabeto
inglés.

Ejemplos

a) ANTIDISESTABLISHMENTARIANISM, ANTIDISIANISMISM,
resultado: 3. ANTIDISIANISMISM puede ser particionada en AN-
TIDIS, IANISM y ISM.
b) TOPCODERDOTCOM, TOMTMODERDOTCOM, resultado: 5
Las cinco cadenas son TO, M, T, M y ODERDOTCOM.
c) HELLO, HELLOHEHELLOLOHELLO, resultado: 5
d ) DONTFORGETTHEEMPTYCASE, , resultado: 0
e) BAAABA, BAAABAAA, resultado: 2

3
f ) ABBBAABABBBAABBABBABABBABAABBAABBBBBABBABABBABAABB,
BBBAABABBBAABBABBABABBABAABBAABBBBBABBABAB-
BABAABAA, resultado: 17

Nota del Profesor


Favor incluir programas de prueba que verifiquen el correcto funcionamien-
to de su código.

También podría gustarte