View
50
Download
2
Category
Preview:
DESCRIPTION
Fibonacci Heap(HF). min. H. 17. 24. 23. 7. 3. 30. 26. 46. 18. 52. 41. 35. marcado. 44. 39. Para conocer en detalle de como representar un HF mediante estructuras de datos, vea la pág. 422, CLR. Fibonacci Heap(HF). t(H) = 5, m(H) = 3, (H) = 11. min. H. grado 3. 17. - PowerPoint PPT Presentation
Citation preview
Dr. Eric Jeltsch F. Ingenieria en Computacion, ULS(DAA_2004)
1
Fibonacci Heap(HF)
723
30
17
35
26 46
24
H
39
4118 52
3
44
min
marcado
Para conocer en detalle de como representar un HF mediante estructuras de datos, vea la pág. 422, CLR.
Dr. Eric Jeltsch F. Ingenieria en Computacion, ULS(DAA_2004)
2
Fibonacci Heap(HF)
723
30
17
35
26 46
24
H
39
4118 52
3
44
min
marcado
grado[x] = grado del nodo x (nº de hijos).
marca[x] = nodo marcado x (gris). t(H)= # arbol. m(H)= # nodos marcados. (H)= t(H) + 2m(H) , es la función potencial.
t(H) = 5, m(H) = 3, (H) = 11
grado 3
Dr. Eric Jeltsch F. Ingenieria en Computacion, ULS(DAA_2004)
3
Fibonacci Heap(HF)
723
30
17
35
26 46
24
H
39
4118 52
3
44
minInsertar(x): Crea un nuevo árbol con x como raíz, y se situa a la izq. del puntero min. Actualizando el min si corresponde.
Insert 21
21
Dr. Eric Jeltsch F. Ingenieria en Computacion, ULS(DAA_2004)
4
Fibonacci Heap(HF)
723
30
17
35
26 46
24
H
39
4118 52
3
44
min
21
Insert 2
Dr. Eric Jeltsch F. Ingenieria en Computacion, ULS(DAA_2004)
5
Fibonacci Heap(HF)
723
30
17
35
26 46
24
H
39
4118 52
3
44
min
21 2
Dr. Eric Jeltsch F. Ingenieria en Computacion, ULS(DAA_2004)
6
Fibonacci Heap(HF)
723
30
17
35
26 46
24
H
39
4118 52
3
44
min
21 2
Dr. Eric Jeltsch F. Ingenieria en Computacion, ULS(DAA_2004)
7
Fibonacci Heap(HF)Union. Concatenar dos Fibonacci heaps. Las raices son implementadas a través de listas circulares doblemente enlazadas.
Sea H1, el HF que se obtiene luego de insertar y en este orden, los datos: 12, 7, 25, 15, 28, 33, 41. Analog. H2 con 18, 3, 6, 37.
332825 15 12
min
41 7H1
376 3 18H2
min
332825 15 1241 7
H1+H2
376 3 18
min
Dr. Eric Jeltsch F. Ingenieria en Computacion, ULS(DAA_2004)
8
Fibonacci Heap(HF)min
39
41
717
18 52
3
30
23
35
26 46
24
44
21
min
39
41
717
18 52
3
30
23
35
26 46
24
44
21
min
H1 H2
H1+H2
Dr. Eric Jeltsch F. Ingenieria en Computacion, ULS(DAA_2004)
9
Fibonacci Heap(HF)Eliminar Min:Borra el min y concatena sus hijos en la lista de raices. Aplicar Consolidate(H), esto es, ningún par de raíces tienen el mismo grado. Concatena Fibonacci heaps. Las raices son implementadas a través de listas circulares doblemente enlazadas. Se usa un array auxiliar A[0..log(nH)].
39
4118 52
3
44
min
1723
30
7
35
26 46
24
Eliminar 3
Dr. Eric Jeltsch F. Ingenieria en Computacion, ULS(DAA_2004)
10
Fibonacci Heap(HF)
39
4118 52
3
44
min
1723
30
7
35
26 46
24
Dr. Eric Jeltsch F. Ingenieria en Computacion, ULS(DAA_2004)
11
Fibonacci Heap(HF)
39
4118 52
44
min
1723
30
7
35
26 46
24
Consolidate(H),
Dr. Eric Jeltsch F. Ingenieria en Computacion, ULS(DAA_2004)
12
Fibonacci Heap(HF)
39
411723 18 52
30
7
35
26 46
24
44
actualmin
0 1 2 3 4
Consolidate(H),
Dr. Eric Jeltsch F. Ingenieria en Computacion, ULS(DAA_2004)
13
Fibonacci Heap(HF)
39
411723 18 52
30
7
35
26 46
24
44actual
min
0 1 2 3 4
Consolidate(H),
Dr. Eric Jeltsch F. Ingenieria en Computacion, ULS(DAA_2004)
14
Fibonacci Heap(HF)
39
411723 18 52
30
7
35
26 46
24
44actual
min
0 1 2 3 4
Consolidate(H),
Dr. Eric Jeltsch F. Ingenieria en Computacion, ULS(DAA_2004)
15
Fibonacci Heap(HF)
39
411723 18 52
30
7
35
26 46
24
44actual
min
0 1 2 3 4Merge los arboles con raíz 17 y 23.
Consolidate(H),
Dr. Eric Jeltsch F. Ingenieria en Computacion, ULS(DAA_2004)
16
Fibonacci Heap(HF)
39
4117
23
18 52
30
7
35
26 46
24
44
actualmin
0 1 2 3 4Merge los arboles con raíz 7 y 17.
Consolidate(H),
Dr. Eric Jeltsch F. Ingenieria en Computacion, ULS(DAA_2004)
17
Fibonacci Heap(HF)
39
4117
23
18 52
30
7
35
26 46
24
44
actualmin
0 1 2 3 4Merge los arboles con raíz 24 y 17.
Consolidate(H),
Dr. Eric Jeltsch F. Ingenieria en Computacion, ULS(DAA_2004)
18
Fibonacci Heap(HF)
39
4117
23
18 52
30
7
35
26 46
24
44
actualmin
0 1 2 3 4
Consolidate(H),
Dr. Eric Jeltsch F. Ingenieria en Computacion, ULS(DAA_2004)
19
Fibonacci Heap(HF)
39
4117
23
18 52
30
7
35
26 46
24
44
actualmin
0 1 2 3 4
Consolidate(H),
Dr. Eric Jeltsch F. Ingenieria en Computacion, ULS(DAA_2004)
20
Fibonacci Heap(HF)
39
4117
23
18 52
30
7
35
26 46
24
44
actual
min
0 1 2 3 4
Consolidate(H),
Dr. Eric Jeltsch F. Ingenieria en Computacion, ULS(DAA_2004)
21
Fibonacci Heap(HF)
3941
17
23
1852
30
7
35
26 46
24
44
actual
min
0 1 2 3 4
Consolidate(H),
Merge los arboles con raíz 18 y 41.
Dr. Eric Jeltsch F. Ingenieria en Computacion, ULS(DAA_2004)
22
Fibonacci Heap(HF)
3941
17
23
1852
30
7
35
26 46
24
44
min
Fin de Consolidate(H),
Costo de consolidar arboles. O(D(n) + t(H)) .
D(n) = grado max de cualquier nodo en HF con n nodos.
t(H) = # arboles en heap H.
Dr. Eric Jeltsch F. Ingenieria en Computacion, ULS(DAA_2004)
23
Fibonacci Heap(HF)Decrementar la clave de un elemento x a k.
Caso 0: propiedades del min-heap no alteradas.–Decrementa la clave de x a k–Cambia el puntero min del heap, si es necesario.
24
46
17
30
23
7
88
26
21
52
39
18
41
38Decrementa 46 a 45.
72
46*
35
min
Dr. Eric Jeltsch F. Ingenieria en Computacion, ULS(DAA_2004)
24
Fibonacci Heap(HF)Decrementar la clave de un elemento x a k.
Caso 0: propiedades del min-heap no alteradas.–Decrementa la clave de x a k–Cambia el puntero min del heap, si es necesario.
24
46
17
30
23
7
88
26
21
52
39
18
41
38Decrementa 46 a 45.
72
45
35
min
Dr. Eric Jeltsch F. Ingenieria en Computacion, ULS(DAA_2004)
25
Fibonacci Heap(HF)Decrementar la clave de un elemento x a k.
Caso 1: padre de x no está marcado.
Decrementa clave de x a k; Corta el enlace entre x y su padre;
Marca al padre; Agrega el árbol con raíz x a la lista de raíces, actualizando el puntero a min del heap.
24
46
17
30
23
7
88
26
21
52
39
18
41
38
Decrementa 45 a 15.72
15
35
min
Dr. Eric Jeltsch F. Ingenieria en Computacion, ULS(DAA_2004)
26
Fibonacci Heap(HF)Decrementar la clave de un elemento x a k.
Caso 1: padre de x no está marcado.
Decrementa clave de x a k; Corta el enlace entre x y su padre;
Marca al padre; Agrega el árbol con raíz x a la lista de raíces, actualizando el puntero a min del heap.
24
46
17
30
23
7
88
26
21
52
39
18
41
38
72
15
35
min
Decrementa 45 a 15.
Dr. Eric Jeltsch F. Ingenieria en Computacion, ULS(DAA_2004)
27
Fibonacci Heap(HF)
24
46
17
30
23
7
88
26
21
52
39
18
41
38
72
15
35
min
Decrementar la clave de un elemento x a k.
Caso 1: padre de x no está marcado.
Decrementa clave de x a k; Corta el enlace entre x y su padre; Marca al padre; Agrega el árbol con raíz x a la lista de raíces, actualizando el puntero a min del heap.
Decrementa 45 a 15.
Dr. Eric Jeltsch F. Ingenieria en Computacion, ULS(DAA_2004)
28
Fibonacci Heap(HF) Decrementar la clave de un elemento x a k.
Caso 1: padre de x no está marcado.
Decrementa clave de x a k; Corta el enlace entre x y su padre; Marca al padre; Agrega el árbol con raíz x a la lista de raíces, actualizando el puntero a min del heap.
24
46
17
30
23
7
88
26
21
52
39
18
41
38
72
15
35
min
Decrementa 35 a 15.
Dr. Eric Jeltsch F. Ingenieria en Computacion, ULS(DAA_2004)
29
Fibonacci Heap(HF)Decrementar la clave de un elemento x a k.
Caso 2: Si padre de x está marcado. Decrementa la clave de x a k; corta el enlace entre x y su padre p[x], y agrega x a la lista de raices; corta el enlace entre p[x] y p[p[x]], agrega p[x] a la lista de raices.Si p[p[x]] no está marcado, lo marca.Si p[p[x]] está marcado, corta p[p[x]] no marcado, y repite el proceso.
24
46
17
30
23
7
88
26
21
52
39
18
41
38
72
15
35
min
Decrementa 35 a 5.
Dr. Eric Jeltsch F. Ingenieria en Computacion, ULS(DAA_2004)
30
Fibonacci Heap(HF)Decrementar la clave de un elemento x a k.
Caso 2: Si padre de x está marcado.Decrementa la clave de x a k; corta el enlace entre x y su padre p[x], y agrega x a la lista de raices; corta el enlace entre p[x] y p[p[x]], agrega p[x] a la lista de raices.Si p[p[x]] no está marcado, lo marca.Si p[p[x]] está marcado, corta p[p[x]] no marcado, y repite el proceso.
24
46
17
30
23
7
88
26
21
52
39
18
41
38
72
15
5
min
Decrementa 35 a 5.
Dr. Eric Jeltsch F. Ingenieria en Computacion, ULS(DAA_2004)
31
Fibonacci Heap(HF)Decrementar la clave de un elemento x a k.
Caso 2: Si padre de x está marcado.Decrementa la clave de x a k; corta el enlace entre x y su padre p[x], y agrega x a la lista de raices; corta el enlace entre p[x] y p[p[x]], agrega p[x] a la lista de raices.Si p[p[x]] no está marcado, lo marca.Si p[p[x]] está marcado, corta p[p[x]] no marcado, y repite el proceso.
24
46
17
30
23
7
88
26
21
52
39
18
41
38
72
15 5 min
Decrementa 35 a 5.
Dr. Eric Jeltsch F. Ingenieria en Computacion, ULS(DAA_2004)
32
Fibonacci Heap(HF)Decrementar la clave de un elemento x a k.
Caso 2: Si padre de x está marcado.Decrementa la clave de x a k; corta el enlace entre x y su padre p[x], y agrega x a la lista de raices; corta el enlace entre p[x] y p[p[x]], agrega p[x] a la lista de raices.Si p[p[x]] no está marcado, lo marca.Si p[p[x]] está marcado, corta p[p[x]] no marcado, y repite el proceso.
24
46
17
30
23
7
88
26
21
52
39
18
41
38
72
15 5 min
Decrementa 35 a 5.
Dr. Eric Jeltsch F. Ingenieria en Computacion, ULS(DAA_2004)
33
Fibonacci Heap(HF)Decrementar la clave de un elemento x a k.
Caso 2: Si padre de x está marcado.Decrementa la clave de x a k; corta el enlace entre x y su padre p[x], y agrega x a la lista de raices; corta el enlace entre p[x] y p[p[x]], agrega p[x] a la lista de raices.Si p[p[x]] no está marcado, lo marca.Si p[p[x]] está marcado, corta p[p[x]] no marcado, y repite el proceso.
2446
17
30
23
7
88
26
21
52
39
18
41
38
72
15 5
min
Decrementa 35 a 5.
Eliminar nodo x. Decrementar x a -. Eliminar el min elem. del heap.
Recommended