Professional Documents
Culture Documents
on Definici
on la Estructura Implementaci
on
Estructura de Datos
Clase 20: Conjuntos Disjuntos (disjoint-set)
Carlos Contreras Bolton
Universidad Andr
es Bello
Facultad de Ingeniera
10 de Junio de 2014
1/52
Introducci
on Definici
on la Estructura Implementaci
on
Contenido
1 Introducci
on
2 Definici
on la Estructura
3 Implementaci
on
Basica
Mejorada
2/52
Introducci
on Definici
on la Estructura Implementaci
on
Introduccion
3/52
Introducci
on Definici
on la Estructura Implementaci
on
Introduccion
4/52
Introducci
on Definici
on la Estructura Implementaci
on
Definicion de la Estructura
Una estructura de datos de conjuntos disjuntos
(disjoint-set data structure) mantiene una coleccion:
S = S1 , S2 , . . . , Sk
de conjuntos disjuntos entre s
i, j {1, . . . , k}|i 6= j, si Si Sj =
con elementos dentro de un cierto universo:
U = x1 , . . . , xn .
Cada conjunto de la coleccion se identifica por un
representante que puede ser un miembro cualquiera del
conjunto.
Solo se requiere que al consultar por el representante de
un conjunto dos veces consecutivas sin modificar el
conjunto el resultado sea el mismo.
Carlos Contreras Bolton Estructura de Datos
5/52
Introducci
on Definici
on la Estructura Implementaci
on
Definicion de la Estructura
6/52
Introducci
on Definici
on la Estructura Implementaci
on
Definicion de la Estructura
MakeSet(x): Crea un nuevo conjunto cuyo unico
miembro (y representante) es x. Se requiere que x no este
en ningun conjunto de la estructura.
k
entrada: x U Ui=1
Si .
0
salida: S = S {x}.
Union(x, y ): Une los conjuntos que contienen a x y a
y , sea Sx y Sy . El representante del conjunto resultante
puede ser cualquier miembro de Sx Sy . Como se
requiere que la coleccion sea disjunta, se eliminan los
conjuntos Sx y Sy de la coleccion S.
entrada: x Sx y U Sx 6= Sy .
salida: S 0 = S {Sx Sy } {Sx , Sy }.
Carlos Contreras Bolton Estructura de Datos
7/52
Introducci
on Definici
on la Estructura Implementaci
on
Definicion de la Estructura
8/52
Introducci
on Definici
on la Estructura Implementaci
on
Implementacion
9/52
Introducci
on Definici
on la Estructura Implementaci
on
Implementacion basica
i n t p a d r e [MAX ] ; / E s t e a r r e g l o c o n t i e n e e l p a d r e d e l ie s i m o nodo /
10/52
Introducci
on Definici
on la Estructura Implementaci
on
Operacion MakeSet
e l p a d r e de c a d a e l e m e n t o e s e l mismo nodo /
11/52
Introducci
on Definici
on la Estructura Implementaci
on
Operacion MakeSet
Ejemplo
nodo 0 1
padre 0 1
2 3 4 5 6 7
2 3 4 5 6 7
8
8
12/52
Introducci
on Definici
on la Estructura Implementaci
on
Operacion Find
Ejemplo
r a i z /
13/52
Introducci
on Definici
on la Estructura Implementaci
on
Operacion Find
Ejemplo
Find(3).
nodo 0 1
padre 0 0
2 3 4 5 6 7
0 1 5 5 4 0
8
4
14/52
Introducci
on Definici
on la Estructura Implementaci
on
Operacion Find
Ejemplo
Find(3).
nodo 0 1
padre 0 0
2 3 4 5 6 7
0 1 5 5 4 0
8
4
15/52
Introducci
on Definici
on la Estructura Implementaci
on
Operacion Find
Ejemplo
Find(3).
nodo 0 1
padre 0 0
2 3 4 5 6 7
0 1 5 5 4 0
8
4
16/52
Introducci
on Definici
on la Estructura Implementaci
on
Operacion Find
Ejemplo
Find(3).
nodo 0 1
padre 0 0
2 3 4 5 6 7
0 1 5 5 4 0
8
4
17/52
Introducci
on Definici
on la Estructura Implementaci
on
Operacion Union
Se debe permite unir dos conjuntos, ello se realiza por lo
siguiente:
Obtenemos la raz del conjunto de donde esta x.
Obtenemos la raz del conjunto de donde esta y .
/
/
/
de
Obtenemos l a r a z d e l c o n j u n t o de donde e s t
a x . /
Obtenemos l a r a z d e l c o n j u n t o de donde e s t
a y . /
M e z c l o ambos a r b o l e s o c o n j u n t o s , a c t u a l i z a n d o s u
e l l o s como l a r a i z de o t r o /
18/52
Introducci
on Definici
on la Estructura Implementaci
on
Operacion Union
Ejemplo
nodo 0 1
padre 0 1
2 3 4 5 6 7
2 3 4 5 6 7
8
8
19/52
Introducci
on Definici
on la Estructura Implementaci
on
Operacion Union
Ejemplo
nodo 0 1
padre 0 1
2 3 4 5 6 7
2 3 4 5 6 7
8
8
20/52
Introducci
on Definici
on la Estructura Implementaci
on
Operacion Union
Ejemplo
nodo 0 1
padre 0 1
2 3 4 5 6 7
0 3 4 5 6 7
8
8
21/52
Introducci
on Definici
on la Estructura Implementaci
on
Operacion Union
Ejemplo
nodo 0 1
padre 0 1
2 3 4 5 6 7
0 3 4 5 6 7
8
8
22/52
Introducci
on Definici
on la Estructura Implementaci
on
Operacion Union
Ejemplo
nodo 0 1
padre 0 1
2 3 4 5 6 7
0 3 4 5 6 7
8
8
23/52
Introducci
on Definici
on la Estructura Implementaci
on
Operacion Union
Ejemplo
nodo 0 1
padre 0 1
2 3 4 5 6 7
0 3 4 5 6 0
8
8
24/52
Introducci
on Definici
on la Estructura Implementaci
on
Operacion Union
Ejemplo
nodo 0 1
padre 0 1
2 3 4 5 6 7
0 3 4 5 6 0
8
8
25/52
Introducci
on Definici
on la Estructura Implementaci
on
Operacion Union
Ejemplo
nodo 0 1
padre 0 1
2 3 4 5 6 7
0 3 4 5 6 0
8
8
26/52
Introducci
on Definici
on la Estructura Implementaci
on
Operacion Union
Ejemplo
nodo 0 1
padre 0 1
2 3 4 5 6 7
0 1 4 5 6 0
8
8
27/52
Introducci
on Definici
on la Estructura Implementaci
on
Operacion Union
Ejemplo
nodo 0 1
padre 0 1
2 3 4 5 6 7
0 1 4 5 6 0
8
8
28/52
Introducci
on Definici
on la Estructura Implementaci
on
Operacion Union
Ejemplo
nodo 0 1
padre 0 1
2 3 4 5 6 7
0 1 4 5 6 0
8
8
29/52
Introducci
on Definici
on la Estructura Implementaci
on
Operacion Union
Ejemplo
nodo 0 1
padre 0 0
Carlos Contreras Bolton Estructura de Datos
2 3 4 5 6 7
0 1 4 5 6 0
8
8
30/52
Introducci
on Definici
on la Estructura Implementaci
on
Operacion Union
Ejemplo
nodo 0 1
padre 0 0
2 3 4 5 6 7
0 1 4 5 6 0
8
8
31/52
Introducci
on Definici
on la Estructura Implementaci
on
Operacion Union
Ejemplo
nodo 0 1
padre 0 0
2 3 4 5 6 7
0 1 5 5 4 0
8
4
32/52
Introducci
on Definici
on la Estructura Implementaci
on
Operacion Union
Ejemplo
nodo 0 1
padre 0 0
2 3 4 5 6 7
0 1 5 5 4 0
8
4
33/52
Introducci
on Definici
on la Estructura Implementaci
on
Operacion Union
Ejemplo
nodo 0 1
padre 0 0
2 3 4 5 6 7
0 1 5 5 4 0
8
4
34/52
Introducci
on Definici
on la Estructura Implementaci
on
Operacion Union
Ejemplo
nodo 0 1
padre 5 0
Carlos Contreras Bolton Estructura de Datos
2 3 4 5 6 7
0 1 5 5 4 0
8
4
35/52
Introducci
on Definici
on la Estructura Implementaci
on
Operaciones
Implementaci
on basica
36/52
Introducci
on Definici
on la Estructura Implementaci
on
Implementacion Mejorada
Find por Compresi
on de Caminos
e l e m e n t o x /
r a z /
/
d e l nodo a c t u a l , h a s t a l l e g a r a l a
raiz .
/ C o m p r e s i o n de c a m i n o s /
37/52
Introducci
on Definici
on la Estructura Implementaci
on
nodo 0 1
padre 0 0
2 3 4 5 6 7
0 1 5 5 4 0
8
4
38/52
Introducci
on Definici
on la Estructura Implementaci
on
nodo 0 1
padre 0 0
2 3 4 5 6 7
0 0 5 5 4 0
8
4
39/52
Introducci
on Definici
on la Estructura Implementaci
on
nodo 0 1
padre 5 0
2 3 4 5 6 7
0 1 5 5 4 0
8
4
40/52
Introducci
on Definici
on la Estructura Implementaci
on
nodo 0 1
padre 5 0
2 3 4 5 6 7
0 1 5 5 4 0
8
4
41/52
Introducci
on Definici
on la Estructura Implementaci
on
42/52
Introducci
on Definici
on la Estructura Implementaci
on
Caso contrario:
Se actualiza el padre de la raz de x asignandole como
nuevo padre la raz de Y.
Si los rangos de ambas races son iguales incremento el
rango de la nueva raz en este caso incremento el rango
de la raz del vertice y .
43/52
Introducci
on Definici
on la Estructura Implementaci
on
44/52
Introducci
on Definici
on la Estructura Implementaci
on
n)
i < n;
i ++)
i ; / I n i c i a l m e n t e e l p a d r e de c a d a e l e m e n t o e s e l mismo nodo /
0 ; / A l t u r a o r a n g o de c a d a nodo e s 0 /
45/52
Introducci
on Definici
on la Estructura Implementaci
on
nodo 0
padre 0
rango 2
Carlos Contreras Bolton Estructura de Datos
1 2 3 4 5 6
0 0 1 4 5 4
1 0 0 1 0 0
7 8
0 8
0 0
46/52
Introducci
on Definici
on la Estructura Implementaci
on
nodo 0
padre 0
rango 2
Carlos Contreras Bolton Estructura de Datos
1 2 3 4 5 6
0 0 1 4 5 4
1 0 0 1 0 0
7 8
0 8
0 0
47/52
Introducci
on Definici
on la Estructura Implementaci
on
nodo 0
padre 0
rango 2
Carlos Contreras Bolton Estructura de Datos
1 2 3 4 5 6
0 0 1 4 5 4
1 0 0 1 0 0
7 8
0 4
0 0
48/52
Introducci
on Definici
on la Estructura Implementaci
on
nodo 0
padre 0
rango 2
Carlos Contreras Bolton Estructura de Datos
1 2 3 4 5 6
0 0 1 4 5 4
1 0 0 1 0 0
7 8
0 4
0 0
49/52
Introducci
on Definici
on la Estructura Implementaci
on
nodo 0
padre 0
rango 2
Carlos Contreras Bolton Estructura de Datos
1 2 3 4 5 6
0 0 1 4 5 4
1 0 0 1 0 0
7 8
0 4
0 0
50/52
Introducci
on Definici
on la Estructura Implementaci
on
nodo 0
padre 0
rango 2
Carlos Contreras Bolton Estructura de Datos
1 2 3 4 5 6
0 0 0 0 5 4
1 0 0 1 0 0
7 8
0 4
0 0
51/52
Introducci
on Definici
on la Estructura Implementaci
on
52/52