Arbol de Expansion Minima

October 6, 2022 | Author: Anonymous | Category: N/A
Share Embed Donate


Short Description

Download Arbol de Expansion Minima...

Description

 

UPC COMPLEJIDAD ALGORTIMICA – CC76

Árbol de Expansión Mínima

UNIDAD III. ANÁLISIS MATEMÁTICO DE ALGORITMOS

 

Mapa Conceptual del Curso

FUNCIONES, NOTACIÓN ASINTÓTICA Y BACKTRACKING

2

GRAFOS Y BÚSQUEDA EN GRAFOS.

ANÁLISIS MATEMÁTICO DE ALGORITMOS; ALGORITMOS EN GRAFOS

ESTRATEGIAS DE BUSQUEDA

 

Contenido nido Tabla de Conte •

MOTIVACIÓN  – ¿Cómo conectar N ciudades?  –  –  –

¿Cómo conectar una ciudad? ¿Cómo diseño de circuitos electrónicos? ¿Cómo diseñar de transporte de flujo?

EXPANSIÓN ANSIÓN •  ÁRBOL DE EXP  –  Árbol de Expansión Expansión

EXPANSIÓN ANSIÓN MÍNIMA •  ÁRBOL DE EXP  –  Árbol de Expansión Expansión Mínima  – Requerimiento  – Propiedades  –  Algoritmos

•  ALGORITMO  –  Algoritmo de DE Prim PRIM  –  Análisis

•  ALGORITMO DE KRUSKAL  –  Algoritmo de Kruskal  –  Análisis

3  

MOTIVACIÓN b

2

s

2

d

3

4

1

t

3

a

3

c

2

 

¿Cómo conectar N ciudades?

5  

¿Cómo conectar una ciudad?

6  

¿Cómo diseño de circuitos electrónicos? • Usar la menor cantidad posible de cable.

Fuente: http://www.hexapolis.com/wp-content/uploads/2015/02/Reconfigurable-Electronic-Circuits-51.jpg

7  

¿Cómo diseñar de transporte de flujo? • De co comp mpu uta tad dor oras as,, tran transp spo orte, rte, fluj flujo o híd ídri rico co,, etc. etc. • Minimizar el uso de recursos de construcción.

Fuente: http://www.ecritel.fr/IMG/jpg/network2.jpg

8  

 Aplicaciones • Diseño de redes de telecomunicaciones nacionales e

internacionales.

• Diseño de redes de transporte nacional o internacional,

para minimi imiza zarr el co cossto total de lo loss desplazamientos. • Diseño de redes de transmisión de energía. • Diseño de redes de tuberías de agua o desagüe.

9  

Requerimiento • Sea un grafo no dirigido, con pesos.

a

6

5 1

b

5 3

5



2

4

6 c

d

6

e

• Conectar todos los nodos de una red, de tal forma que no a

formen cicl iclos entre ellos.

1

b

5 3

Solución= 3+5+1+4+2 = 15

d



2

4 c

e

10  

 ÁRBOL DE EXPANSIÓN EXPANSIÓN

 

 Árbol de Expansión • Un árbol de expansión de un grafo G=(V, A) no dirigido y conexo es un subgrafo G’=(V G’=(V,, A’) A’) conexo y sin ciclos. 4 1

2 1

1 3 4

3

5

4

2

3

2

2

5

3

5

2

5

3

5

5

2

5

3

5

2

5

3

• Los árboles de expansión en profundidad y en anchura de

un grafo conexo.

12  

 Árbol de Expansión

• En grafos con pesos, el coste del árbol de expansión es la

suma de los costes de las aristas.

13  

 Árbol de Expansión • Sea el grafo:  A

T B

O

C

D

E

14  

 Árbol de Expansión  A

T

B

O

D

Red no conexa. No es árbol C

E

 A

T B

O C

DD E

Red con ciclo, no es un árbol

15  

 Árbol de Expansión  A

T B

O C

DD E

Un árbol de expansión: Tie Tiene ne n nodos y n-1 arcos

16  

 ÁRBOL DE EXPANSIÓN EXPANSIÓN MÍNIMA

 

 Árbol de Expansión Mínima •  Árbol de expansión mínima. •  Árbol de cubrimiento de costo mínimo. •  Árbol recubridor mínimo

18  

