Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos...

33
Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 1 Tema 4 2005 -2006 ElTADGrafo Objetivos q Estudiar la especificación del TAD Grafo q Presentar diferentes alternativas de implementación q Conocer los algoritmos más importantes de manipulación de grafos Contenidos 4.1Conceptos 4.2Especificaciónalgebraica 4.3Implementación 4.4Recorridossobregrafos 4.4.1Recorridoenanchura 4.4.2Recorridoenprofundidad 4.5Caminosmínimossobregrafos 4.5.1AlgoritmodeDijkstra 4.5.2AlgoritmodeFloyd 4.6 Árboldeextensióndecostemínimo

Transcript of Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos...

Page 1: Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos usabooleanos,conjunto parámetroformal génerovértice operaciones _==_:vérticevérticeàbooleano

Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 1

Tema 4

2005 -2006

El TAD GrafoObjetivosq Estudiar la especificación del TAD Grafo

q Presentar diferentes alternativas de implementación

q Conocer los algoritmos más importantes de manipulación de grafos

Contenidos4.1 Conceptos4.2 Especificación algebraica4.3 Implementación4.4 Recorridos sobre grafos4.4.1 Recorrido en anchura4.4.2 Recorrido en profundidad

4.5 Caminos mínimos sobre grafos4.5.1 Algoritmo de Dijkstra4.5.2 Algoritmo de Floyd

4.6 Árbol de extensión de coste mínimo

Page 2: Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos usabooleanos,conjunto parámetroformal génerovértice operaciones _==_:vérticevérticeàbooleano

Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 2

Tema 4

2005 -2006

Duración

q 6 clases (9 h)

Bibliografía

q Estructuras de datos: especificación, diseño e implementaciónAutor: Xavier Franch GutiérrezEditorial : Ediciones UPC, 1999Págs. 303-352

q Estructuras de datos. Algoritmos, abstracción y objetosAutores: Luis Joyanes Aguilar, Ignacio Zahonero MartínezEditorial: McGraw-HillPágs. 417-496

q Estructuras de datos y métodos algorítmicosAutores: Narciso Martí Oliet, Yolanda Ortega Mallén y José Alberto Verdejo LópezEditorial: Prentice HalllPágs. 231-276

El TAD Grafo

Page 3: Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos usabooleanos,conjunto parámetroformal génerovértice operaciones _==_:vérticevérticeàbooleano

Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 3

Tema 4

2005 -2006

4.1 Conceptosq Un grafo es una estructura capaz de representar relaciones complejas entre objetos de un

mismo tipo. Formalmente se representa mediante el par G = (V, A), donde:

q V es un conjunto de objetos llamados vértices o nodosq A es un conjunto de objetos denominados aristas o arcosq Las aristas representan relaciones entre los vértices, de forma que una arista es

un par (u, v) de vértices de Vq Básicamente, podemos clasificar los grafos en 4 tipos dependiendo de dos criterios:

q Grafo dirigido. Es aquel cuyas aristas forman pares ordenados (u à v).

q Grafo no dirigido. Es aquel cuyas aristas no son pares ordenados

q Grafo etiquetado o valorado. Cuando se asocia información a cada arista de un grafo

q Grafo no etiquetado. Cuando no se asocia ninguna información a las aristas

q La teoría de grafos se aplica a campos tan diversos como química, geografía, ingenieríaeléctrica, comunicaciones, etc.

El TAD Grafo

Page 4: Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos usabooleanos,conjunto parámetroformal génerovértice operaciones _==_:vérticevérticeàbooleano

Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 4

Tema 4

2005 -2006

q Un ejemplo de grafo podría ser la red de metro de Madrid, donde los vértices representanlas estaciones y las aristas la línea que une dos estaciones:

q Otro ejemplo de aplicación de los grafos es la construcción de modelos donde se estudianlas relaciones de precedencia que existen entre las tareas que se necesitan para completarun trabajo

El TAD Grafo

Sol Gran V ía Tribunal

Plaza deEspaña

Opera Callao

Tirso deMolina

130

120150

120

160

125

145

17595Sol Gran V ía Tribunal

Plaza deEspaña

Opera Callao

Tirso deMolina

