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

Post on 28-Sep-2018

215 views 0 download

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

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

Isabel Besembel Carrera

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.

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

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

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

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

Montículos binomiales

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

2

1

Montículos binomiales

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

1

2

3

Montículos binomiales

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

1

2

3

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

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

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

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

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

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

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

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

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

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

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

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

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

Formato del nodo

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

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

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

Extracción del mínimo

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

Extracción del mínimo

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

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

Decremento de la clave

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

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

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

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