Top Banner
DFS, Puntos de Articulaci´on, Puentes, SCC, Chinese Postman Destefanis, Eric 12 de julio de 2019 Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 1 / 46
64

DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Oct 23, 2021

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

DFS, Puntos de Articulacion, Puentes, SCC, ChinesePostman

Destefanis, Eric

12 de julio de 2019

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 1 / 46

Page 2: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Contenido

1 DFS

2 Grafos no dirigidosPuntos de ArticulacionPuentesDiametro de un grafo

3 Grafos dirigidosComponentes Fuertemente Conexas

4 CaminosEuler pathChinesse Postman Problem

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 2 / 46

Page 3: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Contenido

1 DFS

2 Grafos no dirigidosPuntos de ArticulacionPuentesDiametro de un grafo

3 Grafos dirigidosComponentes Fuertemente Conexas

4 CaminosEuler pathChinesse Postman Problem

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 3 / 46

Page 4: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Informacion del DFS

De CLRS

“Depth-first search yields valuable information about the structure of agraph.”

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 4 / 46

Page 5: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

DFS

Durante un DFS, es buena idea siempre tener en cuenta 3 posibles estadospara cada nodo. Podriamos representarlos como:

Blanco: el nodo aun no ha sido visitado.

Gris: El nodo ha sido visitado, pero aun estamos visitando alguno desus descendientes.

Negro: El nodo y sus descendientes ya fueron visitados.

Los nodos empiezan todos pintados de blanco.

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 5 / 46

Page 6: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Dibujo

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 6 / 46

Page 7: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Dibujo

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 7 / 46

Page 8: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Tipos de aristas

El algoritmo de DFS nos induce una clasificacion de aristas en 4 tipos:

Tree edgeViaja a un nodo blancoEs con la que se descubre un nodo por primera vezViaja al hijo del nodo actual en un arbol de DFS

Back edgeViaja a un nodo grisViaja a un ancestro del nodo actual

Forward edgeViaja a un nodo negro con descubrimiento posterior al nodo actualViaja a un descendiente (no necesariamente hijo) del nodo actualSolo aparece en grafos dirigidos

Cross edgeViaja a un nodo negro que finaliza antes que el descubrimiento delnodo actualNo viaja ni a un ancestro ni a un descendienteSolo aparece en dirigidos

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 8 / 46

Page 9: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Propiedades piolas

Los descendientes de un nodo x seran exactamente los nodos blancosalcanzables por un camino de nodos blancos con origen en x, en elinstante en que se descubre (white-path-theorem).

Un grafo es acıclico (dirigido o no) si y solo si un recorrido de DFS noencuentra ninguna back-edge.

Un orden topologico puede ser tomar los vertices en orden inverso definalizacion.

Un grafo dirigido es singly-connected si existe a lo sumo un caminoentre cada par de nodos. Dar un algoritmo O(V x E) para decidir siun grafo es singly-connected. Y O(V x V)?

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 9 / 46

Page 10: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Contenido

1 DFS

2 Grafos no dirigidosPuntos de ArticulacionPuentesDiametro de un grafo

3 Grafos dirigidosComponentes Fuertemente Conexas

4 CaminosEuler pathChinesse Postman Problem

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 10 / 46

Page 11: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Puntos de Articulacion

Componentes Conexas

Una componente conexa de un grafo (no dirigido) G = (V ,E ), es unconjunto de vertices V ′ tal que para todo par de vertices x , y ∈ V ′ existeun camino de x a y , y para todo par de vertices w ∈ V −V ′, z ∈ V ′, se daque (w , z) 6∈ E .

Punto de Articulacion

Un punto de articulacion de un grafo (no dirigido) G es un vertice v talque G − v tiene mas componentes conexas que G.

Grafo biconexo

Un grafo es biconexo si no tiene puntos de articulacion.

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 11 / 46

Page 12: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Ejemplos

a b

c

d

e

fg

a

b

c

d

e

f

g

h

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 12 / 46

Page 13: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Ejemplos marcando Puntos de Articulacion

a b

c

d

e

fg

a

b

c

d

e

f

g

h

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 13 / 46

Page 14: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Corremos DFS en algun nodo

ab

c d

e

f

g

h

a 1/

b 2/

d 3/

e 4/e 4/5c 6/c 6/7

d 3/8

b 2/9 f 10/

h 11/

g 12/g 12/13

h 11/14

f 10/15

a 1/16

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 14 / 46

Page 15: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Corremos DFS en algun nodo

ab

c d

e

f

g

h

a 1/

b 2/

d 3/

e 4/e 4/5c 6/c 6/7

d 3/8

b 2/9 f 10/

h 11/

g 12/g 12/13

h 11/14

f 10/15

