









Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Los mejores documentos en venta realizados por estudiantes que han terminado sus estudios
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Descubre las mejores universidades de tu país según los usuarios de Docsity
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
una breve introducción y definiciones de arboles grafos tablas hash
Tipo: Apuntes
1 / 17
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!
Introducción En las bases de la programación y del procesamiento de datos, existen herramientas muy poco conocidas pero importantes llamadas las estructuras de datos. Si bien, en muchas ocasiones se toman como técnicas frías o teóricas, cobran su verdadera valor cuando entendemos su rol en nuestra vida digital cotidiana, desde una simple búsqueda en internet hasta el algoritmo que recomienda la siguiente serie que verás. En este texto exploraremos con detalle algunas de las estructuras más complejas y fascinantes: árboles, grafos, tablas hash, algoritmos de ordenamiento, complejidad algorítmica y estructuras avanzadas.
1. Árboles Un árbol es una estructura jerárquica compuesta por nodos, donde uno de ellos es la raíz y los demás se ramifican como hijos. Es una forma intuitiva de representar datos con relaciones jerárquicas, como archivos almacenados en carpetas y subcarpetas en un sistema operativo. Para comprender mejor que es un árbol comenzaremos explicando cómo está estructurado. Nodos: Se le llama Nodo a cada elemento que contiene un Árbol. Nodo Raíz: Se refiere al primer nodo de un Árbol, Solo un nodo del Árbol puede ser la Raíz. Nodo Padre: Se utiliza este término para llamar a todos aquellos nodos que tiene al menos un hijo. Nodo Hijo: Los hijos son todos aquellos nodos que tiene un padre.
Los arboles a demas de los nodos tiene otras propiedades importantes que son utilizadas en diferente ámbitos los cuales son: Nivel: Nos referimos como nivel a cada generación dentro del árbol. Por ejemplo, cuando a un nodo hoja le agregamos un hijo, el nodo hoja pasa a ser un nodo rama pero a demas el árbol crece una generación por lo que el Árbol tiene un nivel mas.Cada generación tiene un número de Nivel distinto que las demas generaciones. Un árbol vacío tiene 0 niveles El nivel de la Raíz es 1 El nivel de cada nodo se calculado contando cuantos nodos existen sobre el, hasta llegar a la raíz + 1, y de forma inversa también se podría, contar cuantos nodos existes desde la raíz hasta el nodo buscado + 1. Altura: Le llamamos Altura al número máximo de niveles de un Árbol.
Peso: Conocemos como peso a el número de nodos que tiene un Árbol. Este factor es importante por que nos da una idea del tamaño del árbol y el tamaño en memoria que nos puede ocupar en tiempo de ejecución(Complejidad Espacial en análisis de algoritmos.) 1.1. Árbol binario: Cada nodo tiene como máximo dos hijos. Es sencillo y eficiente para representar decisiones binarias o estructuras jerárquicas simples.
1.4. Árbol B+ : Variante del B donde todos los datos se almacenan en las hojas, y las hojas están enlazadas, mejorando el rendimiento en lecturas secuenciales. Es de notar que los arboles B+ ocupan un poco más de espacio que los arboles B, y esto ocurre al existir duplicidad en algunas claves. Sin embargo, esto es aceptable si el archivo se modifica frecuentemente, puesto que se evita la operación de reorganización del árbol que es tan costosa en los arboles B. Formalmente se define un árbol B+ de la siguiente manera: Cada página, excepto la raíz, contiene entre d y 2d elementos. Cada página, excepto la raíz, tiene entre d+1 y 2d+1 descendientes. Se utiliza m para expresar el número de elementos por página. La página raíz tiene al menos dos descendientes. Las paginas hojas están todas al mismo nivel. Todas las claves se encuentran en las páginas hojas. Las claves de las páginas raíz e interiores se utilizan como índices.
2. Grafos
Un grafo es una colección de nodos (vértices) conectados mediante enlaces (aristas). Nos permiten modelar relaciones complejas como rutas, redes sociales o flujos de información. Sus características más importantes son: 2.1. Representaciones: Los grafos pueden representarse mediante listas de adyacencia (más eficientes en espacio para grafos dispersos) o matrices de adyacencia (preferidas para grafos densos o cuando se requiere acceso rápido a las conexiones). 2.2. Recorridos: DFS (Depth-First Search): Explora tan profundo como sea posible antes de retroceder. Es excelente para detectar ciclos o analizar componentes conexos. BFS (Breadth-First Search): Explora nivel por nivel, ideal para encontrar el camino más corto en grafos no ponderados.
Comprender grafos es comprender redes: nuestra sociedad digital depende de ellos.
3. Tablas Hash La tabla hash es una estructura de acceso directo que permite almacenar y recuperar datos de forma eficiente. Utiliza una función hash para traducir claves en índices de un arreglo.
Ventajas: Acceso promedio en tiempo constante (El tiempo no cambia, sin importar el tamaño de los datos). Ideal para operaciones de búsqueda. Inserción y eliminación rápida. Desafíos: Colisiones: Cuando dos claves tienen el mismo hash. Se solucionan con encadenamiento o dirección abierta. Diseño de funciones hash: Una buena función hash es fundamental. Debe distribuir las claves uniformemente. Las tablas hash están detrás de estructuras tan cotidianas como diccionarios, caches y sistemas de autenticación.
4. Algoritmos de Ordenamiento Avanzados El ordenamiento es una de las tareas más frecuentes en informática. A continuación se señalan tres tipos de algoritmos muy usados para este tipo de tareas:
HeapSort: Es un algoritmo de ordenamiento que: Construye un montículo (heap) desde el arreglo original. Extrae elementos uno a uno del heap, colocándolos al final del arreglo ordenado. Se basa en una estructura llamada heap binario máximo o mínimo, que es un tipo de árbol binario representado como un arreglo.
5. Complejidad Algorítmica (Big O) La notación Big O es una herramienta que nos permite anticipar la eficiencia de un algoritmo. Nos habla del "peor caso" en cuanto a tiempo o espacio requerido en función del tamaño del problema (n). La notación Big O nos ayuda a responder preguntas como: ¿Qué tan rápido es este algoritmo? ¿Qué tan bien se comportará si los datos crecen mucho? No da un tiempo exacto (como “3 segundos”), sino una cota superior del crecimiento, es decir, cómo escalará el tiempo o el espacio.
Eficiente en búsquedas de texto, sugerencias automáticas y filtros de spam. 6.3. Segment Tree: Estructura basada en árboles que permite consultas y actualizaciones rápidas sobre intervalos. Muy usada en algoritmos competitivos, manejo de intervalos y problemas de rango. Conclusión Para cada desarrollo informático o sistema inteligente, existe un conjunto de algoritmos que contienen estructuras de datos que apoyan el manejo de grandes volúmenes de datos. Conocerlos es tener a la mano herramientas que soportan el mundo digital en el que nos movemos. No se trata solo de código, se refiere a la lógica, arte, y un poco de magia que da forma al futuro.
Fuentes consultadas: Cormen, T., Leiserson, C., Rivest, R., & Stein, C. (2009). Introduction to Algorithms (3rd ed.). MIT Press. Goodrich, M. T., & Tamassia, R. (2014). Data Structures and Algorithms in Java. Geeks for Geeks. (2024). “Data Structures”. Recuperado de: https://www.geeksforgeeks.org/data-structures/ https://posgrados.inaoep.mx/archivos/PosCsComputacionales/Curso_Propedeutico/ Programacion_Estructuras_Datos/Capitulo_10_Grafos.pdf https://www.oscarblancarteblog.com/2014/08/22/estructura-de-datos-arboles/ https://profesor.uprb.edu/mvelez/cursos/sici4036/ConceptosOrdenamientoAvanzado.html