Mpinning Gy Alg10(Busqueda)

29
1 Búsqueda en Grafos Anchura Profundidad

Transcript of Mpinning Gy Alg10(Busqueda)

1

Búsqueda en Grafos

❚ Anchura

❚ Profundidad

2

Definiciones Adicionales

❚ Def. Supongamos que R A B. La inversa de R, denotada por R-1, es la relación {(y,x)|(x,y) R}.

Ejemplo:

a b c a b c

3

❚ Def. Suponga R1 A B y R2 B C. La composición de R1 y R2, denotada por R1 R2, es la relación {(x,z)| (x,y) R1 (y,z) R2}.

Ejemplo:

a b

c

a b

c dR1 R2

4

a b

cd

R1 R2

5

❚ Def. Un grafo sin loops se llama grafo simple. El número de vértices de G se llama orden de G y el número de aristas de G se llama tamaño de G.

❚ Teorema. En cada árbol no trivial, hay al menos un vértice de grado 1.

❚ Teorema. Un grafo G es un árbol ssi G no tiene ciclos y | E | = | V | - 1.

6

Breadth First Search❚ Entrada: Grafo conexo con vértices v1, v2, ..., vn.

❚ Salida: T, árbol de cobertura de G.

❚ Algoritmo:❙ 1. (Inicio) Sea v1 la raíz de T, sea V = {v1}

❙ 2. (Agrega aristas) Para cada vértice x V, agregar la arista {x, vk} a T, donde k es el menor índice tal que al agregar la arista {x, vk} a T no se forma un ciclo. Si no hay más aristas para agregar, parar. T es el árbol de cobertura.

❙ 3. (Actualizar) Reemplazar V por los hijos v en T de los vértices x de V donde las aristas {x,v} se agregaron en el paso 2. Repetir paso 2 para el nuevo conjunto V.

7

a

b

d

c

f

e

g

ij

k

h

Ejemplo:

8

a

b

d

c

f

e

g

ij

k

h

a

G

T

9

a

b

d

c

f

e

g

ij

k

h

a

b

d

G

T

10

a

b

d

c

f

e

g

ij

k

h

a

b

d

c

G

T

11

a

b

d

c

f

e

g

ij

k

h

a

b

d

c

e

G

T

12

a

b

d

c

f

e

g

ij

k

h

a

b

d

c

f

e

g

G

T

13

a

b

d

c

f

e

g

ij

k

h

a

b

d

c

f

e

g

h

G

T

14

a

b

d

c

f

e

g

ij

k

h

a

b

d

c

f

e

g

ij

k

h

G

T

15

Depth First Search❚ Entrada: Grafo conexo con vértices v1, v2, ..., vn.

❚ Salida: T, árbol de cobertura de G.

❚ Algoritmo:❙ 1. (Visita vértice) Sea v1 la raíz de T, sea L = {v1}

❙ 2. (Encuentra aristas y vértices no visitados adyacentes a L) Para todos los vértices adyacentes a L, elegir arista {L, vk} donde k es el menor índice tal que al agregar la arista {L, vk}} a T no se forma un ciclo. Si no hay tal arista, ir a paso 3; en caso contrario agregar {L, vk}}a T y hacer L = vk. Repetir paso 2 con el nuevo valor de L

❙ 3. (Backtrack o fin) Si x es padre de L en T, hacer L = x y aplicar paso 2 al nuevo valor de L. Si L no tiene padres en T (o sea, L = v1), terminar.

16

a

b

d

c

f

e

g

ij

k

h

a

G

T

17

a

b

d

c

f

e

g

i

j

k

h

a

b

G

T

18

a

b

d

c

f

e

g

ij

k

h

a

bc

G

T

19

a

b

d

c

f

e

g

ij

k

h

a

b

d

c

G

T

20

a

b

d

c

f

e

g

ij

k

h

a

b

d

c

e

G

T

21

a

b

d

c

f

e

g

ij

k

h

a

b

d

c

f

e

G

T

22

a

b

d

c

f

e

g

ij

k

h

a

b

d

c

f

e

g

G

T

23

a

b

d

c

f

e

g

ij

k

h

a

b

d

c

f

e

g

h

G

T

24

a

b

d

c

f

e

g

ij

k

h

a

b

d

c

f

e

g

i

h

G

T

25

a

b

d

c

f

e

g

ij

k

h

a

b

d

c

f

e

g

ij

h

G

T

26

a

b

d

c

f

e

g

ij

k

h

a

b

d

c

f

e

g

ij

k

h

G

T

27

Recuerdos (Grafos planares)

❚ Teorema. Si G es un grafo plano, entonces la suma de los grados de las regiones determinadas por G es 2·|E|, donde |E| es el número de aristas de G.

❚ Fórmula de Euler. SI G es un grafo plano, entonces |V| - |E| + |R| = 2 (Euler 1752)❙ |V|: número de vértices

❙ |E|: número de aristas

❙ |R|: número de regiones

28

❚ Corolario. En un grafo conexo plano (simple) G, con |E| > 1:❙ a) |E| 3·|V| - 6, y

❙ b) hay un vértice v en G tal que grado(v) 5

❚ Teorema. Un grafo completo Kn es planar ssi n 4.

❚ Teorema. Un grafo bipartito completo Km,n es planar ssi m 2 o n 2

29

Más recuerdos (Grafos Hamiltonianos)

❚ Teorema de Dirac. Un grafo simple con n vértices (n 3) en el cual cada vértice tiene grado al menos n/2, tiene un ciclo hamiltoniano.