a 1/16

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 14 / 46

Page 16: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Corremos DFS en algun nodo

ab

c d

e

f

g

h

a 1/

b 2/

d 3/

e 4/e 4/5c 6/c 6/7

d 3/8

b 2/9 f 10/

h 11/

g 12/g 12/13

h 11/14

f 10/15

a 1/16

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 14 / 46

Page 17: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Corremos DFS en algun nodo

ab

c d

e

f

g

h

a 1/

b 2/

d 3/

e 4/

e 4/5c 6/c 6/7

d 3/8

b 2/9 f 10/

h 11/

g 12/g 12/13

h 11/14

f 10/15

a 1/16

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 14 / 46

Page 18: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Corremos DFS en algun nodo

ab

c d

e

f

g

h

a 1/

b 2/

d 3/

e 4/e 4/5

c 6/c 6/7

d 3/8

b 2/9 f 10/

h 11/

g 12/g 12/13

h 11/14

f 10/15

a 1/16

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 14 / 46

Page 19: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Corremos DFS en algun nodo

ab

c d

e

f

g

h

a 1/

b 2/

d 3/

e 4/e 4/5c 6/

c 6/7

d 3/8

b 2/9 f 10/

h 11/

g 12/g 12/13

h 11/14

f 10/15

a 1/16

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 14 / 46

Page 20: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Corremos DFS en algun nodo

ab

c d

e

f

g

h

a 1/

b 2/

d 3/

e 4/e 4/5c 6/

c 6/7

d 3/8

b 2/9 f 10/

h 11/

g 12/g 12/13

h 11/14

f 10/15

a 1/16

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 14 / 46

Page 21: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Corremos DFS en algun nodo

ab

c d

e

f

g

h

a 1/

b 2/

d 3/

e 4/e 4/5c 6/

c 6/7

d 3/8

b 2/9 f 10/

h 11/

g 12/g 12/13

h 11/14

f 10/15

a 1/16

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 14 / 46

Page 22: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Corremos DFS en algun nodo

ab

c d

e

f

g

h

a 1/

b 2/

d 3/

e 4/e 4/5c 6/c 6/7

d 3/8

b 2/9 f 10/

h 11/

g 12/g 12/13

h 11/14

f 10/15

a 1/16

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 14 / 46

Page 23: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Corremos DFS en algun nodo

ab

c d

e

f

g

h

a 1/

b 2/

d 3/

e 4/e 4/5c 6/c 6/7

d 3/8

b 2/9 f 10/

h 11/

g 12/g 12/13

h 11/14

f 10/15

a 1/16

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 14 / 46

Page 24: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Corremos DFS en algun nodo

ab

c d

e

f

g

h

a 1/

b 2/

d 3/

e 4/e 4/5c 6/c 6/7

d 3/8

b 2/9

f 10/

h 11/

g 12/g 12/13

h 11/14

f 10/15

a 1/16

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 14 / 46

Page 25: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Corremos DFS en algun nodo

ab

c d

e

f

g

h

a 1/

b 2/

d 3/

e 4/e 4/5c 6/c 6/7

d 3/8

b 2/9 f 10/

h 11/

g 12/g 12/13

h 11/14

f 10/15

a 1/16

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 14 / 46

Page 26: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Corremos DFS en algun nodo

ab

c d

e

f

g

h

a 1/

b 2/

d 3/

e 4/e 4/5c 6/c 6/7

d 3/8

b 2/9 f 10/

h 11/

g 12/g 12/13

h 11/14

f 10/15

a 1/16

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 14 / 46

Page 27: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Corremos DFS en algun nodo

ab

c d

e

f

g

h

a 1/

b 2/

d 3/

e 4/e 4/5c 6/c 6/7

d 3/8

b 2/9 f 10/

h 11/

g 12/

g 12/13

h 11/14

f 10/15

a 1/16

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 14 / 46

Page 28: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Corremos DFS en algun nodo

ab

c d

e

f

g

h

a 1/

b 2/

d 3/

e 4/e 4/5c 6/c 6/7

d 3/8

b 2/9 f 10/

h 11/

g 12/

g 12/13

h 11/14

f 10/15

a 1/16

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 14 / 46

Page 29: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Corremos DFS en algun nodo

ab

c d

e

f

g

h

a 1/

b 2/

d 3/

e 4/e 4/5c 6/c 6/7

d 3/8

b 2/9 f 10/

h 11/

g 12/g 12/13

h 11/14

f 10/15

a 1/16

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 14 / 46

Page 30: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Corremos DFS en algun nodo

ab

c d

e

f

g

h

a 1/

b 2/

d 3/

e 4/e 4/5c 6/c 6/7

d 3/8

b 2/9 f 10/