Requerimiento • Dado un u n graf grafo o G = (V (V,, A)  – No dirigido  – Valorado, con pesos no negativos

19  

 Árbol de Expansión Mínima • Para un grafo G = (V, A) no dirigido y conexo • El árbol de expansión mínima:  – Es un subgrafo G’=(V G’=(V,, A’) A’) conexo y sin ciclos.  – Tal que la suma de sus aristas sea mínima. • Problema:  – Dado un grafo ponderado no dirigido, encontrar el árbol

de expansión de menor coste.

20  

Propiedades Propiedad: • Sea G = (V, E) un grafo conectado con pesos. • Sea U un subconjunto del conjunto de vértices V.  – Si e=(u, v) es la arista de menor costo considerando  U y v  V-U que: u  – Entonces hay un árbol de expansión mínima que incluye (u, v) como arista.

V-U U e

21  

 Algoritmos •  Algoritmos comunes para resolver resolver el problema:  – Prim  – Kruskal •  Ambos algoritmos  – utilizan la propiedad anterior.  – son de tipo voraz: se selecciona uno de los candidatos

con el criterio que es mejor en cada momento (menor costo).

22  

Ejercicio • Calcular todos los servidores, de tal forma que se pueda

llegar a todos los otros servidores, desde cualquier   servidor. 2

3 1 5

2

6

4

5 6

3

23  

DE PRIM  ALGORITMO DE

 

 Algoritmo de Prim 1. Empe Empezar zar en un vér vértice tice cualq cualquiera uiera v. El árbol consta inicialmente sólo del nodo v. 2. En el resto de vértices vértices,, buscar buscar el que esté más más próximo a v (es decir, con la arista (v, w) de coste mínimo). Añadir w y la arista (v, w) al árbol.

3. Busca Buscarr el vérti vértice ce más p próxim róximo o a cualqu cualquiera iera de estos dos. Añadir ese vértice y la arista al árbol de expansión. 4. Repe Repetir tir suce sucesivam sivamente ente ha hasta sta aña añadir dir los n vértices.

25  

 Algoritmo de Prim Prim (G, T ) { T= U = {1} while U  V { seleccionar la arista (u, v) de menor costo tal que u  U y v  V-U T = T  {(u, v)} v

}

}

U v=] =U d { } d[ v

26  

 Algoritmo de Prim • El árbol T aumenta un vértice cada vez. • El ar arra rayy d[v] contiene el menor costo de la arista

que conecta v con el árbol. • Tiene una complejidad

O(n2).

27  

Ejemplo

3 3

2

1

2

1

6

2 3

5

4

5 5 4

6

6

28  

Ejemplo 2

1

2 3

2

1

3

5

5 4

6

29  

 Análisis • La

solución se construye poco a empezando con una solución “vacía”.

• Implícitamente,

el

algoritmo

maneja

poco, lo s

conjuntos:

 – V: Vértices del grafo.  – U: Vértices añadidos a la solución.  – V-U: Vértices que quedan por añadir.

• ¿Cómo implementar eficientemente la búsqueda:

encontrar el vértice de V-U más próximo a alguno de los de U?

30  

Ejercicio • Encontrar el árbol de expansión mínima por el algoritmo de

Prim

31  

Ejercicio

32  

Ejercicio

 A

O

2

7 2

5

B

4

C

4

D

3

1

4

T

5 1 E

7

33  

Ejercicio

 A

2

7 2

5

O

B

1 4

C

4

T

5 4

D

3

1 E

7

34  

 ALGORITMO DE DE KRUSKAL

 

 Algoritmo de Kruskal • Sea el grafo G= (V (V,, A) • Empez Empezar ar con con un g graf rafo os sin in arista aristas: s: G’= (V, (V, Ø) Ø) • Seleccionar la arista de menor coste de A.  – Si la arista seleccionada seleccionada forma un ciclo en G’, G’, eliminarla.  – Si no, añadirla a G’. • Repetir los dos pasos anteriores hasta tener n-1 aristas.

(v, w) provocará un ciclo en el • ¿Cómo saber si una arista (v, grafo G’?

36  

 Algoritmo de Kruskal Kr Krus kall (G (G,, T T)) { uska forr cada fo cada vvér értitice ce v en G C(v) = {v} /* grupo de vértices */ Q = cola de prioridad { (u, v)  G, clave = w(u, v) } T wh=ileQ  0 { Extraer de Q la arista (v, u) con menor peso if C(v)  C(u) /* no forma ciclo */ 

}

}

v

u

T=T C(v) = C( { (v), ) C( } u)

37  

 Algoritmo de Kruskal • • • •

 Añade una arista cada vez por orden de peso.  Acepta una arista si no produce produce un ciclo. Se implementa usando una cola de prioridad. Tiene una complejidad O(e log e).

• Sabemos que en el árbol de expansión deben aparecer

todos los vértices de G • Lo que no sabemos aún es qué arcos escoger para unirlos • Lo que a Kruskal Kruskal intere interesara sara ele elegir gir son los arc arcos, os, no los vértices, como enlePrim

38  

Ejemplo 2

1

3

2

2

6

3

1

3

5

4

5

5 4

6

6

39  

Ejercicio 2

1 1 4

2  

6

4 3

4

3  

5 6 8

5

6 7

4

3 7

40  

Ejercicio 2

1 1

2

3

5

6

4 3

4

4

3 7

41  

Ejercicio • Calcular el árbol de expansión mínima por Kruskal

42  

Ejercicio

43  

Ejercicio

44  

Ejercicio

45  

 Análisis • Implementación del algoritmo • Necesitamos:  – Ordenar las aristas de G, de menor a mayor:

O(a log a).

 – Saber si una arista dada (v (v,, w) provocará un ciclo.

46  

 Análisis • ¿Cómo comprobar rápidamente si (v (v,, w) forma un ciclo? • Una arista (v, (v, w) forma un ciclo si v y w están en el mismo

conexo. componente conexo. • La re rela lac ción ión “es “está tán n en en e ell m mis ismo mo componente conexo” es

una relación de equivalencia.

47  

 Análisis Connected_Components(G) for (cada vertice v en V[G] ) Make_Set(v); for (cada (cada arco arco (u,v (u,v) ) en en E [G]) [G]) Union(u,v);



a

b

e

c

d

g

f

h

 j

i

Considerando que los arcos se procesan en el orden: (b,d); (e,g); (a,c); (h,i); (a,b); (e,f); (b,c)

48  

Referencias Thomas H. and Others. Introduction to  Algorithms, Second Edition. 2001.

• Cormen,

• Ha Halim lim Ste Steven ven & Fe Felix lix.. Competitive Programming.

Increasing the Lower Bound of Programming Contests

49  

Visualización PRIM • https://www.cs.usfca.edu/~ galles/visualization/Prim.html

Kruskal • https://www.cs.usfca.edu/~ galles/visualization/Kruskal.html

50  

PREGUNTAS

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF