Estructuras de datos: Conjuntos disjuntos

Primer enfoque Segundo enfoque Estructuras de datos: Conjuntos disjuntos Algoritmos ´ - Fac. de Informatica ´ Dep. de Computacion ˜ Universidad de A

4 downloads 155 Views 231KB Size

Recommend Stories


Conjuntos disjuntos (Relaciones de equivalencia)
Conjuntos disjuntos (Relaciones de equivalencia) Una relación R se define en un conjunto C si para todo par de elementos (a, b), a, b ∈ C, a R b es ve

Estructuras de datos. Estructuras de datos
Estructuras de datos Un arbol es un conjunto de nodos que cumplen con las relaciones padre, hijo y hermano. Llamamos hijos de un nodo a todos los nodo

Story Transcript

Primer enfoque Segundo enfoque

Estructuras de datos: Conjuntos disjuntos Algoritmos ´ - Fac. de Informatica ´ Dep. de Computacion ˜ Universidad de A Coruna

Santiago Jorge [email protected]

Algoritmos

Conjuntos disjuntos

Primer enfoque Segundo enfoque

´ Referencias bibliograficas

G. Brassard y T. Bratley. Estructura de datos. En Fundamentos ´ de algoritmia, cap´ıtulo 5, paginas 167–210. Prentice Hall, 1997. M. A. Weiss. El TDA conjunto ajeno. En Estructuras de datos y ´ algoritmos, cap´ıtulo 8, paginas 271–292. Addison-Wesley Iberoamericana, 1995. ´ A. V. Aho, J. E. Hopcroft y J. D. Ullman. Metodos avanzados de ´ de conjuntos. En Estructuras de datos y representacion ´ algoritmos, cap´ıtulo 5, paginas 157–199. Addison-Wesley Iberoamericana, 1988. U. Manber. Data Structures. En Introduction to Algorithms. A ´ Creative Approach, cap´ıtulo 4, paginas 61–90. Addison-Wesley, 1989.

Algoritmos

Conjuntos disjuntos

Primer enfoque Segundo enfoque

´Indice

1

Primer enfoque

2

Segundo enfoque ´ por alturas Union ´ de caminos Compresion

Algoritmos

Conjuntos disjuntos

Primer enfoque Segundo enfoque

´Indice

1

Primer enfoque

2

Segundo enfoque ´ por alturas Union ´ de caminos Compresion

Algoritmos

Conjuntos disjuntos

Primer enfoque Segundo enfoque

´ de conjuntos disjuntos Representacion Todos los elementos se numeran de 1 a n. Cada subconjunto tomara´ su nombre de uno de sus elementos, ´ pequeno. ˜ su representante, p. ej. el valor mas Mantenemos en un vector el nombre del subconjunto disjunto de cada elemento

6

2

3

4

5

8

7

1

9

10

1

2

3

4

5

6

7

8

9

10

C 1

2

3

2

1

3

2

3

3

2

Algoritmos

Conjuntos disjuntos

Primer enfoque Segundo enfoque

´ Operaciones validas

´ inicial es una coleccion ´ de n conjuntos, Ci . La representacion Cada conjunto tiene un elemento diferente, Ci ∩ Cj = 0/ As´ı, al principio se tiene Ci = {i }. ´ Hay dos operaciones validas. La busqueda devuelve el nombre del conjunto ´ de un elemento dado. ´ combina dos subconjuntos que contienen La union ´ a y b en un subconjunto nuevo, destruyendose los originales.

Algoritmos

Conjuntos disjuntos

Primer enfoque Segundo enfoque

´ Pseudocodigo (i) tipo Elemento = entero; Conj = entero; ConjDisj = vector [1..N] de entero funci´ on Buscar1 (C, x) : Conj devolver C[x] fin funci´ on

La busqueda es una simple consulta O (1). ´ El nombre del conjunto devuelto por busqueda es arbitrario. ´ ´ Todo lo que importa es que busqueda(x)=b usqueda(y) si y solo ´ ´ ´ en el mismo conjunto. si x e y estan Algoritmos

Conjuntos disjuntos

Primer enfoque Segundo enfoque

´ Pseudocodigo (ii) procedimiento Unir1 (C, a, b) i := min (C[a], C[b]); j := max (C[a], C[b]); para k := 1 hasta N hacer si C[k] = j entonces C[k] := i fin para fin procedimiento

´ toma O (n). No importa, en lo que concierne a La union ´ que´ conjunto retiene su nombre. correccion, ´ Una secuencia de n − 1 uniones (la maxima, ya que entonces todo estar´ıa en un conjunto) tomar´ıa O (n2 ). ´ de m busquedas La combinacion y n − 1 uniones toma ´ O (m + n2 ). Algoritmos

Conjuntos disjuntos

Primer enfoque Segundo enfoque

´ por alturas Union ´ de caminos Compresion

´Indice

1

Primer enfoque

2

Segundo enfoque ´ por alturas Union ´ de caminos Compresion

Algoritmos

Conjuntos disjuntos

Primer enfoque Segundo enfoque

´ por alturas Union ´ de caminos Compresion

