Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos...

32
Análisis y Diseño de Algoritmos (AyDA) Isabel Besembel Carrera

Transcript of Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos...

Page 1: Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos dinámicos, S={S 1,…,S k} Conjuntos disjuntos Cada conjunto en S contiene un miembro

Análisis y Diseño de Algoritmos (AyDA)

Isabel Besembel Carrera

Page 2: Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos dinámicos, S={S 1,…,S k} Conjuntos disjuntos Cada conjunto en S contiene un miembro

Montículos binomialesColas binomiales

Implementan eficientemente la mezcla de dos colas por prioridadSe componen de un bosque de árboles binomialesÁrbol binomial de altura Br es un árbol donde:

Bo consiste en un único nodoBr se compone de dos árboles de Br-1, donde uno de los dos está adosado a la raíz del otro como su hijo extremo derecho

15/10/2009 2Postgrado en Computación. Análisis y Diseño de Algoritmos (AyDA). Isabel Besembel.

Page 3: Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos dinámicos, S={S 1,…,S k} Conjuntos disjuntos Cada conjunto en S contiene un miembro

Propiedades de los árboles binomiales

Hay 2r nodosAltura rHay exactamente (r

i) nodos de profundidad i=0, 1, 2,…, rLa raíz tiene grado r mayor que cualquier grado de otro nodo en Br. Si los hijos de la raíz se numeran de izquierda a derecha por r-1, r-2, …, 0, el hijo i es la raíz del subárbol BiEl máximo grado de cualquier nodo en un árbol binomial de n nodos es lg n

15/10/2009 Postgrado en Computación. Análisis y Diseño de Algoritmos (AyDA). Isabel Besembel. 3

Page 4: Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos dinámicos, S={S 1,…,S k} Conjuntos disjuntos Cada conjunto en S contiene un miembro

15/10/2009 Postgrado en Computación. Análisis y Diseño de Algoritmos (AyDA). Isabel Besembel. 4

Page 5: Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos dinámicos, S={S 1,…,S k} Conjuntos disjuntos Cada conjunto en S contiene un miembro

15/10/2009 Postgrado en Computación. Análisis y Diseño de Algoritmos (AyDA). Isabel Besembel. 5

Bo B1 B2

B3

Árboles binomiales

Bo Br

Br-1

Br-1

Page 6: Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos dinámicos, S={S 1,…,S k} Conjuntos disjuntos Cada conjunto en S contiene un miembro

Montículos binomiales

15/10/2009 Postgrado en Computación. Análisis y Diseño de Algoritmos (AyDA). Isabel Besembel. 6

1 2

Un montículo binomial (H) es un montículo mezclable conformado por un conjunto de árboles binomiales que satisfacen:1. Cada árbol binomial en H es un montículo

ordenado. La clave del nodo X es mayor o igual a la clave de su padre, por lo que la clave de la raíz es la menor

2. Hay a lo sumo un árbol binomial en H cuya raíz es de grado dado. H consiste de a lo más ⎣lg n⎦ + 1 árboles binomiales

Page 7: Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos dinámicos, S={S 1,…,S k} Conjuntos disjuntos Cada conjunto en S contiene un miembro

Montículos binomiales

15/10/2009 Postgrado en Computación. Análisis y Diseño de Algoritmos (AyDA). Isabel Besembel. 7

2

1

Page 8: Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos dinámicos, S={S 1,…,S k} Conjuntos disjuntos Cada conjunto en S contiene un miembro

Montículos binomiales

15/10/2009 Postgrado en Computación. Análisis y Diseño de Algoritmos (AyDA). Isabel Besembel. 8

1

2

3

Page 9: Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos dinámicos, S={S 1,…,S k} Conjuntos disjuntos Cada conjunto en S contiene un miembro

Montículos binomiales

15/10/2009 Postgrado en Computación. Análisis y Diseño de Algoritmos (AyDA). Isabel Besembel. 9

1

2

3

Page 10: Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos dinámicos, S={S 1,…,S k} Conjuntos disjuntos Cada conjunto en S contiene un miembro

Montículos binomiales

15/10/2009 Postgrado en Computación. Análisis y Diseño de Algoritmos (AyDA). Isabel Besembel. 10

1

2

3 4

Page 11: Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos dinámicos, S={S 1,…,S k} Conjuntos disjuntos Cada conjunto en S contiene un miembro

