Skip to main content

Ensayo Proyecto 2 - 202104231

Page 1

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,2do. Semestre 2026

SISTEMA INTELIGENTE DE ADMINISTRACIÓN DE LIBRERÍAS MEDIANTE ÁRBOLES AVL Y N-ARIOS 202104231 – Diego Alejandro Luna de la Cruz

Resumen

Abstract

El presente proyecto detalla el desarrollo de un sistema inteligente diseñado para la administración de un catálogo con miles libros distribuidos en diversas sucursales. Se aborda la problemática de los tiempos prolongados de búsqueda al utilizar listas extensas, proponiendo una solución que organiza la información jerárquicamente, similar a una biblioteca física. La implementación se realiza en el lenguaje C# bajo el paradigma de programación orientada a objetos, utilizando Tipos de Dato Abstracto (TDAs) en memoria dinámica. Se desarrollaron Árboles N-arios para gestionar la jerarquía de las categorías y Árboles AVL para el almacenamiento de libros mediante su ISBN. Esta arquitectura permite mantener tiempos de búsqueda reducidos y eficientes incluso cuando el catálogo crece significativamente. Adicionalmente, se integra un módulo de lectura de archivos XML para la carga incremental de datos y el uso de Graphviz para la generación de reportes visuales de las estructuras. Se concluye que la restricción de no utilizar colecciones nativas fortalece la comprensión del manejo de memoria.

This project details the development of an intelligent system designed for the administration of a catalog with more than thousand books distributed across various branches. It addresses the issue of prolonged search times when using extensive lists, proposing a solution that organizes information hierarchically, similar to a physical library. The implementation is carried out in the C# language under the object-oriented programming paradigm, using Abstract Data Types (ADTs) in dynamic memory. N-ary Trees were developed to manage the hierarchy of categories, and AVL Trees for storing books via their ISBN. This architecture allows maintaining reduced and efficient search times even when the catalog grows significantly. Additionally, it integrates a reading module for XML files for incremental data loading and the use of Graphviz to generate visual reports of the structures. It is concluded that the restriction of not using native collections strengthens the understanding of memory management.

Palabras clave

Keywords

Catálogo, Árboles, XML, Graphviz, C#.

Catalog, Trees, XML, Graphviz, C#.


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,2do. Semestre 2026

Introducción

grandes áreas generales hasta libros individuales, garantizando que el usuario pueda registrar y localizar cualquier título rápidamente, y asegurando que el programa mantenga su alta velocidad sin importar cuánto crezca la colección en el futuro.

El manejo eficiente de grandes volúmenes de datos es un desafío en las ciencias de la computación. En una a. Árboles N-arios para la Jerarquía de cadena de librerías, la administración de más de Categorías La organización del catálogo se logró 100,000 libros representa un problema de mediante un modelo de árbol N-ario, referenciado a través de un esquema de apuntadores "Primer rendimiento cuando las búsquedas se realizan sobre Hijo" y "Siguiente Hermano". Esta arquitectura listas extensas y desorganizadas. Para resolver esto, permite que las áreas principales puedan derivar se solicitó el desarrollo de un sistema inteligente que en subcategorías internas ilimitadas. Además, el permita organizar el catálogo en categorías y modelo exige que las categorías se presenten subcategorías, emulando la disposición de las ordenadas alfabéticamente y que sus nombres sean completamente únicos. Cada categoría actúa estanterías en una biblioteca física. como un contenedor descentralizado que El objetivo principal de este ensayo es documentar el almacena su propia colección de libros en un modelado e implementación de dicha solución. Se árbol independiente. expone cómo la aplicación estricta de programación orientada a objetos y Tipos de Dato Abstracto b. Árboles AVL para Búsquedas de Libros Todo libro en el sistema posee un número ISBN que (TDAs) propios permite superar el reto técnico sin representa un valor entero único, además de título, utilizar colecciones nativas de C# (como List, Stack autor y categoría. Para cumplir con la restricción o Queue). El sistema facilita registrar libros, de mantener tiempos de búsqueda reducidos frente a miles de registros, se diseñó un Árbol localizarlos velozmente por su código único (ISBN), AVL (un árbol binario de búsqueda autoobtener los registros de menor o mayor valor y balanceable). Esta estructura aplica rotaciones generar la organización completa del catálogo. automáticas durante su inserción para evitar la asimetría, garantizando operaciones de registro, búsqueda y eliminación altamente eficientes. Desarrollo del tema Asimismo, este modelo facilita la obtención El núcleo de esta solución recae en la correcta inmediata de los extremos del catálogo (el libro elección e implementación de las estructuras de con el menor y mayor ISBN) y permite mostrar datos no lineales en C#. Para superar el reto de todos los registros ordenados ascendentemente administrar miles de libros y evitar las demoras que realizando un recorrido In-Order. provocan las listas extensas, el sistema se diseñó con el propósito de imitar fielmente la organización de c. Carga Incremental mediante XML Para poblar una biblioteca física. En lugar de utilizar el sistema de manera automática, se integró un herramientas automáticas del lenguaje, se módulo de manipulación de archivos XML. El construyeron modelos propios basados en el diseño maneja la lectura de forma incremental, paradigma de programación orientada a objetos y el permitiendo recibir múltiples archivos sin borrar manejo de memoria dinámica. Este enfoque los datos existentes. Durante este proceso, se estratégico permite estructurar el catálogo desde aplican validaciones estrictas: el sistema verifica


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,2do. Semestre 2026