h 11/

g 12/g 12/13

h 11/14

f 10/15

a 1/16

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 14 / 46

Page 31: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Corremos DFS en algun nodo

ab

c d

e

f

g

h

a 1/

b 2/

d 3/

e 4/e 4/5c 6/c 6/7

d 3/8

b 2/9 f 10/

h 11/

g 12/g 12/13

h 11/14

f 10/15

a 1/16

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 14 / 46

Page 32: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Corremos DFS en algun nodo

ab

c d

e

f

g

h

a 1/

b 2/

d 3/

e 4/e 4/5c 6/c 6/7

d 3/8

b 2/9 f 10/

h 11/

g 12/g 12/13

h 11/14

f 10/15

a 1/16

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 14 / 46

Page 33: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Para los puntos de articulacion observamos 3 casos

Supongamos que estoy parado en la recursion del DFS en un nodo n, yquiero saber si es un punto de articulacion. Observamos 3 casos:

Caso 1: Sus descendientes tienen un back edge que vuelve a unancestro.

Caso 2: Ningun back edge parte de un descendiente a un ancestro

Caso 3: Como el caso 2, pero hay algun back edge que vuelve a n.

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 15 / 46

Page 34: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Caso 1

n

a

b

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 16 / 46

Page 35: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Caso 2

n

a

b

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 17 / 46

Page 36: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Caso 3

n

a

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 18 / 46

Page 37: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Codigo DFS para obtener Puntos de Articulacion

1 Num desc[] // Inicializado arreglo en 0s

2

3 Num cont = 1

4

5 Num DFS_PA (Node n)

6 desc[n] = ++cont

7 Num min = cont

8 for m in E(n):

9 if desc[m] = 0:

10 Num min_m = DFS_PA(m)

11 if min_m < min:

12 min = min_m

13 if min_m >= desc[n]:

14 // n es un punto de articulacion

15 Imprimir n

16 else if desc[m] < min:

17 min = desc[m]

18 return min

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 19 / 46

Page 38: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Preguntitas

Podria usar como ’cont’ la profundidad/altura de cada nodo conrespecto al Arbol generado por el DFS, y aun asi el algoritmofuncionaria?

Funcionaria BFS?

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 20 / 46

Page 39: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Puentes

Definicion de puente

Un puente de un grafo G es una arista e tal que G − e tiene mascomponentes conexas que G .

Preguntas...

Sea G conexo, v un punto de articulacion y e un puente ¿Puede serque G − v tenga mas de dos componentes conexas? ¿Y G − e?

¿Existe algun grafo biconexo que tenga un puente?

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 21 / 46

Page 40: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Ejemplo

ab

c d

e

f

g

h

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 22 / 46

Page 41: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Ejemplo marcando puentes

ab

c d

e

f

g

h

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 23 / 46

Page 42: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Para los puentes volvemos a observar 4 casos

Supongamos que estoy parado en la recursion del DFS en un nodo n, conarista a m, y quiero saber si (n,m) es un puente. Observamos 4 casos:

Caso 1: Los descendientes de m tienen un back edge que vuelve a unancestro de n.

Caso 2: Los descendientes de m tienen un back edge que vuelve a n.

Caso 3: Ningun back edge parte de un descendiente de m a unancestro de n.

Caso 4: Como el caso 2, pero hay algun back edge que vuelve desdeun descendiente de m hasta exactamente m.

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 24 / 46

Page 43: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Caso 1

n

m

a

b

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 25 / 46

Page 44: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Caso 2

n

m

a

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 26 / 46

Page 45: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Caso 3

n

m

a

b

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 27 / 46

Page 46: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Caso 4

n

m

a

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 28 / 46

Page 47: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Codigo para obtener puentes

1 Num desc[] // Inicializado en 0’s

2 Num cont = 1

3 Num DFS_PAYP (Node n)

4 desc[n] = ++cont

5 Num min = cont

6 for m in E(n):

7 if desc[m] = 0:

8 Num min_m = DFS_PA(m)

9 if min_m < min:

10 min = min_m

11 if min_m >= desc[n]:

12 // n es un punto de articulacion

13 Print(n)

14 if min_m > desc[n]:

15 // n-m es un puente

16 Print(n, m)

17 else if desc[m] < min:

18 min = desc[m]

19 return min

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 29 / 46

Page 48: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Diametro de un Grafo no dirigido

Sea G un arbol, sin pesos en sus aristas.Sea dist(a,b) la distancia minima entre nodos a y b.Cual es el valor maximo de d(a, b) para cualquier par de nodos?

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 30 / 46

Page 49: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Solucion

