martes, 17 de octubre de 2017

ESTRUCTURA DINÁMICA NO LINEAL - GRAFOS

Un Grafo es básicamente un objeto geométrico aunque sea un objeto combinatorio, es decir, un conjunto de puntos y un conjunto de líneas tomado de entre el conjunto de líneas que une cada par de vértices.

Los grafos son estructuras de datos no lineales que tienen una naturaleza dinámica. Su estudio podría dividirse en dos grandes bloques:

GRAFOS DIRIGIDOS: Los arcos en el grafo tienen una dirección asociada. El primer elemento del arco es el origen y el segundo es considerado el destino.


GRAFOS NO DIRIGIDOS (pueden ser considerados un caso particular de los anteriores): Los arcos en el grafo no tienen una dirección particular, es decir, son bidireccionales.


Un grafo es una estructura de datos que almacena datos de dos tipos:
Vértices o nodos, con un valor almacenado.
Aristas o arcos: cada una conecta a un vértice con otro, y puede tener un valor almacenado. Una arista es un par de vértices (x, y). Si el par está ordenado, se dice que el grafo es dirigido o que es un dígrafo.

El conjunto de nodos o vértices es {A, B, C, D, F, G, H} y
El conjunto de arcos o aristas es {(A, B), (A, D), (A, C), (C, D), (C, F), (E, G), (A, A)} para el siguiente grafo:


Matriz de adyacencia:
La matriz de adyacencia es una matriz cuadrada que se utiliza como una forma de representar relaciones binarias.

Construcción de la matriz a partir de un grafo
-          Se crea una matriz cero, cuyas columnas y filas representan los nodos del grafo.

-     Por cada arista que une a dos nodos, se suma 1 al valor que hay actualmente en la ubicación correspondiente de la matriz.


viernes, 29 de septiembre de 2017

ESTRUCTURA DE DATOS NO LINEALES: ÁRBOLES

ÁRBOLES

 Los árboles son estructuras de datos dinámicas no lineales. Un árbol se define como una colección de nodos donde cada uno además de almacenar información, guarda las direcciones de sus sucesores.  

PARTES DE UN ÁRBOL

Hijo: Es aquel nodo que siempre va a tener un nodo antecesor o padre, son aquellos que se encuentran en el mismo nivel 
Padre: Es aquel que tiene hijos y también puede tener o no antecesores. 
Hermano: Dos nodos son hermanos si son apuntados por el mismo nodo, es decir si tienen el mismo padre. 
Raíz: Es el nodo principal de un árbol y no tiene antecesores. 
Hoja o terminal: Son aquellos nodos que no tienen hijos o también los nodos finales de un árbol.
Interior: Se dice que un nodo es interior si no es raíz ni hoja. 
Nivel de un nodo: Se dice que el nivel de un nodo es el número de arcos que deben ser recorridos, partiendo de la raíz para llegar hasta él.
Altura del árbol: Se dice que la altura de un árbol es el máximo de los niveles considerando todos sus nodos.  
Grado de un nodo: se dice que el grado de un nodo es el número de hijos que tiene dicho nodo.  

TIPOS DE ÁRBOLES
* Binario: Son arboles donde cada nodo solo puede apuntar a dos nodos.
* Arboles B (Multicamino) : Arboles cuyos nodos pueden tener un número múltiple de hijos.

Árbol Binario















RECORRIDOS DEL ÁRBOL BINARIO
Comparado a las estructuras de datos lineales como las listas enlazadas  y arreglos unidimensionales, que tienen un método de acceso, las estructuras arborescentes pueden ser recorridas de muchas maneras diferentes. 
Recorrido en profundidad
Preorden: (raíz, izquierdo, derecho). Para recorrer un árbol binario no vacío en preorden, hay que realizar las siguientes operaciones recursivamente en cada nodo, comenzando con el nodo de raíz:
1.   Visite la raíz
2.   Atraviese el sub-árbol izquierdo
3.   Atraviese el sub-árbol derecho