130

120150

120

160

125

145

17595

Page 5: Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos usabooleanos,conjunto parámetroformal génerovértice operaciones _==_:vérticevérticeàbooleano

Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 5

Tema 4

2005 -2006

q Algunas definiciones sobre grafos:

§ Un camino en un grafo G = (V, A) es una secuencia de vértices v1, ..., vn Î V,

con n ³ 1, tal que (vi, vi+1) Î A, para i = 1, ..., n-1

§ La longitud de un camino es su número de vértices menos 1

§ Un camino es simple si todos sus vértices, excepto tal vez el primero y el

último, son distintos

§ Un ciclo es un camino simple de longitud no nula que empieza y termina en el

mismo vértice

§ En un grafo no dirigido, el grado de un vértice v es el número de aristas que

contiene a v§ Se dice que el vértice y es sucesor o adyacente del vértice x si existe una

arista que tenga por origen a x y por destino a y, es decir, si la arista (x, y) Î A

§ Se dice que el vértice x es antecesor del vértice y si existe una arista que tenga

por origen a x y por destino a y, es decir, si la arista (x, y) Î A

El TAD Grafo

Page 6: Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos usabooleanos,conjunto parámetroformal génerovértice operaciones _==_:vérticevérticeàbooleano

Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 6

Tema 4

2005 -2006

§ En un grafo dirigido se distingue entre el grado de entrada y el grado de salida: elgrado de entrada de un vértice v es el número de aristas que llegan a v(antecesores), y el grado de salida de un vértice v es el número de aristas que salende v (sucesores).

Ejemplo 1: Grafo no dirigidoNúmero de nodos:Número de aristas:V = { }A = { }Camino =Ciclo =Grado (v3) =Adyacentes (v3) = { }

El TAD Grafo

v2 v3

v1 v4

v2 v3

v1 v4

Page 7: Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos usabooleanos,conjunto parámetroformal génerovértice operaciones _==_:vérticevérticeàbooleano

Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 7

Tema 4

2005 -2006

Ejemplo 2: Grafo DirigidoNúmero de nodos:Número de aristas:V = { }A = { }Camino =Ciclo =GradoEnt (v2) =GradoSal(v2)=Adyacentes (v3) = { }Antecesores (v3) =Antecesores (v2) = { }

El TAD Grafo

v2

v1 v3

v2

v1 v3

Page 8: Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos usabooleanos,conjunto parámetroformal génerovértice operaciones _==_:vérticevérticeàbooleano

Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 8

Tema 4

2005 -2006

El TAD Grafo

v2

v3

v1

v4

v5

v2

v3

v1

v4

v5

v2 v3

v1 v4

v5

v2 v3

v1 v4

v5

Grafo conexo

§ Un grafo dirigido es fuertemente conexo si existeun camino entre cualquier par de nodos que formanel grafo

v2 v3

v1

v4

v5

v2 v3

v1

v4

v5

Grafo No conexo

§ Un grafo no dirigido G es conexo si existe un camino entre cualquier par de

nodos que forman el grafo.

Page 9: Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos usabooleanos,conjunto parámetroformal génerovértice operaciones _==_:vérticevérticeàbooleano

Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 9

Tema 4

2005 -2006

4.2 Especificación Algebraica

q Puesto que el grafo es un conjunto de vértices y aristas, la signatura del TAD grafo deberácontener, al menos, las operaciones de añadir vértices y aristas a un grafo

q El resto de las operaciones dependerá de la aplicación que se vaya a dar al TAD

q Definiremos un TAD para los grafos dirigidos, con las operaciones básicas para suconstrucción, así como las operaciones de cálculo de vértices adyacentes a uno dado ylas de pertenencia de arista y de vértice.

El TAD Grafo

Page 10: Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos usabooleanos,conjunto parámetroformal génerovértice operaciones _==_:vérticevérticeàbooleano

Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 10

Tema 4

2005 -2006

espec grafosDirigidosusa booleanos, conjuntoparámetro formal

género vérticeoperaciones

_ == _: vértice vértice à booleano_ ¹ _: vértice vértice à booleano

fpfrenombrar conjunto<vértice> por conjVértices

