Está en la página 1de 6

INSTITUTO RAUL SCALABRINI ORTIZ (A-859) FECHA: 03/08/21

ASIGNATURA: TECNICAS DE ALMACENAMIENTO DE DATOS

Qué son los datos

Antes de comenzar analicemos qué son los datos y cómo apoyan la toma de decisiones. Los datos son recursos
que forman parte activa de las operaciones y planeaciones de una organización. Las decisiones se toman en
base a la información proporcionada por los datos.
Los datos son costosos y deben ser manejados de manera que sean correctos y estén disponibles para producir
información.
El objetivo de un sistema de manejo de datos es que éstos sean flexibles y adaptables para apoyar la toma de
decisiones. Veamos cuatro sugerencias para un sistema de administración de datos:

1.- Los datos deben representarse y almacenarse de cierta forma para poder ser consultados posteriormente.

2.- Los datos deben organizarse de manera adecuada para accesarlos selectiva y efectivamente.

3.- Los datos deben procesarse y presentarse de manera que puedan apoyar efectivamente al usuario.

4.- Los datos deben protegerse y manejarse de manera que no pierdan valor.

Estructuras de datos
Las estructuras de datos son muy importantes en los sistemas de computación. En un programa, cada variable
pertenece a alguna estructura de datos definida, lo cual determina el conjunto de operaciones válidas para ella.

Estructuras primitivas y simples

Las estructuras primitivas o simples, son aquellas que no están compuestas por otros tipos de estructuras, por
ejemplo un entero, un booleano o un carácter.
Por combinación de estas estructuras primitivas se pueden crear estructuras de datos más complejas.

Cadenas

Las cadenas son el ejemplo típico de una estructura de datos construida a partir de una estructura primitiva.
Una cadena es una secuencia finita de caracteres.

Arreglos unidimensionales o vectores

Un vector es una colección de finita de datos del mismo tipo. Para acceder a cada elemento de dato se usa un
índice que indica la posición del elemento al que se quiere acceder.
Es una estructura de tipo estática, ya que su tamaño y tipo de dato se establece en tiempo de diseño, y no
puede ser modificado en tiempo de ejecución.

Arreglos multidimensionales o matrices

Al igual que en un vector, las matrices son estructuras estáticas y almacenan un solo tipo de dato; para acceder
a un elemento se usa un subíndice por cada dimensión de la matriz, la intersección de todos los subíndices da
como resultado un único dato.

Registros

Un registro es una colección finita y ordenada de elementos. Es una estructura estática parecida a un vector
pero que se distingue de éste, en que todos los elementos de un vector deben ser del mismo tipo de dato,
mientras que en el registro no necesariamente.
Los elementos de un registro se conocen con el nombre de campos.
Los registros son la estructura de datos básica con la que se generan los archivos.

Pilas y colas

Tanto las pilas como las colas son estructuras dinámicas, es decir, su tamaño crece y decrece en tiempo de
ejecución. Ambas no tienen la restricción del tipo de dato único, pueden almacenar diferentes tipos de datos.
Una cola y una pila se diferencian por el método de manejo de la información que contienen; en una cola, el
primer elemento a extraer es el primer elemento que ingresó a ella, es decir, tiene un manejo de datos del tipo
FIFO (First in First Out); mientras que en las pilas, el primer elemento a extraer es el último que ingresó, por
lo tanto tienen un manejo de los datos del tipo LIFO (Last in First Out).
Muchos lenguajes de programación no cuentan con el manejo de pilas y colas, por lo que los programadores
recurren a simular estas estructuras de datos usando vectores, con lo cual caen en las limitaciones de éstos, es
decir, tipo de datos único y tamaño finito predeterminado.
Listas enlazadas

Una lista enlazada es como una cadena de elementos. Estos elementos se denominan nodos y básicamente
cuentan con dos partes, una es el dato en sí y la otra es un puntero al siguiente elemento o nodo de la lista.
Gráficamente una lista se vería así:

Las listas son estructuras dinámicas, ya que se les pueden agregar y eliminar nodos en tiempo de ejecución.
Existen distintas variantes de la lista básica:

- Lista doblemente enlazada: un nodo no sólo apunta al siguiente, sino también al nodo que lo precede

- Listas circulares: el último nodo apunta al primero y a su vez, éste apunta al último

Arboles

Los árboles son una estructura dinámica y jerárquica. Que quiere decir jerárquica, esto significa que hay un
primer elemento del cual dependen los demás, este elemento se conoce con el nombre de raíz. Otro elemento
especial son las hojas, éstas componen el nivel más bajo del árbol.
Al igual que en una lista enlazada, un árbol está compuesto por nodos. Estos nodos están formados por uno o
más datos y por punteros que apuntan a las ramas que componen el árbol.
Existen muchos tipos de árboles, desde el árbol binario (2 ramas) hasta los árboles n-arios compuestos por “n”
ramas.

Grafos

Un grafo es un conjunto de punto y líneas, con cada línea se une un punto con otro. Los puntos de un grafo se
denominan nodos y las líneas se denominan aristas. Una arista está determinada por los nodos que conecta.
Un grafo está definido por sus conjuntos de nodos y aristas. La representación gráfica de un grafo no tiene
importancia, veamos dos ejemplos de representación de un mismo grafo:
Nótese que puede haber varias aristas conectando dos nodos, por ejemplo vemos que en el grafo superior hay
tres aristas distintas conectando al nodo ‘b’ con el nodo ‘d’.
Algunas aristas pueden conectar un solo nodo, como en el caso del nodo ‘a’ que tiene una arista que sale y
llega a él (arista circular o ciclo).

