Lista de adyacencia

3
LISTAS DE ADYACENCIA. En esta estructura de datos la idea es asociar a cada vértice i del grafo una lista que contenga todos aquellos vértices j que sean adyacentes a él. De esta forma sólo reservará memoria para los arcos adyacentes a i y no para todos los posibles arcos que pudieran tener como origen i. El grafo, por tanto, se representa por medio de un vector de n componentes (si |V|=n) donde cada componente va a ser una lista de adyacencia correspondiente a cada uno de los vértices del grafo. Cada elemento de la lista consta de un campo indicando el vértice adyacente. En caso de que el grafo sea etiquetado, habrá que añadir un segundo campo para mostrar el valor de la etiqueta. Ejemplo. Caso 1 grafo dirigido

Transcript of Lista de adyacencia

Page 1: Lista de adyacencia

LISTAS DE ADYACENCIA.

En esta estructura de datos la idea es asociar a cada vértice i del

grafo una lista que contenga todos aquellos vértices j que sean

adyacentes a él. De esta forma sólo reservará memoria para los

arcos adyacentes a i y no para todos los posibles arcos que

pudieran tener como origen i. El grafo, por tanto, se representa por

medio de un vector de n componentes (si |V|=n) donde cada

componente va a ser una lista de adyacencia correspondiente a

cada uno de los vértices del grafo. Cada elemento de la lista

consta de un campo indicando el vértice adyacente. En caso de

que el grafo sea etiquetado, habrá que añadir un segundo campo

para mostrar el valor de la etiqueta.

Ejemplo. Caso 1 – grafo dirigido

Page 2: Lista de adyacencia

Caso 2 –Grafo no dirigido

Esta representación requiere un espacio proporcional a la suma del

número de vértices, más el número de arcos, y se suele usar cuando

el número de arcos es mucho menor que el número de arcos de un

grafo completo.

Una desventaja es que puede llevar un tiempo O(n) determinar si

existe un arco del vértice i al vértice j, ya que puede haber n vertices

en la lista de adyacencia asociada al vértice i.

Page 3: Lista de adyacencia

• Mediante el uso del vector de listas de adyacencias sólo se reserva

memoria para los arcos existentes en el grafo con el consiguiente

ahorro de la misma. Sin embargo, no permite que haya vértices que

puedan ser añadidos o suprimidos del grafo, debido a que la

dimensión del grafo debe ser predeterminado y fija. Para solucionar

esto se puede usar una lista de listas de adyacencia. Sólo los

vértices del grafo que sean origen de algún arco aparecerán en la

lista. De esta forma se pueden añadir y suprimir arcos sin

desperdicio de memoria ya que simplemente habrá que modificar la

lista de listas para reflejar los cambios.