conjunto<(vértice, vértice)> por conjAristasgénero grafooperaciones

gVacío: à grafo

+vértice: grafo vértice à grafo

parcial +arista: grafo vértice vértice à grafo

_ Î _ : vértice grafo à booleano

( _, _ ) Î _ : vértice vértice grafo à booleano

esVacío: grafo à booleano

adyacentes: grafo vértice à conjVértices

-vértice: grafo vértice à grafo

-arista: grafo vértice vértice à grafo

vértices: grafo à conjVértice

aristas: grafo à conjAristas

Gen (grafo) = { gvacio, +vértice, +arista }

Mod (grafo) = {-vértice, -arista}

Obs (grafo) = { _ Î _ , ( _, _ ) Î _ , adyacentes, esVacío,

vértices, aristas}

El TAD Grafo

Page 11: Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos usabooleanos,conjunto parámetroformal génerovértice operaciones _==_:vérticevérticeàbooleano

Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 11

Tema 4

2005 -2006

dominios de definición g: grafo; v1,v2: vértice

+arista (g,v1,v2) está definido sólo si v1Îg Ù v2Îg

ecuaciones g: grafo; v,v1,v2,v3,v4: vértice

+vértice (+vértice (g, v1), v2) =

+arista (+arista (g, v1, v2), v3, v4) =

+arista (+vértice (g, v1), v2, v3) =

v Î gVacío =

v1 Î +vértice (g, v2) =

v1 Î +arista (g, v2, v3) =

El TAD Grafo

Page 12: Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos usabooleanos,conjunto parámetroformal génerovértice operaciones _==_:vérticevérticeàbooleano

Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 12

Tema 4

2005 -2006

(v1, v2) Î gVacío =

(v1, v2) Î +vértice (g, v3) =

(v1, v2) Î +arista (g, v3, v4) =

esVacío (gVacío) =

esVacío (+vértice (g, v)) =

esVacío (+arista (g, v1, v2)) =

adyacentes (gVacío, v) =

adyacentes (+vértice (g, v1), v2) =

adyacentes (+arista (g, v1, v2), v3) =

El TAD Grafo

Page 13: Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos usabooleanos,conjunto parámetroformal génerovértice operaciones _==_:vérticevérticeàbooleano

Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 13

Tema 4

2005 -2006

-vértice (gVacío, v) =

-vértice (+vértice (g, v1), v2) =

-vértice (+arista (g, v1, v2), v3) =

-arista (gVacío, v1, v2) =

-arista (+vértice (g, v1), v2, v3) =

-arista (+arista (g, v1, v2), v3, v4) =

El TAD Grafo

Page 14: Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos usabooleanos,conjunto parámetroformal génerovértice operaciones _==_:vérticevérticeàbooleano

Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 14

Tema 4

2005 -2006

vértices (gVacío) =

vértices (+vértice (g, v)) =

vértices (+arista (g, v1, v2)) =

aristas (gVacío) =

aristas (+vértice (g, v)) =

aristas (+arista (g, v1, v2)) =

El TAD Grafo

Page 15: Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos usabooleanos,conjunto parámetroformal génerovértice operaciones _==_:vérticevérticeàbooleano

Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 15

Tema 4

2005 -2006

El TAD Grafo4.3 Implementación

q Un Vértice es un objeto con un atributo de tipo genérico

template <typename T>class Vertice {public:

Vertice(const T& objeto);const T& getObj() const;void setObj(const T& objeto);

private:T obj;

};

Page 16: Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos usabooleanos,conjunto parámetroformal génerovértice operaciones _==_:vérticevérticeàbooleano

Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 16

Tema 4

2005 -2006

El TAD Grafoq Una Arista es un objeto con tres atributos: dos vértices y opcionalmente una etiqueta

template <typename T, typename U>class Arista {public:

Arista(const Vertice<T>& vo, const Vertice<T>& vd, const U& etiq);const Vertice<T>& getOrigen() const;const Vertice<T>& getDestino() const;const T& getEtiqueta() const;void setOrigen(const Vertice<T>& orig);void setDestino(const Vertice<T>& dest);void setEtiqueta(const U& etiq);

private:Vertice<T> origen;Vertice<T> destino;U etiqueta;

};

