Sie sind auf Seite 1von 4

Algoritmos y Estructuras de Datos Curso 2007/08

Prctica 1. Estructuras de datos.

El Buscador Gutenberg

A. Contexto
El proyecto Gutenberg (http://www.gutenberg.org) contiene ms de 20.000 libros que pueden
ser accedidos de manera gratuita a travs de la red. Buscar por contenido en esta enorme base
es una caracterstica muy atractiva, aunque por ahora slo est disponible de forma experimental. Por ejemplo, la bsqueda de En un lugar de La Mancha puede tardar por encima de
los 20 segundos (aunque la segunda vez que se repita ir mucho ms rpido).
El objetivo de esta prctica es crear un buscador bibliogrfico por contenido, que permita encontrar de manera eficiente los prrafos y captulos de libros que incluyen ciertas palabras, ya
sea algunas de ellas (bsqueda con OR), todas ellas (bsqueda con AND), o las palabras seguidas en el mismo orden.

B. El Problema
Analizar, disear e implementar un buscador bibliogrfico por contenido. El programa admitir una serie de comandos, que se leern siempre de la entrada estndar, produciendo el resultado en la salida estndar. Los comandos admisibles son los siguientes:
Insertar un nuevo libro: indicando el ISBN, ttulo, autor, ao, nmero de captulos y
el contenido en s del libro. Los libros se dividen en captulos, y estos a su vez en prrafos. El formato de entrada se describe ms adelante.
Buscar palabras con AND: listar todos los prrafos de libros donde aparecen todas
las palabras dadas. Las palabras se definen como cualquier sucesin de una o ms letras delimitadas por caracteres que no sean letras.
Buscar palabras con OR: listar todos los prrafos de libros donde aparecen algunas
de las palabras dadas.
El programa diseado deber cumplir los siguientes requisitos:
Las bsquedas deben ser independientes de maysculas/minsculas y de las tildes.
Se requiere que no se pierda ni una sola bsqueda para aprobar la prctica.
El programa debe estar bien diseado para conseguir la mxima eficiencia de tiempo y
de memoria (con especial hincapi en lo primero). Por ejemplo, no ser admisible almacenar y recorrer todos los libros para cada bsqueda nueva.

C. Comandos adicionales
Estos comandos adicionales sern voluntarios para los alumnos que se acojan al sistema de
evaluacin continua. Para los restantes, sern obligatorios.
Eliminar un libro dado: se deben suprimir todas las referencias al libro y a las palabras que contiene, liberando la memoria correspondiente.
Buscar palabras CONSECUTIVAS: mostrar todos los prrafos de libros donde aparecen todas las palabras dadas y de forma consecutiva.
Buscar en libros y en captulos: similar a las bsquedas con AND y con OR, pero en
captulos o libros completos; es decir, buscar los captulos (o los libros) que tenga todas, o algunas, de las palabras dadas. Se deber evitar la duplicacin de informacin,
en relacin a la bsqueda de prrafos.
Buscar todos los libros de un autor: dado el nombre del autor, listar los libros del
mismo. Se debe usar una estructura que permita una consulta eficiente.

D. Formato de entrada
La entrada est compuesta de varios comandos. Todos los comandos estn en una lnea distinta, excepto la insercin, que ocupar varias. Los comandos admisibles son: i (para insertar), a
(bsqueda con AND), o (bsqueda con OR), s (salir). La entrada acabar siempre con un comando s. El formato de los comandos es el siguiente:
Hoja de descripcin de la Prctica 1

Pgina 1 de 4

Algoritmos y Estructuras de Datos Curso 2007/08


Prctica 1. Estructuras de datos.

El Buscador Gutenberg

Insertar: despus de la i aparecern tres enteros, B, A y C (separados por espacios)


que indican el ISBN del libro (suponer un entero de 9 dgitos), el ao de publicacin y
el nmero de captulos del libro. La siguiente lnea contiene el ttulo del libro, y la siguiente el nombre del autor. A continuacin vienen los captulos. Cada captulo puede
ocupar una o varias lneas, y acaba con la palabra clave FinDeCapitulo, que no aparecer en el texto (y es independiente de maysculas, minsculas o tildes). En cada
captulo puede haber uno o ms prrafos. Los prrafos estn separados por una lnea
en blanco. Tanto los prrafos como los captulos se numeran automticamente a partir
de 1. Este puede ser, por ejemplo, un comando i vlido:
i 283930182 2007 2
El Quijote (versin mini)
GinesGM & Miguel de Cervantes
Captulo 1. QUE TRATA DE LA CONDICIN Y EJERCICIO DEL QUIJOTE
En un lugar de la Mancha, de cuyo nombre no quiero acordarme...
(ojo, algunos listillos dicen no puedo acordarme), viva el Quijote. FinDeCapitulo
Captulo 2. QUE TRATA DE LO QUE VER EL QUE LO LEYERE
- Aqu fue Troya! Aqu mi desdicha, y no mi cobarda, se llev mi gloria!
- Vayan a estudiar a Salamanca. Todo es burla sino estudiar y ms estudiar
FINDECAPITULO

Bsqueda con AND: despus de la letra a, aparecer una lista de una o ms palabras
que se buscan. Por ejemplo:
a el LISTILLOS del quijote l
a llevo la Condicin

Bsqueda con OR: despus de la letra o, aparecer una lista de una o ms palabras
que se buscan. Por ejemplo:
o condicion
o TROYANO TROYA

E. Formato de salida
Despus de cada comando, se mostrar por pantalla informacin sobre el resultado del mismo. La salida tendr el siguiente formato:
Insertar: la salida sern 5 lneas, que contendrn: (1) el ttulo del libro insertado, (2)
el autor y ao (separados por coma), (3) el nmero total de captulos ledos, (4) el nmero total de prrafos, y (5) el nmero total de palabras, ya sean repetidas o no. Por
ejemplo, la salida para el ejemplo de arriba ser:
El Quijote (versin mini)
GinesGM & Miguel de Cervantes, 2007
2 captulos
3 prrafos
70 palabras

Bsqueda con AND y con OR (tambin las adicionales): los resultados irn numerados de forma consecutiva, y para cada uno se indicar: el ttulo, el autor(es), el ao,
el nmero de captulo, y el nmero de prrafo, separados por comas. La lista estar ordenada por ISBN, y en caso de empate por nmero de captulo y nmero de prrafo
(siempre de menor a mayor). La ltima lnea contendr el nmero total de resultados.
Por ejemplo, el resultado de la bsqueda o capitulo en el ejemplo de arriba sera:
1. El Quijote (versin mini), GinesGM & Miguel de Cervantes, 2007, Cap. 1, par. 1
2. El Quijote (versin mini), GinesGM & Miguel de Cervantes, 2007, Cap. 2, par. 1
Total: 2 resultados

Se deja libertad a los alumnos para decidir el formato de los comandos adicionales no especificados (eliminar libro y buscar los libros de un autor).
Hoja de descripcin de la Prctica 1

Pgina 2 de 4

Algoritmos y Estructuras de Datos Curso 2007/08


Prctica 1. Estructuras de datos.

El Buscador Gutenberg

F. Fases de desarrollo
Para una correcta resolucin de la prctica, los alumnos debern cumplir las siguientes fases
en los plazos sealados abajo. El cumplimiento de estas fases se validar en el juez on-line de
la asignatura, superando los problemas indicados entre parntesis. Adems, se entregar una
breve memoria del trabajo realizado en cada fase. Las fases de desarrollo son:
F1. Hasta el 12 de noviembre: resolver los problemas bsicos referentes a normalizar un
texto (002 y 003), separar las palabras (004), definir el tipo Libro (005), el tipo Aparicin (006), y el tipo ListaEntero de listas ordenadas de enteros (007).
F2. Hasta el 5 de diciembre: implementar el tipo Lista<T> de listas genricas ordenadas,
instanciado a listas de apariciones (008), y un tipo HashLibros de diccionarios representados con tablas de dispersin (abierta o cerrada) de enteros en libros (204). Opcionalmente, y como pasos previos al ejercicio 204, se pueden implementar tablas de dispersin de cadenas en naturales (202) y luego de forma genrica, Hash<C, V> (203).
F3. Hasta el 21 de diciembre: crear un tipo diccionario implementado con rboles (ya sea
trie, AVL o B) donde la clave son cadenas y el valor es genrico, Arbol<V> (301).
Instanciar a Arbol<Lista<Aparicin> >, y crear la operacin cargarLibro, que mete
las apariciones de palabras de un libro en el rbol (302).
F4. Hasta el 18 de enero: definir las operaciones buscarAND (303) y buscarOR (304), y
completar la prctica (305). Entrega final de la memoria de la prctica.
En todos los casos, se podrn realizar los envos al juez on-line hasta las 14:30:00 del da sealado, siendo la entrega de la memoria a lo largo de todo el da.
Los grupos que cumplan todos los plazos sealados y de forma satisfactoria, tendrn un +1 en
la nota final de la prctica. Los grupos que incumplan uno de los plazos, tendrn que hacer
uno de los comandos adicionales descritos en el apartado C (a elegir); los que incumplan dos
plazos harn dos adicionales; y los que incumplan tres plazos harn tres adicionales. Los
alumnos que entreguen la prctica en junio o en la convocatoria de septiembre, debern hacer
todos los comandos adicionales.

G. Documentacin
La documentacin a entregar durante las fases intermedias de desarrollo (F1, F2 y F3) contendr: una descripcin somera de los aspectos ms relevantes del trabajo realizado, el listado
del cdigo, y en su caso, una indicacin de los envos realizados al juez on-line.
La documentacin final (fase F4) contendr los siguientes apartados:
1. Portada. Nombre de los alumnos y e-mail de cada uno.
2. Anlisis del problema. Encontrar los tipos abstractos que aparecen en el problema, y
en qu partes aparecen. Analizar las diferentes alternativas que se presentan para la
implementacin de esos tipos.
3. Diseo de la aplicacin. Mostrar un esquema grfico global de la estructura de tipos
de datos existentes. Detallar la descomposicin modular del programa, qu mdulos
existen, cul es la responsabilidad de cada uno y la relacin de uso. Documentar cualquier otra decisin de diseo que pueda resultar de inters.
4. Listado del cdigo. Incluyendo el fichero makefile necesario para compilar.
5. Informe de desarrollo. Describir cmo ha sido la coordinacin y el reparto del trabajo entre los miembros del grupo. Rellenar las tablas de dedicacin personal en las distintas fases del trabajo. Se utilizarn tablas como las explicadas en las pginas 37 y
350 del texto gua, rellenadas con el mayor rigor posible.
6. Conclusiones y valoraciones personales.

Hoja de descripcin de la Prctica 1

Pgina 3 de 4

Algoritmos y Estructuras de Datos Curso 2007/08


Prctica 1. Estructuras de datos.

El Buscador Gutenberg

H. Evaluacin de la prctica
H.1. Obligatorio
Para aprobar la prctica se requiere que:
- El programa se pueda compilar sin errores en las mquinas del laboratorio de prcticas,
en la fecha y hora en la que se realice la entrevista final con los alumnos. En particular, el
programa estar escrito en C++, y el cdigo se deber compilar en Linux.
- El programa debe funcionar correctamente, sin colgarse y produciendo resultados correctos para el conjunto de pruebas que se determinen. Para ello, el profesor puede usar
(pero no est limitado a) los casos de prueba incluidos en el juez on-line de la asignatura.
- La memoria de la prctica debe contener todos los puntos indicados en el apartado G, y
debe ser entregada en el plazo que se establezca. La documentacin entregada no debe
contener faltas de ortografa (incluida la omisin de tildes)!

H.2. Criterios de valoracin


La prctica se puntuar de acuerdo con los siguientes criterios de calidad del software:
- Anlisis y diseo. Se valorar la calidad y adecuacin del diseo y el anlisis realizados,
y la dedicacin a estas fases previas a la implementacin. Se deben encontrar los tipos
abstractos que aparecen, e implementarlos usando clases, eligiendo las estructuras ms
adecuadas.
- Modularidad. La funcionalidad debe estar bien repartida entre los mdulos. Debe estar
claro el sentido y la responsabilidad de cada mdulo. Se debe respetar el principio de
ocultacin de la implementacin.
- Uso del lenguaje. El cdigo deber ser claro, legible, robusto y eficiente. No crear procedimientos muy largos y complejos. Se valorar el uso de clases genricas (plantillas) y
precondiciones / postcondiciones (asertos).
- Seguimiento continuo. El correcto cumplimiento de las fases de desarrollo, marcadas en
el apartado F, ser un aspecto a favor en la evaluacin de la prctica. Se desaconseja la
posibilidad de no seguir los plazos a cambio de realizar comandos adicionales.

H.3. Otras cuestiones


La prctica se deber realizar preferiblemente en grupos de dos alumnos. De forma extraordinaria se permiten grupos de 1 alumno, pero no se prev ninguna reduccin del trabajo para
los mismos.
Para realizar pruebas y para la verificacin de las fases de desarrollo, los profesores dejarn
en la pgina web del juez on-line (http://dis2.um.es/~mooshak), dentro del concurso AED:
Practicas, los problemas mencionados en el apartado F. Cada alumno dispondr de un login
y password para acceder a este sistema; el grupo deber elegir y utilizar una de las cuentas
para hacer los envos al juez.
La fecha de entrega definitiva de esta prctica coincide con la entrega de la ltima fase, es
decir, el 18 de enero de 2008. La forma de hacer las entregas (en papel, por email, a travs de
SUMA, etc.) lo indicar cada profesor de prcticas.

AVISO IMPORTANTE
Las prcticas de todos los grupos, en todas las convocatorias y titulaciones, sern sometidas a
un sistema computerizado de deteccin de plagios (ver http://aps.arxiv.org/PS_cache/cs/
pdf/0703/0703134v4.pdf). Copiar la prctica de otro grupo supondr el suspenso fulminante
de la asignatura en la convocatoria correspondiente, para todos los grupos implicados.

Hoja de descripcin de la Prctica 1

Pgina 4 de 4

Das könnte Ihnen auch gefallen