Trayectorias

Una trayectoria en un grafo, es el conjunto de arista que conectan dos nodos, por ejemplo, entre el nodo ‘a’ y
el nodo ‘d’ podemos trazar distintas trayectorias, todas con comienzo en ‘a’ y finalización en ‘d’:

a-b-c-d
a-b-d
a-a-b-c-d
a-a-b-d
a-b-a-b-c-d
Diferentes tipos aristas

Las aristas de un grafo pueden ser de doble sentido de circulación, en este caso se representan con una línea
simple que uno dos nodos y que permite ir de un nodo al otro o viceversas:

También pueden ser aristas direccionales, en este caso se representa con una flecha que indica la dirección en
que deben recorrerse:

Las aristas de un grafo también pueden ser ponderadas o no. Una arista es ponderada cuando se le asigna un
valor o peso. Ese valor o peso puede representar lo que sea que el usuario quiera representar con el grafo. En
el ejemplo superior podemos apreciar un grafo que tiene aristas orientadas y ponderadas (nótese los valores
que hay sobre cada arista).

Clasificación de grafos

Los grafos los podemos clasificar de la siguiente manera:


- Grafos cíclicos: siempre permiten volver al nodo desde donde se comenzó el recorrido. General
mente los grafos con aristas no orientadas (aristas de doble circulación) son grafos cíclicos.
- Grafos acíclicos: basta con que a un nodo no se pueda retornar a él por ninguna trayectoria para que
el grafo sea considerado acíclico.
- Grafo conexo: todos los nodos del grafo están conectados con algún otro nodo.

- Grafo inconexo: un nodo o grupo de nodos, está desconectado del resto.

Recorrida de un grafo

Un grafo puede comenzar a ser recorrido a partir de cualquier nodo, no es como un árbol donde siempre se
comienza por la raíz.

Uso práctico de un grafo

Los grafos suelen utilizarse para representar secuencias de tareas en un proyecto. De esta manera pueden
representar la secuencia precedencia y la duración de ésta, y determinar el camino crítico, es decir, aquella
secuencia de tareas que pueden llevar a un retraso de todo el proyecto.
Otro uso que se le puede dar a un grafo es representar rutas alternativas. Supongamos que tenemos el caso de
una empresa de logística que distribuye mercaderías por distintas ciudades del país. Con un grafo podemos
representar las distintas ciudades (nodos) y las rutas que conectan estas ciudades (aristas); dándole un valor a
las aristas podemos calcular distintas rutas, por ejemplo, podemos calcular la ruta más corta, la más
económica o la ruta más rápida; el valor que le damos la arista puede representar lo que uno desee.
Otro uso de aplicación de grafos puede ser el de un GPS o mapa inteligente de ciudad, donde los nodos
representan esquinas de la ciudad y las aristas las calles que unen esas esquinas.

Representación de grafos en programas

La mayoría de los lenguajes de programación no contemplan la estructura de datos de los grafos, por lo tanto
para representarlos se suele utilizar alguna de las estructuras de datos anteriores.
Existen dos métodos para representar grafos en programas:

 Matriz de adyacencias
 Directorio de nodos

Matriz de adyacencias

Es una matriz cuadrada con tantas filas y columnas como nodos componen al grafo. Si hay una arista que
conecta dos nodos, en la matriz se coloca 1, sino se pone 0. Veamos un ejemplo:

Grafo con aristas no orientadas


Matriz de adyacencias de un grafo con aristas no orientadas

Supongamos que el grafo del ejemplo anterior tiene aristas orientadas, entonces su matriz de adyacencias sería
la siguiente:

Grafo con aristas orientadas

Matriz de adyacencias de grafo con aristas orientadas

Nótese como algunos valores pasaron de ser 1 a ser 0.

¿Cómo hacemos para representar un grafo con aristas ponderadas?, muy fácilmente, en lugar de poner 1,
ponemos el valor o peso de la arista, de esta manera si hay una arista que conecte dos nodos habrá un valor
distinto de 0 (cero).

Aquellos que prestaron atención ya se habrán dado cuenta que la matriz de adyacencias tiene una gran
limitación; no pueden representarse más de una arista entre dos nodos, es decir, si dos nodos son conectados
por más de una arista, sólo podemos representar una de ellas.

Directorio de nodos

El directorio de nodos viene a solucionar el problema de la representación de varias aristas que conectan dos
nodos.
Un directorio de nodos consta de dos partes: Un directorio y un conjunto de listas enlazadas.
El directorio es un vector de punteros, en donde existe un elemento por cada nodo del grafo.
Hay una lista enlazada por cada nodo del grafo, y que contiene un elemento por cada nodo al que se puede ir
directamente partiendo del nodo en cuestión.
Veamos la representación del grafo del ejemplo anterior con aristas no orientadas:
Ahora veamos la representación del mismo grafo con aristas orientadas:

Si el grafo tuviera aristas ponderadas, se agrega un dato adicional al nodo de cada lista para almacenar el peso
de la arista, ejemplo:

Otra desventaja de la matriz de adyacencias con respecto al directorio de nodos, es que si se debe representar
un grafo grande con muchos, nodos pero que contiene pocas conexiones entre éstos, se creará una matriz
prácticamente llena de ceros, lo que consume más memoria que un directorio de nodos.

También podría gustarte