Montículos binomiales

15/10/2009 Postgrado en Computación. Análisis y Diseño de Algoritmos (AyDA). Isabel Besembel. 11

1

2

3

4

Page 12: Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos dinámicos, S={S 1,…,S k} Conjuntos disjuntos Cada conjunto en S contiene un miembro

Montículos binomiales

15/10/2009 Postgrado en Computación. Análisis y Diseño de Algoritmos (AyDA). Isabel Besembel. 12

1

2 3

4

Page 13: Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos dinámicos, S={S 1,…,S k} Conjuntos disjuntos Cada conjunto en S contiene un miembro

Montículos binomiales

15/10/2009 Postgrado en Computación. Análisis y Diseño de Algoritmos (AyDA). Isabel Besembel. 13

1

2 3

4

5

Page 14: Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos dinámicos, S={S 1,…,S k} Conjuntos disjuntos Cada conjunto en S contiene un miembro

Montículos binomiales

15/10/2009 Postgrado en Computación. Análisis y Diseño de Algoritmos (AyDA). Isabel Besembel. 14

1

2 3

4

5

Page 15: Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos dinámicos, S={S 1,…,S k} Conjuntos disjuntos Cada conjunto en S contiene un miembro

Montículos binomiales

15/10/2009 Postgrado en Computación. Análisis y Diseño de Algoritmos (AyDA). Isabel Besembel. 15

1

2 3

4

5 6

Page 16: Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos dinámicos, S={S 1,…,S k} Conjuntos disjuntos Cada conjunto en S contiene un miembro

Montículos binomiales

15/10/2009 Postgrado en Computación. Análisis y Diseño de Algoritmos (AyDA). Isabel Besembel. 16

1

2 3

4

5

6

Page 17: Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos dinámicos, S={S 1,…,S k} Conjuntos disjuntos Cada conjunto en S contiene un miembro

Montículos binomiales

15/10/2009 Postgrado en Computación. Análisis y Diseño de Algoritmos (AyDA). Isabel Besembel. 17

1

2 3

4

5

6

7

Page 18: Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos dinámicos, S={S 1,…,S k} Conjuntos disjuntos Cada conjunto en S contiene un miembro

Montículos binomiales

15/10/2009 Postgrado en Computación. Análisis y Diseño de Algoritmos (AyDA). Isabel Besembel. 18

1

2 3

4

5

6

7

Page 19: Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos dinámicos, S={S 1,…,S k} Conjuntos disjuntos Cada conjunto en S contiene un miembro

Montículos binomiales

15/10/2009 Postgrado en Computación. Análisis y Diseño de Algoritmos (AyDA). Isabel Besembel. 19

1

2 3

4

5

6

7

Implementación con lista de árboles

1

2 3

4

5

6

7

raíz

Page 20: Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos dinámicos, S={S 1,…,S k} Conjuntos disjuntos Cada conjunto en S contiene un miembro

Unión de montículos binomiales

15/10/2009 Postgrado en Computación. Análisis y Diseño de Algoritmos (AyDA). Isabel Besembel. 20

1

2 3

4

11

12 13

14

2 2

0

0

0

0

1

Implementación Unión en 2 fases:1. Mezcla las 2 listas de raíces

siguiendo el grado de sus nodos en forma ascendente

2. Mezcla las raíces con igual grado hasta tener una raíz de cada grado

B2 B2

1

Page 21: Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos dinámicos, S={S 1,…,S k} Conjuntos disjuntos Cada conjunto en S contiene un miembro

Unión de montículos binomiales

15/10/2009 Postgrado en Computación. Análisis y Diseño de Algoritmos (AyDA). Isabel Besembel. 21

1

2 3

4

11

12 13

14

3

0

0

0

0

1

1

2

Page 22: Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos dinámicos, S={S 1,…,S k} Conjuntos disjuntos Cada conjunto en S contiene un miembro

Montículos de FibonacciMontículos

Es un montículo mezclable conformado por una colección de árboles, pero sin relación de orden entre ellosSe recomiendan cuando el número de extMin() o extMax() y elimina() es menor en relación al número de ocurrencias de las otras operacionesDiferencia con los binomiales: los de Fibonacci tienen una estructura menos rígida, cuyo mantenimiento se retrasa hasta que sea conveniente, permitiendo una menor complejidad en tiempo