Page 17: Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos usabooleanos,conjunto parámetroformal génerovértice operaciones _==_:vérticevérticeàbooleano

Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 17

Tema 4

2005 -2006

El TAD Grafoq Interfaz informal de la clase Grafo:

template <typename T, typename U>class Grafo{

public:Grafo();bool esVacio() const;bool estaVertice(const Vertice<T>& v) const;bool estaArista(const Arista<T, U>& a) const;const Conjunto<Vertice<T> >& vertices() const;const Conjunto<Arista<T, U> >& aristas() const;const Conjunto<Vertice<T> >& adyacentes(const Vertice<T>& v) const;const Conjunto<Vertice<T> >& antecesores(const Vertice<T>& v) const;void insertarVertice(const Vertice<T>& v);void insertarArista(const Arista<T, U>& a);void eliminarVertice(const Vertice<T>& v);void eliminarArista(const Arista<T, U>& a);

}

Page 18: Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos usabooleanos,conjunto parámetroformal génerovértice operaciones _==_:vérticevérticeàbooleano

Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 18

Tema 4

2005 -2006

q Existen básicamente 3 formas de implementar los grafos: una estática y dos dinámicas. Laelección de cada una de ellas dependerá de las operaciones que se vayan a aplicar sobrelos vértices y las aristas

El TAD Grafo

4.3.1 Matriz de Adyacencia

§ Sea G = (V, A) un grafo de n nodos, donde suponemos que los nodos V = {v1, v2,... , vn}están ordenados y podemos representarlos por sus ordinales {1, 2,... , n}

§ La matriz de adyacencia para el grafo G es una matriz A de dimensión n x n deelementos booleanos en la que:

A[i, j] = verdad, si y sólo si existe una arista en G que va del vértice i al vértice jA[i, j] = falso, en caso contrario

§ En un grafo no dirigido, la matriz de adyacencia es simétrica y los elementos de sudiagonal son todos falsos

Page 19: Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos usabooleanos,conjunto parámetroformal génerovértice operaciones _==_:vérticevérticeàbooleano

Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 19

Tema 4

2005 -2006

El TAD Grafo§ El tipo necesario para representar un grafo mediante matriz de adyacencia es:

template <typename T, typename U>class Grafo{

public:// métodos de la interfaz informal

private:enum { N = …};bool m[N][N];int nv;

}

§ Esta representación es útil para aquellos problemas donde se necesite saber si existe unaarista entre dos vértices dados, ya que es de orden constante O(1).

§ El principal inconveniente es que se necesita un espacio de O(n2) aunque el grafo tenga muypocas aristas.

J M

F

T

E

J M

F

T

E

EFJMT

E F J M TF V V V FF F F F FF F F V FF F V F FV V F F F

M =V = {E, F, J, M, T}

Page 20: Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos usabooleanos,conjunto parámetroformal génerovértice operaciones _==_:vérticevérticeàbooleano

Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 20

Tema 4

2005 -2006

El TAD Grafo

J M

F

T

E

J M

F

T

E

EFJMT

E F J M T

M =

Huelva

CádizCórdoba

Sevilla

2

3

2

2

4

5

Huelva

CádizCórdoba

Sevilla

2

3

2

2

4

5

CA CO HU SE

M =

Para un grafo con aristasetiquetadas, la matriz sedeclararía de la forma:

U* m[N][N];

Donde U es el parámetro de tipopara la etiqueta de las aristas

Page 21: Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos usabooleanos,conjunto parámetroformal génerovértice operaciones _==_:vérticevérticeàbooleano

Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 21

Tema 4

2005 -2006

El TAD Grafoq Algoritmo del método adyacentes para un grafo no etiquetado:

Conjunto<int> adyacentes(int v) constvar

Conjunto<int> c;fvar;inicio

para i = 1 hasta nv hacersi m[v][i] entonces

c.poner(i)fsi

fpara;devolver c

fin;

Page 22: Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos usabooleanos,conjunto parámetroformal génerovértice operaciones _==_:vérticevérticeàbooleano

Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 22

Tema 4

2005 -2006

El TAD Grafo4.3.2 Listas de Adyacencia

