You are on page 1of 8

TAREA 3

ESTRUCTURA DE DATOS(2017-2)

Nombres: -Sebastián Navarrete


-Giancarlo Risopatrón
Enunciado Problema 1.
Suponga que existe un Sistema de Gestión de Bibliotecas que posee un catálogo de N
(N>0) libros en existencia.
Cuando un usuario desea saber si un libro está o no disponible, el sistema actual efectúa
una búsqueda secuencial por el código del libro, hasta encontrar el registro buscado e
informar de su disponibilidad. Si se tiene suerte, la respuesta tiene O(1), sino, puede llegar
a tener O(N).
Los registros no están ordenados, sino que se ingresan al repositorio de datos según vayan
llegando nuevas adquisiciones. Los códigos corresponden al estándar internacional de
codificación.
Luego, se ha pensado que es una buena idea mejorar este sistema de búsqueda a través
de la construcción de un programa que genere una búsqueda más rápida, utilizando
nuevas estrategias informáticas.
Se pide: Construir en Java un programa que permita:
a) Leer un archivo con los registros de los libros existentes en biblioteca con el formato
indicado.
b) Efectuar una búsqueda de libros por código sobre un ABB generado a partir de los datos
de entrada.
c) Efectuar una búsqueda de libros por nombre de Autor sobre un ABB generado a partir
de los datos de entrada.
d) Efectuar una búsqueda de libros por Título sobre un ABB generado a partir de los datos
de entrada.
e) Generar reportes informando del tiempo de respuesta de cada búsqueda en
comparación al tiempo consumido por la búsqueda secuencial del mismo elemento; se
debe considerar todas las búsquedas efectuadas en el tiempo de uso de la aplicación.
Análisis Problema 1.
Para ayudar a facilitar la resolución del problema en cuestión, los datos encontrados,
posteriormente de ser leídos del archivo de texto en cuestión, son ingresados a un
arreglo, así, al recorrerlo se añadirá a sus nodos correspondientes, los cuales tienen
definidas ya las variables dentro de una subclase “Libro” dentro de este, que permitirá el
almacenamiento diferenciado del título, autor y códigos correspondientes, luego logrará
el almacenamiento dentro del árbol.
La búsqueda mediante ABB facilitará en cuanto a los tiempos y gastos de memoria, pues
permitirá que mediante la clave a buscar, se logre la disminución de la cantidad de nodos
a recorrer según la jerarquía del carácter.

Casos de prueba Problema 1.


Mediante del ingreso del siguiente archivo de texto:

Sólo al realizar una lectura correcta, se despliega el siguiente menú:

Al realizar una búsqueda sin utilizar el nombre completo, no será encontrado:


Por el contrario:

Conclusión Problema 1.
Como se puede apreciar, el método de estructuración de datos principalmente utilizado,
es decir, el ABB, puede facilitar en gran medida cuando se trata de realizar búsquedas en
grandes masas de información y disminuir las probabilidades de grandes usos de memoria
que ocurre cuando se debe realizar una búsqueda total del almacenamiento, pues su
método binario asegura al menos la mitad del gasto de recursos que en la búsqueda en
otras estructuras lineales.
Enunciado Problema 2.
Uno de los valores de la información agrupada en la estructura del nodo se denomina
prioridad (sinónimo de lo más importante), corresponde a un valor entero, y por
costumbre, el menor valor entero está asociado a la mayor prioridad.
Una cola de prioridad puede implementarse a través de un Heap (montículo), que es árbol
binario parcialmente completo, lo más balanceado posible; que en su nivel más bajo
(cerca de las hojas) cumple con la condición de que las hojas que le faltan están a la
derecha de las presentes. Además es parcialmente ordenado, ya que puede tener
elementos repetidos. Esta condición se logra estableciendo, que los nodos queden
ordenados según: valor (hijo) ≥ valor (padre); lo que determina que en la raíz se encuentra
el nodo con valor mínimo; y que la posición para insertar queda definida como la hoja de
menor nivel que falta.
Si el elemento a insertar tiene un valor menor que su padre, debe ascender por
intercambio. Si se descarta la raíz, para mantener la estructura, se reemplaza la posición
vacante en la raíz por la hoja ubicada más a la derecha, y si ésta es mayor que los hijos se
la hace descender por intercambio. Ambas operaciones tienen complejidad O(h), donde h
es la altura del árbol.
Análisis Problema 2.
En pos del manejo de información de llamadas, prioridades y el uso de ordenamiento de
tipo Heap, se almacenan los datos (luego de su respectivo ingreso) mediante un arreglo en
donde gracias al criterio de mínimo valor, las llamadas de mayor prioridad son puestas en
primer lugar, así, los nodos creados con la información de la llamada poseen un orden y
estructuración bajo este criterio.
El uso de colas (para clarificar el método de salida de las respectivas llamadas) permitirá
que las prioridades sean las primeras en salir y así la estructura no se desmorona.

Casos de prueba Problema 2:


Como se puede ver, esta imagen corresponde al menú del programa:
aquí se muestra eventualmente la inserción de la llamada por prioridad y contestada.

Finalmente muestra si hay llamadas en cola.


Conclusión Problema 2.
El método de ordenamiento Heap, independiente del tipo de estructura al cual es
aplicado, tiene gran uso cuando se trata de temas de prioridades, pues los criterios
determinados de discriminación posicionan automáticamente, ya sea reordenamiento
luego de una inserción o eliminación, los datos a favor del valor de ordenamiento
asociado al objeto en cuestión.
En este problema, esta implementación fue ideal, pues el valor de prioridad asignado a
cada llamada permite automáticamente la discriminación de estas y en el uso del arreglo
de forma de cola, lograr primero la atención de las prioridades para luego continuar hasta
la menos significativa.

You might also like