Inorden: (izquierdo, raíz, derecho). Para recorrer un árbol binario no vacío en inorden (simétrico), hay que realizar las siguientes operaciones recursivamente en cada nodo:
1.   Atraviese el sub-árbol izquierdo
2.   Visite la raíz
3.   Atraviese el sub-árbol derecho
Postorden: (izquierdo, derecho, raíz). Para recorrer un árbol binario no vacío en postorden, hay que realizar las siguientes operaciones recursivamente en cada nodo:
1.   Atraviese el sub-árbol izquierdo
2.   Atraviese el sub-árbol derecho
3.   Visite la raíz
Recorrido en anchura
Los árboles también pueden ser recorridos en orden por nivel (de nivel en nivel), donde visitamos cada nodo en un nivel antes de ir a un nivel inferior. Esto también es llamado recorrido en anchura.
Ejemplo:
Profundidad
Secuencia de recorrido de preorden: F, B, A, D, C, E, G, I, H (raíz, izquierda, derecha)
Secuencia de recorrido de inorden: A, B, C, D, E, F, G, H, I (izquierda, raíz, derecha); note cómo esto produce una secuencia ordenada
Secuencia de recorrido de postorden: A, C, E, D, B, H, I, G, F (izquierda, derecha, raíz)
Anchura

Secuencia de recorrido de orden por nivel: F, B, G, A, D, I, C, E, H

lunes, 28 de agosto de 2017

ESTRUCTURA DE DATOS – ESTRUCTURAS ESTÁTICAS Y DINÁMICAS

ESTRUCTURA DE DATOS
La información que se procesa en la computadora es un conjunto de datos, que pueden ser simples o estructurados.
Los datos simples son aquellos que ocupan sólo un localidad de memoria, mientras que los estructurados son un conjunto de casillas de memoria a las cuales hacemos referencia mediante un identificador único.
Las estructuras de datos son una colección de datos cuya organización se caracteriza por las funciones de acceso que se usan para almacenar y acceder a elementos individuales de datos.
Una estructura de datos se caracteriza por lo siguiente:
· Pueden descomponerse en los elementos que la forman.
· La manera en que se colocan los elementos dentro de la estructura afectará la forma en que se realicen los accesos a cada elemento.
· La colocación de los elementos y la manera en que se accede a ellos puede ser encapsulada.

ESTRUCTURA DE DATOS ESTÁTICAS:
Son aquellas en las que el tamaño ocupado en memoria se define antes de que el programa se ejecute y no puede modificarse dicho tamaño durante la ejecución del programa.
Estas estructuras están implementadas en casi todos los lenguajes. Su principal característica es que ocupan solo una casilla de memoria, por lo tanto una variable simple hace referencia a un único valor a la vez. 

ESTRUCTURA DE DATOS DINÁMICAS:
No tienen las limitaciones o restricciones en el tamaño de memoria ocupada que son propias de las estructuras estáticas. Mediante el uso de un tipo de datos especifico, denominado puntero, es posible construir estructuras de datos dinámicas que no son soportadas por la mayoría de los lenguajes, pero que en aquellos que si tienen estas características ofrecen soluciones eficaces y efectivas en la solución de problemas complejos.
Se caracteriza por el hecho de que con un nombre se hace referencia a un grupo de casillas de memoria. Es decir un dato estructurado tiene varios componentes.

CLASIFICACIÓN DE LAS ESTRUCTURAS DE DATOS:

ESTRUCTURAS DE DATOS ESTÁTICAS
1.- Simples o primitivas
a) Boolean
b) Char
c) Integer
d) Real
e) Subrangos

2.- Compuestas
a) Arreglos - Arrays
b) Conjuntos o estructuras
c) Strings o cadenas
d) Registros - Campos
e) Archivos
f) Punteros

ESTRUCTURA DE DATOS DINÁMICAS
1.- Lineales
a) Pila
b) Cola
c) Lista

2.- No lineales
a) Árboles
b) Grafos