§ Esta representación consiste en n listas, de forma que la lista i-ésima contiene losvértices adyacentes al vértice i

§ Una posible representación podría ser:

template <typename T, typename U>class Grafo{

public:// métodos de la interfaz informal

private:Lista<Vertice<T> > *G;int nv;

}

Page 23: Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos usabooleanos,conjunto parámetroformal génerovértice operaciones _==_:vérticevérticeàbooleano

Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 23

Tema 4

2005 -2006

El TAD Grafo

1 3

4

2

5

1 3

4

2

5

2

1 3 4

32

1

2

3

4

5

G

2

1 3 4

32

1

2

3

4

5

G

1 4

2

5

3

1 4

2

5

3

2

1 5

5

32

1

2

3

4

5

G

4

1 5

4

2

1 5

5

32

1

2

3

4

5

G

4

1 5

4

Page 24: Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos usabooleanos,conjunto parámetroformal génerovértice operaciones _==_:vérticevérticeàbooleano

Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 24

Tema 4

2005 -2006

El TAD Grafoq Algoritmo del método adyacentes:

Conjunto<int> adyacentes(int v) constvar

Conjunto<int> c;Lista<int>::Iterador it;

fvar;inicio

it = G[v].principio();mientras it ¹ G[v].final() hacer

c.poner(it.observar(G[v]));it.avanzar(G[v])

fpara;devolver c

fin;

Page 25: Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos usabooleanos,conjunto parámetroformal génerovértice operaciones _==_:vérticevérticeàbooleano

Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 25

Tema 4

2005 -2006

q Esta representación resulta útil cuando el número de vértices se conocepreviamente y permanece fijo durante la resolución del problema, pero resultaineficiente si necesitamos añadir o eliminar vértices en tiempo de ejecución

q Por tanto, para un caso más general, podemos utilizar, en lugar de una tabla, unalista enlazada para almacenar la información de los vértices

El TAD Grafo

template <typename T, typename U>class Grafo{

public:// métodos de la interfaz informal

private:Lista<Adyacencia<T> > G;

}

template <typename T>class Adyacencia{

public:// métodos tipo get/set

private:Vertice<T> v;Lista<Vertice<T> > adyacentes;

}

Page 26: Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos usabooleanos,conjunto parámetroformal génerovértice operaciones _==_:vérticevérticeàbooleano

Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 26

Tema 4

2005 -2006

El TAD Grafo

Huelva

CádizCórdoba

SevillaHuelva

CádizCórdoba

Sevilla

Huelva

Sevilla

Cádiz

Córdoba

G

Sevilla

Huelva Cádiz Córdoba

Huelva

HuelvaHuelva

SevillaSevilla

CádizCádiz

CórdobaCórdoba

G

SevillaSevilla

HuelvaHuelva CádizCádiz CórdobaCórdoba

HuelvaHuelva

Page 27: Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos usabooleanos,conjunto parámetroformal génerovértice operaciones _==_:vérticevérticeàbooleano

Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 27

Tema 4

2005 -2006

El TAD Grafo

template <typename T, typename U>class Grafo{

public:// métodos de la interfaz informal

private:Lista<Adyacencia<T, U> > G;

}

template <typename T, typename U>class Adyacencia{

public:// métodos tipo get/set

private:Vertice<T> v;Lista<VerticeAdy<T, U> > adyacentes;

}

q Para un grafo con aristas etiquetadas, cada objeto almacenado en la listaadyacentes debe contener no sólo el vértice sino también la información asociadaa la arista

template <typename T, typename U>class VerticeAdy: public Vertice<T>{

public:// métodos getEtiqueta/setEtiqueta

private:U etiqueta;

}

Page 28: Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos usabooleanos,conjunto parámetroformal génerovértice operaciones _==_:vérticevérticeàbooleano

Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 28

Tema 4

2005 -2006

El TAD Grafo

Huelva

CádizCórdoba

SevillaHuelva

CádizCórdoba

Sevilla

70

60

80

75

150

Huelva

Sevilla

Cádiz

Córdoba

G

Sevilla

Huelva Cádiz Córdoba

Huelva

HuelvaHuelva

SevillaSevilla

CádizCádiz

