OOP 4 nwbs- Estructuras de datos

OOP 4 nwbs- Estructuras de datos

Las estructuras de datos, sin ser algo propiamente de la programación orientada a objetos, son un concepto fundamental en la ciencia de la computación que es imprescindible que conozcamos.

Estas estructuras proporcionan los medios para organizar y almacenar datos de manera eficiente en los programas informáticos pero también pueden surgir como características emergentes naturales de los sistemas, sin necesidad de un proceso de diseño a voluntad debido a las relaciones y patrones presentes en los datos o en el funcionamiento del sistema.

Las podemos clasificar en diferentes categorías según:

  • La forma de acceso a los elementos (estáticas o dinámicas),
  • El tipo de operaciones realizadas (búsqueda, ordenamiento, almacenamiento)
  • Su implementación física en memoria (principal o secundaria)

Pero la que más nos interesa y en la que vamos a hablar en esta ocasión es según la organización de los elementos y se divide en:

1. Estructuras de datos lineales

Los elementos están organizados de forma secuencial donde cada elemento tiene un sucesor y/o predecesor en la estructura.

Pilas (stacks): siguen una política LIFO (Last-In-First-Out), lo que significa que el último elemento agregado es el primero en ser eliminado. Las pilas se utilizan para realizar operaciones de apilamiento y desapilamiento. Un ejemplo de uso son los sistemas de deshacer/rehacer como se ve en los editores de texto o tambien para recorridos en profundidad (DFS) en algoritmos de búsqueda .

Colas (queues): siguen una política FIFO (First-In-First-Out), lo que significa que el primer elemento agregado es el primero en ser eliminado. Las colas se utilizan para realizar operaciones de encolamiento y desencolamiento. Un ejemplo de uso son los algoritmos de procesamiento de tareas en orden de llegada o también en algoritmos de búsqueda en amplitud (BFS).

No alt text provided for this image

Listas enlazadas: son estructuras dinámicas de datos donde los elementos están organizados en nodos, y cada nodo contiene una referencia al siguiente nodo. Esto permite la inserción y eliminación eficiente de elementos en cualquier posición de la lista. Esto hace que las listas enlazadas sean especialmente útiles cuando se realizan operaciones frecuentes de inserción y eliminación en la lista. Casos de uso son la gestión de grandes conjuntos de datos y listas de reproducción.

No alt text provided for this image

2. Estructuras de datos no lineales

Los elementos tienen relaciones complejas entre sí.

Árboles: son estructuras jerárquicas en las que cada nodo puede tener varios nodos hijos. Los árboles se utilizan ampliamente para representar jerarquías. Además de para organización jerárquica, son casos de uso frecuentes las operaciones de búsqueda eficiente, compresión de datos y representación de expresiones matemáticas.

Grafos: son estructuras de datos que consisten en un conjunto de nodos (vértices) y un conjunto de aristas que conectan los nodos. Los grafos se utilizan para representar relaciones y conexiones entre elementos. Son muy utilizados por ejemplo para los motores de recomendación en comercio online y redes sociales.

No alt text provided for this image

A su vez existen muchos subtipos de árbol y de grafos. Por ahora mencionemos solos los siguientes en cuanto a árboles:

  • Árbol binario: Cada nodo padre puede tener como máximo un hijo izquierdo y un hijo derecho. Los árboles binarios se utilizan en diversas aplicaciones, como árboles de búsqueda binarios y árboles de expresión.
  • Árbol binario de búsqueda: Es una variante del árbol binario en el que los elementos se organizan de manera que los valores más pequeños están a la izquierda del nodo padre y los valores más grandes están a la derecha. Esto permite realizar búsquedas eficientes y mantener los elementos ordenados.
  • Árbol de expresión: son estructuras de datos utilizadas para representar y evaluar expresiones matemáticas de manera jerárquica. Cada nodo representa un operador o un operando, y los hijos de cada nodo representan los operandos de dicho operador.

Y en cuanto a grafos:

  • Grafo dirigido: las aristas tienen una dirección asociada. Es decir, hay un orden definido entre los nodos conectados por una arista. Las relaciones en un grafo dirigido se representan con flechas que indican el flujo o la dirección de la conexión.
  • Grafo no dirigido: En contraste con el anterior aquí las aristas no tienen una dirección asociada. La relación entre los nodos es bidireccional, y no hay distinción entre nodos fuente y destino.
  • Grafo ponderado: Cada arista tiene un peso o valor asociado. Estos pesos pueden representar diferentes propiedades, como la distancia entre nodos, el costo de la conexión o cualquier otro atributo relevante.

Espero que les haya gustado el articulo. Nos leemos en el próximo!

Inicia sesión para ver o añadir un comentario.

Otros usuarios han visto

Ver temas