15/10/2009 Postgrado en Computación. Análisis y Diseño de Algoritmos (AyDA). Isabel Besembel. 22

Page 23: Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos dinámicos, S={S 1,…,S k} Conjuntos disjuntos Cada conjunto en S contiene un miembro

Formato del nodo

15/10/2009 Postgrado en Computación. Análisis y Diseño de Algoritmos (AyDA). Isabel Besembel. 23

Page 24: Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos dinámicos, S={S 1,…,S k} Conjuntos disjuntos Cada conjunto en S contiene un miembro

15/10/2009 Postgrado en Computación. Análisis y Diseño de Algoritmos (AyDA). Isabel Besembel. 24

Inserción de un nuevo elemento de clave 21

Page 25: Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos dinámicos, S={S 1,…,S k} Conjuntos disjuntos Cada conjunto en S contiene un miembro

Montículos de Fibonacci

15/10/2009 Postgrado en Computación. Análisis y Diseño de Algoritmos (AyDA). Isabel Besembel. 25

Lista de raíces (enlazadas con )Bosque de árboles montículos sin alguna forma o tamaño predefinidoPuede manejar un conjunto de colas por prioridad disjuntas

Page 26: Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos dinámicos, S={S 1,…,S k} Conjuntos disjuntos Cada conjunto en S contiene un miembro

Extracción del mínimo

15/10/2009 Postgrado en Computación. Análisis y Diseño de Algoritmos (AyDA). Isabel Besembel. 26

Page 27: Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos dinámicos, S={S 1,…,S k} Conjuntos disjuntos Cada conjunto en S contiene un miembro

Extracción del mínimo

15/10/2009 Postgrado en Computación. Análisis y Diseño de Algoritmos (AyDA). Isabel Besembel. 27

Page 28: Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos dinámicos, S={S 1,…,S k} Conjuntos disjuntos Cada conjunto en S contiene un miembro

15/10/2009 Postgrado en Computación. Análisis y Diseño de Algoritmos (AyDA). Isabel Besembel. 28

Decremento de la clave

Page 29: Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos dinámicos, S={S 1,…,S k} Conjuntos disjuntos Cada conjunto en S contiene un miembro

Mantiene una colección de conjuntos dinámicos, S={S1,…,Sk}Conjuntos disjuntos

Cada conjunto en S contiene un miembro que lo representa e identifica, denominado su representante XOperaciones:

Crea(X): crea un nuevo conjunto con un solo elemento que a su vez es su representante, el cual no pertenece a ningún otro conjunto de miembrosUnion(X,Y): unifica los 2 conjuntos dinámicos que contienen a X e Y, SX, SY, en un nuevo conjunto con todos los miembros de SX y de SY

15/10/2009 Postgrado en Computación. Análisis y Diseño de Algoritmos (AyDA). Isabel Besembel. 29

Page 30: Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos dinámicos, S={S 1,…,S k} Conjuntos disjuntos Cada conjunto en S contiene un miembro

Operaciones del conjunto disjunto

El representante de la unión se escoge entre sus miembros, pero normalmente se selecciona uno de los 2 representantes de los conjuntos unidos.Los conjuntos unidos son eliminados, pues no pueden haber repetidosbusca(X): regresa una referencia al representante que contiene X

15/10/2009 Postgrado en Computación. Análisis y Diseño de Algoritmos (AyDA). Isabel Besembel. 30

Page 31: Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos dinámicos, S={S 1,…,S k} Conjuntos disjuntos Cada conjunto en S contiene un miembro

Ejemplo de aplicación

15/10/2009 Postgrado en Computación. Análisis y Diseño de Algoritmos (AyDA). Isabel Besembel. 31

Determinación de las componentes conexas de un grafo no dirigido

Page 32: Análisis y Diseño de Algoritmos (AyDA) Isabel … · Mantiene una colección de conjuntos dinámicos, S={S 1,…,S k} Conjuntos disjuntos Cada conjunto en S contiene un miembro

Representación con listas enlazadas

15/10/2009 Postgrado en Computación. Análisis y Diseño de Algoritmos (AyDA). Isabel Besembel. 32

Algoritmos son igual de rápidos en ambas representaciones, pero si se incluye la unión por rango y la compresión de caminos, es mejor el bosque de árboles

Representación como bosque de árbolesCada nodo apunta al padreEl nodo representante apunta a él mismo