miércoles, 23 de noviembre de 2016

Representación de grafos

Representación Gráfica
Existen diferentes formas de representar un grafo (simple), además de la geométrica y muchos métodos para almacenarlos en una computadora. La estructura de datos usada depende de las características del grafo y el algoritmo usado para manipularlo. Entre las estructuras más sencillas y usadas se encuentran las listas y las matrices, aunque frecuentemente se usa una combinación de ambas. Las listas son preferidas en grafos dispersos porque tienen un eficiente uso de la memoria. Por otro lado, las matrices proveen acceso rápido, pero pueden consumir grandes cantidades de memoria.

Matemática.

Hay tres maneras de representar un grafo en un programa: mediante matrices, mediante listas y mediante matrices dispersas.

Representación mediante matrices: La forma más fácil de guardar la información de los nodos es mediante la utilización de un vector que indexe los nodos, de manera que los arcos entre los nodos se pueden ver como relaciones entre los índices. Esta relación entre índices se puede guardar en una matriz, que llamaremos de adyacencia.

Representación mediante listas: En las listas de adyacencia lo que haremos será guardar por cada nodo, además de la información que pueda contener el propio nodo, una lista dinámica con los nodos a los que se puede acceder desde él. La información de los nodos se puede guardar en un vector, al igual que antes, o en otra lista dinámica.

Mediante matrices dispersas: Para evitar uno de los problemas que teníamos con las listas de adyacencia, que era la dificultad de obtener las relaciones inversas, podemos utilizar las matrices dispersas, que contienen tanta información como las matrices de adyacencia, pero, en principio, no ocupan tanta memoria como las matrices, ya que al igual que en las listas de adyacencia.

Estructura de lista
· Lista de incidencia - Las aristas son representadas con un vector de pares (ordenados, si el grafo es dirigido), donde cada par representa una de las aristas.5
· Lista de adyacencia - Cada vértice tiene una lista de vértices los cuales son adyacentes a él. Esto causa redundancia en un grafo no dirigido (ya que A existe en la lista de adyacencia de B y viceversa), pero las búsquedas son más rápidas, al costo de almacenamiento extra.
· Lista de grados - También llamada secuencia de grados o sucesión gráfica de un grafo no-dirigido es una secuencia de números, que corresponde a los grados de los vértices del grafo.

Estructuras matriciales
· Matriz de adyacencia - El grafo está representado por una matriz cuadrada M de tamaño N^2, donde N es el número de vértices. Si hay una arista entre un vértice x y un vértice y, entonces el elemento MXy es 1, de lo contrario, es 0.
· Matriz de incidencia - El grafo está representado por una matriz de A (aristas) por V (vértices), donde [vértice, arista] contiene la información de la arista (1 - conectado, 0 - no conectado).

Computacional.

Representación mediante matrices: La forma más fácil de guardar la información de los nodos es mediante la utilización de un vector que indexe los nodos, de manera que los arcos entre los nodos se pueden ver como relaciones entre los índices.


Arreglos Unidimensionales: El arreglo unidimensional o de una dimensión está formado por un conjunto de elementos del mismo tipo de datos que se almacenan bajo un mismo nombre y se diferencia por la posición que tiene cada uno en el arreglo.
Hay métodos, en los que se puede iniciar un elemento en 1 hasta N, donde N es el número de elementos del arreglo; sin embargo, en lenguajes C, C++, Java y derivados, se inicia en 0, el segundo es 1, tercero 2, y así, hasta llegar al elemento N.

Definición del arreglo unidimensional.
Cuando se va a definir un arreglo, es necesario hacerlo como con una variable, y se hace de la siguiente manera: NombreVariable: Arreglo[Tamaño] TipoDeDato.
Donde: NombreVariable = Es el nombre de identificación de la variable.
Arreglo = Es la palabra reservada que indica que la variabl
e es un arreglo.
Tamaño = Es un numero entero que indica la cantidad de elementos que tendrá el arreglo.
TipoDeDato = Es el tipo de dato que tendrá el conjunto de elementos del arreglo que se está definiendo. Puede ser Real, Entero, Cadena, Char, etc.

No hay comentarios:

Publicar un comentario