globalmente que no existan números de ISBN duplicados antes de insertar un nuevo libro, y cancela la operación si se intenta registrar una obra en una categoría que no ha sido previamente declarada. d. Visualización Dinámica con Graphviz Como requerimiento visual para interpretar el catálogo, se implementó la herramienta de software Graphviz. Mediante el uso del lenguaje ".dot", el sistema genera un mapa estructural completo en forma de imágenes, donde se puede visualizar desde el árbol jerárquico N-ario de las categorías hasta el balanceo específico del árbol AVL de los libros dentro de una categoría puntual. e. Arquitectura MVC y Persistencia de Memoria Dinámica El sistema fue desarrollado utilizando el framework ASP.NET Core MVC en combinación con vistas Razor. Dado que las aplicaciones web no mantienen el estado de las variables entre peticiones HTTP, se estructuró una clase administradora principal llamada CatalogoManager. Para asegurar que el catálogo mantuviera los datos almacenados, esta clase fue configurada en la inicialización del proyecto como un servicio de tipo Singleton. Esta inyección de dependencias garantiza que la memoria dinámica persista activa y funcional durante toda la ejecución del servidor web, sirviendo como la raíz principal de todo el ecosistema de árboles. f. Jerarquía N-aria y Ordenamiento Alfabético Estricto La estructuración de categorías se modeló matemáticamente como un árbol N-ario, pero fue implementado en código mediante un árbol binario utilizando referencias lógicas de primer hijo y siguiente hermano. Para garantizar que las categorías se presenten siempre de forma ordenada, el algoritmo de inserción recorre los nodos hermanos utilizando la función de comparación de cadenas nativa del lenguaje, ubicando cada nueva categoría exactamente en su

posición alfabética correspondiente al momento de su creación. Adicionalmente, se programaron validaciones para cancelar operaciones inconsistentes, lo que evita la creación de una subcategoría si la categoría padre especificada no existe previamente en el sistema. g. Implementación de un Índice Global mediante Árboles AVL Originalmente, los libros residían exclusivamente dentro de los árboles AVL particulares de cada categoría. Sin embargo, para resolver la necesidad de buscar libros rápidamente por su código único y encontrar los extremos del catálogo sin conocer su ubicación exacta, se integró un índice global llamado LibrosGlobales. Este árbol AVL maestro contiene los apuntadores de todos los libros registrados, logrando que las operaciones de búsqueda global, eliminación y obtención del ISBN mínimo y máximo se resuelvan con una complejidad algorítmica de O(log n). Este índice también actúa como un estricto filtro de integridad durante la carga de archivos XML, ya que el sistema lo consulta obligatoriamente antes de cada inserción para bloquear cualquier intento de registrar un ISBN duplicado. h. Algoritmos de Renderizado Recursivo en Razor Una restricción fundamental del proyecto exigía no emplear en absoluto colecciones nativas de C#, tales como List o IEnumerable. Para poder enviar y procesar los miles de registros hacia la interfaz gráfica de usuario sin depender de estas herramientas, se integraron funciones recursivas locales escritas directamente en las vistas de Razor. Para listar los libros en orden ascendente, se diseñó una función que aplica un recorrido matemático In-Order directamente sobre el AVL global, imprimiendo el código HTML de una tabla de manera secuencial nodo por nodo. Del mismo modo, para simular visualmente el árbol de directorios de las categorías, se utilizaron llamadas recursivas sobre las referencias de hijos y hermanos para generar listas anidadas de forma


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,2do. Semestre 2026

dinámica. i. Automatización de Reportes con Graphviz La generación de representaciones gráficas del catálogo se resolvió mediante la construcción dinámica de sintaxis en lenguaje DOT. Los algoritmos del controlador web recorren las estructuras en memoria y concatenan las cadenas de texto necesarias para definir los grafos tanto de las categorías N-arias como de los árboles AVL. Posteriormente, el sistema invoca al proceso externo ejecutable de Graphviz de forma silenciosa, compilando el diagrama en un archivo de imagen PNG que es almacenado en el directorio público del servidor para su despliegue inmediato en el navegador del usuario. Conclusiones

El diseño e implementación de un Árbol AVL para almacenar los libros por su identificador ISBN permite superar las limitaciones de eficiencia del sistema anterior, asegurando búsquedas veloces en un entorno de alto volumen de registros. El desarrollo estricto bajo Tipos de Dato Abstracto propios impone un nivel de complejidad técnica elevado, pero garantiza una comprensión detallada de la gestión de memoria dinámica, cumpliendo a cabalidad con la restricción de no emplear colecciones prefabricadas del lenguaje. El soporte para archivos XML de forma incremental brinda versatilidad, permitiendo nutrir el sistema por etapas sin comprometer la validación de duplicados y la integridad del catálogo. Referencias bibliográficas

Takeyas, B. L. (2012). Estructura de Datos Orientados a Objetos: Pseudocódigo y Aplicaciones en C#. Net. México: Alfa Omega.

Graphviz. (2023). Graph Visualization Software. Documentación técnica y herramientas de generación visual de grafos Microsoft. (2023). ASP.NET Core MVC y C#. Manejo de Streams y System.Xml para lectura de documentos. Takeyas, B. L. (2012). Estructura de Datos Orientados a Objetos: Pseudocódigo y Aplicaciones en C# .Net. Alfa Omega. Deitel, P., & Deitel, H. (2012). C# 2012 How to Program (5ta ed.).


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,2do. Semestre 2026

Diagrama de Clases

Figura 1. Diagrama de Clases Fuente: Elaboración Propia


Turn static files into dynamic content formats.

Create a flipbook
Ensayo Proyecto 2 - 202104231 by diegowavy - Issuu