Segundo enfoque ´ Se utiliza un arbol para caracterizar cada subconjunto. La ra´ız nombra al subconjunto. ´ de los arboles ´ ´ porque la unica La representacion es facil ´ ´ necesaria es un apuntador al padre. informacion Cada entrada p[i] en el vector contiene el padre del elemento i. Si i es una ra´ız, entonces p[i]=i 1

2

5

4

7

3

6

8

9

10

1

2

3

4

5

6

7

8

9

10

C 1

2

3

2

1

3

4

3

3

4

Algoritmos

Conjuntos disjuntos

Primer enfoque Segundo enfoque

´ por alturas Union ´ de caminos Compresion

´ Pseudocodigo (i) funci´ on Buscar2 (C, x) : Conj r := x; mientras C[r] r hacer r := C[r] fin mientras; devolver r fin funci´ on

Una busqueda sobre el elemento x se efectua ´ ´ ´ devolviendo la ra´ız del arbol que contiene x. La busqueda de un elemento x es proporcional a la profundidad ´ del nodo con x. En el peor caso es O (n) Algoritmos

Conjuntos disjuntos

Primer enfoque Segundo enfoque

´ por alturas Union ´ de caminos Compresion

´ Pseudocodigo (ii)

procedimiento Unir2 (C, ra´ ız1, ra´ ız2) { supone que ra´ ız1 y ra´ ız2 son ra´ ıces } si ra´ ız1 < ra´ ız2 entonces C[ra´ ız2] := ra´ ız1 sino C[ra´ ız1] := ra´ ız2 fin procedimiento

´ de dos conjuntos se efectua La union ´ combinando ´ ´ ambos arboles: apuntamos la ra´ız de un arbol a la del otro. ´ toma O (1). La union ´ de m busquedas La combinacion y n − 1 uniones toma O (m · n). ´

Algoritmos

Conjuntos disjuntos

´ por alturas Union ´ de caminos Compresion

Primer enfoque Segundo enfoque

´ por alturas Union Las uniones anteriores se efectuaban de modo arbitrario. ´ Una mejora sencilla es realizar las uniones haciendo del arbol ´ ´ ´ profundo. menos profundo un subarbol del arbol mas ´ cuando se unen dos arboles ´ La altura se incrementa solo de igual altura. 1

2

5

4

3

6

7

8

9

10

1

2

3

4

5

6

7

8

9

C 1

2

3

2

1

3

4

3

3

1

2

3

4

5

6

7

8

9

A 1

2

1 Algoritmos

Conjuntos disjuntos

10

4 10

Primer enfoque Segundo enfoque

´ por alturas Union ´ de caminos Compresion

´ Pseudocodigo procedimiento Unir3 (C, A, ra´ ız1, ra´ ız2) { supone que ra´ ız1 y ra´ ız2 son ra´ ıces } si A[ra´ ız1] = A[ra´ ız2] entonces A[ra´ ız1] := A[ra´ ız1] + 1; C[ra´ ız2] := ra´ ız1 sino si A[ra´ ız1] > A[ra´ ız2] entonces C[ra´ ız2] := ra´ ız1 sino C[ra´ ız1] := ra´ ız2 fin procedimiento La profundidad de cualquier nodo nunca es mayor que log2 (n). Todo nodo esta´ inicialmente a la profundidad 0. Cuando su profundidad se incrementa como resultado de una ´ se coloca en un arbol ´ union, al menos el doble de grande. ´ log2 (n) veces. As´ı, su profundidad se puede incrementar a lo mas,

´ de una busqueda El tiempo de ejecucion es O (log(n)). ´ Combinando m busquedas y n − 1 uniones, O (m · log(n) + n). ´ Algoritmos

Conjuntos disjuntos

Primer enfoque Segundo enfoque

´ por alturas Union ´ de caminos Compresion

´ de caminos Compresion ´ de caminos se ejecuta durante busqueda. La compresion ´ Durante la busqueda de un dato x, todo nodo en el camino de x ´ a la ra´ız cambia su padre por la ra´ız. Es independiente del modo en que se efectuen las uniones. ´

funci´ on Buscar3 (C, x) : Conj r := x; mientras C[r] r hacer r := C[r] fin mientras; i := x; mientras i r hacer j := C[i]; C[i]:= r; i := j fin mientras; devolver r fin funci´ on Algoritmos

Conjuntos disjuntos

Primer enfoque Segundo enfoque

´ por alturas Union ´ de caminos Compresion

Rangos

´ de caminos no es totalmente compatible con la La compresion ´ por alturas. union ´ Al buscar, la altura de un arbol puede cambiar.

´ Las alturas almacenadas para cada arbol se convierten en alturas estimadas (rangos). ´ por rangos es tan eficiente, en teor´ıa, como la union ´ Pero la union por alturas.

Algoritmos

Conjuntos disjuntos

Primer enfoque Segundo enfoque

´ por alturas Union ´ de caminos Compresion

´ de caminos Ejemplo de compresion

6

Buscar3(20)

4

1

11

9

12

10

6

9

4

8

1

11

12

20

21

16

Algoritmos

Conjuntos disjuntos

8

20

21

10 16

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.