Universidad de San Carlos de Guatemala Escuela de Ingeniería en Ciencias y Sistemas, Facultad de Ingeniería Introducción a la programación y computación 2, 1er. Semestre 2026
SISTEMA DE ESTRUCTURA DE GESTION DE CATALOGOS DE UNA LIBRERIA
202403488 – Eldrick Aldair Hernández Bautista
Resumen
El crecimiento constante de la información en sistemas comerciales exige mecanismos de almacenamiento y búsqueda que no dependan de recorridos secuenciales costosos. Este ensayo expone la implementación de un catálogo digital de librería mediante estructuras de datos no lineales, específicamente árboles jerárquicos n-arios para organizar categorías y subcategorías, y árboles AVL para almacenar libros ordenados por su código ISBN dentro de cada categoría. Se abordan las principales posturas técnicas adoptadas: el uso de tipos de dato abstracto propios en lugar de colecciones nativas del lenguaje, la aplicación del paradigma de programación orientada a objetos, y la generación de reportes visuales mediante la herramienta Graphviz. El impacto de esta solución se refleja en tiempos de búsqueda, inserción y eliminación de orden logarítmico, incluso cuando el catálogo crece considerablemente. Se concluye que las estructuras jerárquicas y balanceadas constituyen una alternativa robusta frente a las listas lineales para escenarios donde la escalabilidad y la eficiencia son prioritarias. Palabras clave
Arboles AVL, árboles balanceo, catálogo digital
jerárquicos,
lineales,
Abstract
The constant growth of information in commercial systems demands storage and search mechanisms that do not rely on costly sequential traversals. This essay presents the implementation of a digital library catalog through non-linear data structures, specifically n-ary hierarchical trees to organize categories and subcategories, and AVL trees to store books ordered by their ISBN code within each category. The main technical positions adopted are addressed: the use of custom abstract data types instead of native language collections, the application of the object-oriented programming paradigm, and the generation of visual reports through the Graphviz tool. The impact of this solution is reflected in logarithmic-order search, insertion, and deletion times, even as the catalog grows considerably. It is concluded that hierarchical and balanced structures constitute a robust alternative to linear lists in scenarios where scalability and efficiency are priorities..
Universidad de San Carlos de Guatemala Escuela de Ingeniería en Ciencias y Sistemas, Facultad de Ingeniería Introducción a la programación y computación 2, 1er. Semestre 2026
a. La limitación de las estructuras lineales en catálogos extensos Keywords
AVL trees, hierarchical trees, non-linear structures, balancing, digital catalog
Introducción
Los sistemas que administran grandes volúmenes de información, como los catálogos de librerías con miles de títulos, enfrentan un reto central: localizar un registro específico sin recorrer exhaustivamente toda la colección. Las estructuras lineales tradicionales, si bien sencillas de implementar, degradan su rendimiento conforme aumenta el volumen de datos. Este ensayo tiene como propósito exponer cómo la aplicación de estructuras de datos no lineales — árboles jerárquicos y árboles AVL— permite resolver esta problemática de manera eficiente, organizando la información de forma similar a una biblioteca física dividida en secciones y estanterías. Se plantea la interrogante de cómo equilibrar la organización jerárquica de categorías con la necesidad de búsquedas rápidas por identificador único, y se presenta la solución adoptada mediante el desarrollo de tipos de dato abstracto propios, sin recurrir a colecciones nativas del lenguaje de programación utilizado.
Desarrollo del tema
Cuando la cantidad de registros crece de manera significativa, las listas simples o dobles requieren, en el peor de los casos, revisar cada uno de sus elementos para localizar un dato específico, lo que representa un costo de tiempo lineal O(n). En un catálogo con más de cien mil libros, esta limitación se traduce en tiempos de respuesta inaceptables para el usuario final. Por ello, se optó por estructuras no lineales que permiten descartar grandes porciones del conjunto de datos en cada comparación.
Este problema se agrava cuando se consideran operaciones combinadas de búsqueda, inserción y eliminación, ya que cada una de ellas, ejecutada sobre una lista lineal, conserva el mismo costo asintótico sin importar si los datos están ordenados o no —salvo que se implemente una búsqueda binaria sobre un arreglo ordenado, lo cual introduce sus propias limitaciones al momento de insertar o eliminar elementos, pues exige desplazar posiciones completas de memoria. Adicionalmente, una librería real no solo necesita localizar un libro por su código, sino también conocer su ubicación dentro de una jerarquía de categorías, tarea para la cual una lista simple carece de mecanismos naturales de representación. Estas dos necesidades —búsqueda eficiente y organización jerárquica— son las que orientan la selección de estructuras de árbol como solución técnica.
b. Árboles jerárquicos n-arios para la organización de categorías
Universidad de San Carlos de Guatemala Escuela de Ingeniería en Ciencias y Sistemas, Facultad de Ingeniería Introducción a la programación y computación 2, 1er. Semestre 2026
Para representar la relación entre categorías y subcategorías se implementó un árbol jerárquico donde cada nodo puede tener un número variable de hijos, replicando la lógica de un sistema de carpetas o un organigrama. Cada nodo almacena el nombre de la categoría, una lista enlazada propia de subcategorías —mantenida en orden alfabético para cumplir con el requisito de presentación ordenada— y una referencia a un árbol AVL que contiene los libros pertenecientes directamente a esa categoría. Esta composición permite que la búsqueda de una categoría específica se realice recorriendo únicamente la rama correspondiente del árbol, en lugar de examinar la totalidad de la estructura.
A diferencia de un árbol binario tradicional, donde cada nodo admite como máximo dos descendientes, la naturaleza n-aria de este árbol responde directamente a la realidad del dominio del problema: una categoría como "Ficción" puede dividirse en un número arbitrario de subcategorías —"Fantasía", "Terror", "Ciencia ficción", entre otras— sin que exista una restricción natural sobre esa cantidad. Cada categoría raíz constituye el punto de entrada a una rama independiente del catálogo, y el recorrido recursivo de esta estructura es lo que permite generar tanto el listado textual de la jerarquía completa como las representaciones gráficas mediante Graphviz, ya sea desde la raíz global o desde una subcategoría particular seleccionada por el usuario. Esta flexibilidad de visualización parcial resulta especialmente útil cuando el catálogo alcanza dimensiones considerables y no resulta práctico desplegar la totalidad de las categorías en una sola imagen.
c. Árboles AVL para el almacenamiento eficiente de libros
Dentro de cada categoría, los libros se organizan mediante un árbol binario de búsqueda autobalanceado (AVL), ordenado por el código ISBN. La propiedad fundamental de esta estructura es que, tras cada inserción o eliminación, se verifica el factor de balance de los nodos afectados y, de ser necesario, se aplican rotaciones simples o dobles para mantener la diferencia de altura entre subárboles izquierdo y derecho en un máximo de uno. Esta garantía asegura que las operaciones de búsqueda, inserción y eliminación se ejecuten en tiempo O(log n), independientemente del orden en que se carguen los datos.
Esta característica resulta crítica en el contexto del proyecto, ya que los archivos de entrada no garantizan ningún orden particular en la secuencia de libros registrados; sin un mecanismo de autobalanceo, una carga masiva de ISBN consecutivos podría degenerar el árbol en una estructura equivalente a una lista enlazada, perdiendo por completo la ventaja logarítmica que se busca obtener. Asimismo, el recorrido in-orden del árbol AVL permite obtener de manera natural el listado de libros ascendente por ISBN, sin necesidad de aplicar un algoritmo de ordenamiento adicional, y los nodos extremos del árbol —el más a la izquierda y el más a la derecha— corresponden directamente al libro de menor y mayor código dentro de esa categoría, lo cual simplifica considerablemente la implementación de esa funcionalidad.
Universidad de San Carlos de Guatemala Escuela de Ingeniería en Ciencias y Sistemas, Facultad de Ingeniería Introducción a la programación y computación 2, 1er. Semestre 2026
d. Arquitectura del sistema y generación de reportes
modificarse o probarse de forma independiente sin afectar el comportamiento del resto de la aplicación. Conclusiones
El sistema se desarrolló bajo el paradigma de programación orientada a objetos, separando responsabilidades en clases específicas para cada tipo de dato (libros, nodos de árbol, listas de categorías, entre otras), evitando el uso de estructuras genéricas o colecciones nativas del lenguaje. La lectura de datos se realiza a partir de archivos de configuración en formato XML, permitiendo cargas incrementales sin perder la información previamente registrada. Adicionalmente, se integró la herramienta Graphviz para generar representaciones gráficas tanto del árbol jerárquico de categorías como del árbol AVL de libros, facilitando la comprensión visual de la organización interna del catálogo.
Cada clase del sistema cumple una única responsabilidad bien delimitada: la clase encargada de la lectura de archivos traduce el contenido XML en llamadas sobre las estructuras de árbol, sin conocer los detalles internos de cómo se almacenan o balancean los datos; la clase que centraliza la lógica del catálogo actúa como intermediaria entre la interfaz de usuario y las estructuras de datos, exponiendo operaciones de alto nivel como registrar, eliminar o buscar; y la clase generadora de reportes se limita a recorrer las estructuras ya construidas para producir el archivo de descripción gráfica que posteriormente Graphviz convierte en una imagen. Esta separación de responsabilidades, sumada al desarrollo de una interfaz web mediante el patrón Modelo-Vista-Controlador, permite que el sistema sea mantenible y que cada componente pueda
La implementación de árboles jerárquicos y árboles AVL demuestra que las estructuras de datos no lineales constituyen una solución idónea para sistemas donde el volumen de información y la necesidad de búsquedas eficientes son factores críticos. El uso de tipos de dato abstracto desarrollados por el propio programador, en lugar de colecciones predefinidas del lenguaje, refuerza la comprensión de los mecanismos internos de estas estructuras y su comportamiento ante operaciones de inserción, búsqueda y eliminación. Queda abierta la posibilidad de explorar estructuras adicionales, como árboles B o tablas hash, para escenarios donde el volumen de datos supere ampliamente los límites manejados en este proyecto.
Referencias bibliográficas
Cormen, T. H., Leiserson, C. E., Rivest, R. L., & Stein, C. (2009). Introduction to Algorithms (3rd ed.). MIT Press. Date, C. J. (1991). An Introduction to Database Systems. Addison-Wesley Publishing Company, Inc. Weiss, M. A. (2013). Data Structures and Algorithm Analysis in C# (4th ed.). Pearson.
Anexos
Semana Semana 1
Actividad Diseño de la arquitectura general del sistema. Implementación de la
Universidad de San Carlos de Guatemala Escuela de Ingeniería en Ciencias y Sistemas, Facultad de Ingeniería Introducción a la programación y computación 2, 1er. Semestre 2026
Semana 2
Semana 3
clase Libro. Desarrollo del árbol AVL (inserción, búsqueda, rotaciones de balanceo) para el almacenamiento de libros ordenados por ISBN. Desarrollo del árbol jerárquico n-ario para la organización de categorías y subcategorías, junto con las listas enlazadas propias utilizadas como estructuras auxiliares (sin recurrir a colecciones nativas del lenguaje). Creación del proyecto ASP.NET MVC y configuración de rutas. Implementación del lector de archivos XML para la carga incremental de categorías y libros. Desarrollo de la clase Catalogo como capa central de lógica de negocio, integrando las operaciones de búsqueda por ISBN, eliminación, obtención de libro con menor y mayor ISBN, y despliegue de la estructura jerárquica de categorías. Conexión inicial de estas funcionalidades con el controlador y las vistas de la interfaz web. Creación del proyecto ASP.NET MVC y configuración de rutas. Implementación del lector de archivos XML para la carga incremental de categorías y libros. Desarrollo de la clase Catalogo como capa central de lógica de negocio, integrando las operaciones de búsqueda por ISBN, eliminación, obtención de libro con menor y mayor ISBN, y
despliegue de la estructura jerárquica de categorías. Conexión inicial de estas funcionalidades con el controlador y las vistas de la interfaz web.
1.Diagrama de clases Conexión
2.1 Diagrama de Actividades
2.2 Diagrama de Actividades (consultas y reportes)