tema 8: grafos - academia cartagena99tema 8: grafos estructuras de datos 1 • introducción •...

Post on 15-Jul-2020

6 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Tema 8: Grafos ESTRUCTURAS DE DATOS

1

• Introducción

• Definiciones

• Representación

• Recorridos

ED 2

Contenidos

Introducción • Los árboles se utilizaban para modelar jerarquías

• Los grafos son extensiones que se utilizan para modelar sistemas posiblemente menos jerárquicos o relaciones arbitrarias

• Por ejemplo caminos entre ciudades, redes de ordenadores, conectividades de píxeles en imágenes, optimización de viajes, tráfico urbano,...

ED 3

v2 v3

v5 v1

v4

Definiciones • Grafo: G = ( V, A )

• V = Conjunto de vértices pertenecientes al grafo G {v1, v2, v3,…}

• A = Conjunto de pares (v1, v2) donde v1 y v2 pertenecen a V. Representan los arcos (aristas) de G

•Densidad: relación entre #arcos vs #vértices ◦ Grafo denso/disperso

ED 4

v2 v3

v5

v1 v4 Vértice

Arista o arco

Definiciones •Grafo dirigido o Digrafo: Cuando los arcos son ordenados (v1,v2) != (v2,v1) ◦ Arcos “con sentido” Hay “flechas”

◦ Puede haber 2 arcos entre 2 nodos para indicar vecindad mutua (adyacentes)

ED 5

v2 v3

v5

v1 v4

Definiciones •Adyacencia: Dos vértices son adyacentes si existe un arco que los una (para grafos dirigidos: “adyacentes a”)

ED 6

v2 v3

v5

v1 v4

V3 es adyacente de V2, V1 y V5

Definiciones •Grafo valorado o ponderado: Grafo cuyos arcos tienen asociados un peso o coste.

ED 7

v2 v3

v5

v1 v4

3

7 1 5

2

2 4

v2 v3

v5

v1 v4

3

7

4 2

2

1

Grafo ponderado Digrafo ponderado

Definiciones •Grado: Número de arcos que contienen a un nodo

•Grado de entrada y grado de salida: ◦ Para grafos dirigidos (#arcos de salida/entrada)

•Nodos fuente/sumidero: ◦ CON arcos SÓLO de salida/entrada

ED 8

v2 v3

v5

v1 v4

v2 v3

v5

v1 v4

V3 grado 3 V3 grado entrada: 1

V3 grado salida: 1

Definiciones • Camino: Secuencia de vértices que hay que atravesar para llegar de un vértice a otro

ED 9

v2 v3

v5

v1 v4

Camino de V1 a V3:

(V1,V2), (V2,V3)

Longitud: 2

Longitud: Número de arcos que atraviesa un camino

Camino simple: camino con vértices diferentes

Definiciones Ciclo: posible camino de “v” a “v” (pasando por otros)

ED 10

v2 v3

v5

v1 v4

Ciclo a V1:

(V1,V2), (V2,V3), (V3,V5), (V5, V1)

Bucle: camino de “v” a “v”

Definiciones •Circuito: idem ciclo pero para grafos dirigidos

ED 11

v2 v3

v5

v1 v4 Circuito a V1:

<V1,V5>, <V5,V3>, <V3,V2>, <V2, V1>

Definiciones • Grafo completo: si existe una arista entre cada par de vértices ◦ Máxima densidad

ED 12

v2 v3

v5

v1 v4

Definiciones •Grafo conexo: Para grafo no dirigido si existe un camino desde un vértice a cualquier otro

ED 13

v2 v3

v5

v1 v4

v2 v3

v5

v1 v4

Inconexo (2 componentes conexas)

Conexo

Definiciones • Grafo fuertemente conexo: Para un grafo dirigido, si existe un camino desde un vértice a cualquier otro

• Un grafo dirigido puede ser conexo (si lo es sin considerarlo dirigido) o fuertemente conexo

ED 14

v2 v3

v5

v1 v4

v2 v3

v5

v1 v4

Conexo

Fuertemente conexo

Representación • Representación estática (grafo dirigido)

◦ Conjunto nodos + Matriz de adyacencia

• Representación dinámica (grafo dir.) ◦ Lista de adyacencia

◦ Incluye conjunto nodos

ED 15

010

101

100

A

a

c

b

a

c

b

c

c a

b

Especialmente útil si

el grafo es disperso

V = (a, b, c)

Representación • Representación estática grafo ponderado

◦ Conjunto nodos + Matriz de adyacencia con pesos

• Repr. dinámica grafo ponderado ◦ Lista de adyacencia

◦ Nodos con campo peso

ED 16

060

201

300

A

a

c

b

a

c

b

c|3

c|2 a|1

b|6

3

2

1

6

V = (a, b, c)

Recorridos •Recorrer un grafo (graph traversal): visitar todos los nodos alcanzables a partir de uno dado (¡sin repetir nodos!) ◦ Recorrido en anchura (BFS) ◦ Recorrido en profundidad (DFS)

◦ Múltiples variantes para determinados problemas y aplicaciones ◦ Algoritmos Prim, Dijkstra, Bellman-Ford, Kruskal,…

ED 36

Recorridos • De forma iterativa se necesitan ciertas estructuras de datos auxiliares ◦ Conjunto “visitados” para no repetir nodos y entrar en ciclos

(loop infinito) ◦ Guarda elementos ya visitados

◦ Estructura FIFO (anchura/breadth-first/BFS) o pila (profundidad/depth-first/DFS) por la que pasan los nodos para guardar memoria y orden de visita ◦ Guardan direcciones de nodos (punteros) que quedan por visitar

Prototipo:

PROCEDURE Recorrido(g: TGrafo; origen: TElemento; VAR l: TLista)

ED 37

Recorridos

ED 38

Recorridos

ED 39

Se elige origen del recorrido

Recorrido en anchura

Recorridos

ED 40

Se elige aleatoriamente siguiente a visitar

entre sus nodos vecinos

Recorrido en anchura

Recorridos

ED 41

Se continúa entre los restantes vecinos del

origen (si quedan sin visitar)

Recorrido en anchura

Recorridos

ED 42

Recorrido en anchura

Recorridos

ED 43

Hasta terminar con la vecindad 1

Recorrido en anchura

Recorridos

ED 44

Se elige siguiente nodo desde el que

continuar el recorrido (vecindad 2)

Recorrido en anchura

Recorridos

ED 45

Se visitan otros vecinos de la vecindad 1

Recorrido en anchura

Recorridos

ED 46

Hasta terminar con la vecindad 2

Recorrido en anchura

Recorridos

ED 47

Y así sucesivamente hasta

terminar con todos los nodos

Recorrido en anchura

Recorridos

ED 48

Se elige origen del recorrido

Recorrido en profundidad

Recorridos

ED 49

Se elige vecino para avanzar

Recorrido en profundidad

Recorridos

ED 50

Recorrido en profundidad

Recorridos

ED 51

Recorrido en profundidad

Recorridos

ED 52

Recorrido en profundidad

Recorridos

ED 53

Recorrido en profundidad

Recorridos

ED 54

Recorrido en profundidad

Recorridos

ED 55

Se retoman caminos no tomados

Recorrido en profundidad

Recorridos

ED 56

Recorrido en profundidad

Recorridos

ED 57

Recorrido en profundidad

Recorridos

ED 58

Recorrido en profundidad

Recorridos Recorrer en anchura: se visita el nodo de partida, para después visitar los adyacentes no visitados aún ◦ Estructura auxiliar: Cola para guardar los adyacentes no

visitados

ED 59

Z P

R

O C

P

{P}

Z

{P,Z}

C

{P,Z,C}

C

{P,Z,C,R}

R

{P,Z,C,R,O}

O

Conjunto visitados

Cola (queue)

Recorridos Recorrer en profundidad: se visita el nodo de partida, para después visitar en profundidad los adyacentes no visitados aún ◦ Estructura auxiliar: Pila para guardar los adyacentes no

visitados

ED 60

Z P

R

O C

{P}

{P,C}

{P,C,R}

{P,C,R,O}

P

Z

C

Z

R

Z

O

Z {P,C,R,O,Z}

Conjunto visitados Pila (stack)

top related