CórdobaCórdoba

G

SevillaSevilla

HuelvaHuelva CádizCádiz CórdobaCórdoba

HuelvaHuelva

60

70 75 80

150

Grafo Etiquetado con Pesos

Representación mediante

Listas de Adyacencia

Page 29: Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos usabooleanos,conjunto parámetroformal génerovértice operaciones _==_:vérticevérticeàbooleano

Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 29

Tema 4

2005 -2006

q Se utilizan para grafos dirigidos, si lo que queremos saber es, de forma eficiente, losantecesores de un determinado nodo

q Se utiliza otra tabla de listas cuya lista i-ésima contiene los vértices antecesores al vértice i.Dicha lista se conoce con el nombre de lista de antecesores

q Una lista múltiple de adyacencia es una estructura de datos que une ambas tablas en unaúnica estructura

q Hay un nodo por cada arista del grafo

q Cada nodo guarda la información de dos vértices (origen y destino de la arista) y dospunteros

§ el primero apunta al nodo que almacena la siguiente arista que tiene el mismo vértice destino

§ el segundo apunta al nodo que almacena la siguiente arista que tiene el mismo vértice origen

El TAD Grafo4.3.3 Listas múltiples de adyacencia

Page 30: Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos usabooleanos,conjunto parámetroformal génerovértice operaciones _==_:vérticevérticeàbooleano

Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 30

Tema 4

2005 -2006

El TAD Grafotemplate <typename T, typename U>class GrafoDirigido{

public:typedef NodoGM<T, U>* PtrNodoGM;// métodos de la interfaz informal

private:PtrNodoGM *adyacentes;PtrNodoGM *antecesores;

}

template <typename T, typename U>class nodoGM{

public:typedef NodoGM<T, U>* PtrNodoGM;// métodos tipo get/set

private:Vertice<T> origen, destino;// Para grafos etiquetados:// U etiqueta;PtrNodoGM sigAdy, sigAnt;

}

Page 31: Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos usabooleanos,conjunto parámetroformal génerovértice operaciones _==_:vérticevérticeàbooleano

Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 31

Tema 4

2005 -2006

El TAD Grafo1 3

4

2

5

1 3

4

2

5

1

2

3

4

5

1 2 3 4 5

1 2

2 1 2 3 2 4

5 2 5 3

listas deadyacencia

listas deadyacenciainversa

1

2

3

4

5

1 2 3 4 5

1 2

2 1 2 3 2 4

5 2 5 3

listas deadyacencia

listas deadyacenciainversa

listas deantecesores

origen destino

mismodestino

mismoorigen

origen destino

mismo

(sigAnt)

mismoorigen

(sigAdy)

ORIGEN

DESTINO

Page 32: Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos usabooleanos,conjunto parámetroformal génerovértice operaciones _==_:vérticevérticeàbooleano

Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 32

Tema 4

2005 -2006

El TAD Grafoq Algoritmo del método adyacentes:

Conjunto<int> adyacentes(int v) constvar

Conjunto<int> c;PtrNodoGM p;

fvar;inicio

p = adyacentes[v];mientras p ¹ NULO hacer

c.poner(p->getDestino());p = p->getSigAdy();

fpara;devolver c

fin;

Por ejemplo, en el grafo anterior:

Adyacentes (2) = { }

Page 33: Tema4 ElTADGrafomcast/ESDATOS/GRAFOS/grafo.pdf · Tema4 2005-2006 especgrafosDirigidos usabooleanos,conjunto parámetroformal génerovértice operaciones _==_:vérticevérticeàbooleano

Estructuras de Datos II I.T. en Informática de Gestión/Sistemas Universidad de Huelva 33

Tema 4

2005 -2006

El TAD GrafoEficiencia de las operaciones

n: número de vértices

m: número de aristas

gE: grado máximo de entrada

gS: grado máximo de salida

eliminarVertice

insertarVertice

vertices

aristas

adyacentes

antecesores

estaArista

estaVertice

esVacio

eliminarArista

insertarArista

Grafo

Lista MúltipleLista Simple(1)MatrizOperación

(1) Se refiere a la versión en la que se usa unatabla para almacenar la información de los vértices