Arbol de Expansion Minima
October 6, 2022 | Author: Anonymous | Category: N/A
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
f
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
f
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=ileQ 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