Tomar un nodo u.Correr BFS(u) y obtener el nodo mas lejano, denotemoslo v.Correr BFS(v) y obtener la distancia D al nodo mas lejano de v.D es el diametro del grafo.Ejercicio: probar la correctitud del algoritmo.

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 31 / 46

Page 50: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Contenido

1 DFS

2 Grafos no dirigidosPuntos de ArticulacionPuentesDiametro de un grafo

3 Grafos dirigidosComponentes Fuertemente Conexas

4 CaminosEuler pathChinesse Postman Problem

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 32 / 46

Page 51: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Conceptos

Grafo fuertemente conexo

Un grafo dirigido G es llamado fuertemente conexo si para cada par devertices u y v existe un camino de u hacia v y un camino de v hacia u.

Componentes fuertemente conexas (Strongly Connected Components,SCC)

Los componentes fuertemente conexos de un grafo dirigido son sussubgrafos maximales fuertemente conexos.

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 33 / 46

Page 52: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Dibujo

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 34 / 46

Page 53: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Algoritmo de Kosaraju

1 1) visited = [false para todo nodo], Componente = [-1 para

todo nodo], L = [].

2 2) Para todo nodo correr dfs(u)

3 3) for v in L: // Iterando de izquierda a derecha

4 Correr Asignar(u, u)

5

6 dfs(u):

7 if !visited[u]

8 visited[u] = true

9 for v in edges[u]:

10 dfs(v)

11 L = [v] + L

12

13 Asignar(u, root):

14 if Componente[u] = -1:

15 Componente[u] = root

16 for v in redges[u]:

17 Asignar(v, root)

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 35 / 46

Page 54: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Algoritmo de Tarjan

1 cont = 1; desc= Num []; onStack = bool[]

2 S = new Stack()

3 Num strongconnect(Node v)

4 desc[v] = cont , Num min = cont

5 cont = cont + 1

6 S.push(v), onStack[v] = true

7 for w in E[v]:

8 if desc[w] = 0:

9 Num min_m = strongconnect(w)

10 if min > min_m: min = min_m

11 else if onStack[w]:

12 if min > desc[w]: min = desc[w]

13 if min = desc[v]:

14 do

15 w = S.pop(), onStack[w] = false , nuevaSCC.add(w)

16 while w != v

17 Print(nuevaSCC)

18 for v in V:

19 if desc[v] = 0:

20 strongconnect(v)

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 36 / 46

Page 55: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Contenido

1 DFS

2 Grafos no dirigidosPuntos de ArticulacionPuentesDiametro de un grafo

3 Grafos dirigidosComponentes Fuertemente Conexas

4 CaminosEuler pathChinesse Postman Problem

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 37 / 46

Page 56: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Euler Path

Definicion

Dado un grafo, un camino euleriano es un camino que pasa por cada aristaexactamente una vez. Un ciclo euleriano es un camino euleriano quetermina en su nodo de origen.

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 38 / 46

Page 57: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Solution

1 Elegir nodo de inicio v:

2 * si todos los nodos tienen grado par elegir cualquiera

3 * si hay 2 nodos con grado impar , elegir cualquiera de ellos

4 * si hay mas de dos nodos con grado impar , no hay solucion

5

6 res = []

7 S = pila vacia

8 while !S.empty && !E[v]. empty

9 if E[v].empty:

10 res.append(v)

11 v = S.top();

12 S.pop()

13 else:

14 S.push(v)

15 u = E[v][0]

16 E[v]. remove (0)

17 v = u

18 res.append(v)

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 39 / 46

Page 58: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Problema del Cartero Chino

Definicion

Dado un grafo no dirigido con pesos, encontrar el camino que recorre cadaarista al menos una vez y tiene costo mınimo.

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 40 / 46

Page 59: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Dibujo

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 41 / 46

Page 60: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Dibujo

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 42 / 46

Page 61: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Solucion Propuesta por Edmonds 1965

Sea S = v1, v2, ... v2m el conjunto de vertices con aridad impar. Paracada par de vertices vi , vj ∈ S construir el camino mas corto Pi ,j .

Construir un grafo completo con pesos K2m donde V (K2m) = S yweight(vivj) = length(Pi ,j) para todos vi , vj ∈ S . Encontrar elmatching M de costo mınimo.

Para cada (vivj) ∈ M agregar una duplica de cada arista de E (Pi ,j),en el grafo original G . Llamemos G ′ a este nuevo grafo.

Obtener el ciclo Euleriano de G ′.

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 43 / 46

Page 62: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Dibujo

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 44 / 46

Page 63: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Dibujo

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 45 / 46

Page 64: DFS, Puntos de Articulación, Puentes, SCC, Chinese Postman

Fin

Destefanis, Eric (Ex-FaMAF/UNC) Grafos 12 de julio de 2019 46 / 46