Relación entre la abstracción y las estructuras de datos

La abstracción es el proceso de modelar problemas que permite administrar más eficazmente la complejidad del mismo al evitar que el análisis se pierda en detalles innecesarios. De esta manera su valor radica en permitir una resolución de problemas más eficiente.

La abstracción permite describir de manera más consistente los datos y las transformaciones que pueden sufrir estos mismos en los algoritmos utilizados con respecto al problema en cuestión.



Partiendo de esta definición podemos derivar a un tipo de abstracción más específico a los problemas que resuelven los computadores a través del software; los tipos de datos abstractos. Básicamente es la definición formal o lógica de cómo interpretamos los datos y las operaciones permitidas sobre ellos; sin tomar en consideración su implementación. Se limita únicamente a lo que la información representa.

La interacción del usuario se limita a las operaciones definidas en el tipo de dato abstracto, denominadas también como la interfaz del mismo. Es una visión de la información independiente de la implementación.


Estructuras de datos

Cuando se comienza a profundizar en el tema de la implementación específica del tipo de dato abstracto, dicha implementación se convierte en una estructura de datos. Básicamente se utilizan para almacenar la información en una disposición específica que la vuelve eficiente de acceder o transformar con ciertas operaciones, aunque de igual manera ineficiente en otro tipo de flujos de trabajo.




Por este último motivo, entender las estructuras de datos más comunes es esencial para ser capaz de seleccionar la más adecuada al problema en mano.

A continuación una breve explicación de algunos tipos de estructuras de datos y las diferencias entre ellas:


Arreglos

Es un tipo de estructura de datos linear y la más utilizada de todas. Es un grupo o una colección finita (el número de elementos que lo conforma es conocido desde el inicio) y ordenada de elementos. Donde cada elemento es asignado un valor numérico llamado índice, que corresponde a la posición del mismo en el arreglo (la mayoría de lenguajes de programación, comienza con la posición 0).

También se les llama vectores, o matrices de una dimensión.


Su implementación más eficiente es en el almacenamiento de un conjunto de elementos cuyo total de miembros es conocido de antemano y el rápido acceso a través del índice y transformaciones del mismo permita una ejecución más eficiente de dichos flujos:
  • Para almacenar los 52 naipes de una baraja.
  • Tableros de juegos de mesa como el ajedrez.
  • Implementaciones de pilas de memoria.


Listas

Es una estructura de datos linear que almacena elementos en sucesión; sin embargo, a diferencia del arreglo, esta estructura es dinámica (crece o decrece como se requiera) y no posee índices para el acceso de elementos.




Es más común utilizar esta estructura para acceder y transformar un conjunto de elementos cuya total cantidad de miembros crece o decrece de manera dinámica. Por ejemplo:
  • Transacciones en proceso de una aplicación.
  • Inventario de productos.


Matrices

A los arreglos o vectores multi-dimensionales son también denominados matrices. Son un conjunto de elementos del mismo tipo donde sus valores posicionales son determinados por la cantidad de índices que corresponde a la cantidad de dimensiones del vector. De este modo, la posición de un elemento de un vector de dos dimensiones o matriz de dos dimensiones está especificada por dos índices (x,y). Al igual que los arreglos, sus tamaños son finitos y predeterminados.

Su aplicación usualmente radica en la relación de dos o más atributos o rubros para un elemento o valor. Por ejemplo una matriz que relacione una lista de estudiantes (filas) con una lista de materias (columnas) y su calificación correspondiente (valor).



Estas estructuras permiten trabajar las relaciones de dos o más elementos y el valor de dicha relación:
  • Una matriz que relaciona una lista de estudiantes con una lista de materias y el valor de cada relación corresponde a la calificación respectiva.


Árboles

A diferencia de las estructuras anteriores, los árboles almacenan sus elementos de forma jerárquica. Su estructura consta de nodos que se pueden clasificar en diferentes tipos: raíz, padre, hijo, hermano, hoja y rama.




Estas estructuras se van a utilizar principalmente para referir y manipular datos jerárquicos:
  • Pilas.
  • Archivos de sistema.
  • Compiladores (árboles de sintaxis).
  • Algoritmos de búsquedas eficientes:
    • Diccionarios con búsquedas de prefijos.
    • Patrones de texto en textos fijos.


Grafos

Los grafos son representaciones de un conjunto de elementos y las relaciones entre ellos. No existe una jerarquía definida, simplemente se limita a representar las asociaciones existentes entre sus constituyentes.

Utilizados para representar muchos problemas del mundo real, los grafos son mayormente utilizados para trabajar las redes de cualquier índole.


Algunos ejemplos de su uso son:

  • Mapas de navegación para el cálculo de la ruta más corta.
  • Redes sociales como Facebook utilizan la teoría de grafos para los algoritmos de recomendación de amigos.
  • En sistemas operativos se utilizan los grafos para determinar la ocurrencia de un punto muerto en la asignación de recursos a los procesos en ejecución.


Todas estas estructuras de datos tienen sus beneficios específicos en cuanto al modo en que se manipula la información almacenada en ellos. Por ello el propósito de su implementación se alinea con la utilidad inherente a sus características.




Comments

Popular Posts