SlideShare una empresa de Scribd logo
Estructuras de Datos AvanzadasDiego SánchezArthur Oviedo
AgendaResumen de Heaps BinariosFibonacci Heaps
Resumen de Heaps BinariosEs un árbol binario casi completo.Satisface la propiedad de orden del heap ( MAX-Heap: key[hijo] <= key[padre] )Se representa con un arreglo. PARENT(i)
return ⌊i/2⌋ -LEFT(i)return 2i
RIGHT(i)
return 2i + 1Heaps BinariosSon utizados para:Implementar HeapSort (Algoritmo de ordenamiento )T(n) = O( n log n) S(n) = O(n)Implementar colas de prioridadUtilizados en algoritmos importantes: Dijkstra (Ruta mínima en un grafo), Prim( Árbol de expansión mínimo)Simulación discreta de eventos(Colas de procesos, Colas de impresión)
Mantener la propiedad del heap		O(lg n)
Crear un Heap a partir de un conjunto de elementos dados						O(n)
Dar mínimo/máximo				O(1)
Extraer mínimo/máximo			O(lg n)
Incrementar/Decrementar llave		O(lg n)
Insertar nodo					O(lg n)
Eliminar nodo					O(lg n)
Unión de dos heaps				O(n)Resumen de Heaps Binarios
Fibonacci Heaps
DefiniciónConjunto de árboles ordenados(min-heaps)
RepresentaciónUtilizamos listas circulares doblemente enlazadas para mantener la lista de las raíces de cada árbol: left[x], right[x]Hay un puntero min[H] hacia el menor elemento del heapCada nodo tiene una referencia a su padre p[x]. p[x] = NIL si x es una de las raícesCada nodo tiene una referencia a alguno de sus hijos child[x]. child[x] = NIL si el nodo es una hojaUtilizamos listas circulares doblemente enlazadas para mantener a la lista de hijos de un nodon[H] = # de nodos en el Heapdeg[x] = # hijos del nodo x
Función Potencialt(H)   = # de árboles en la lista de raíces del heapm(H) = # de nodos marcados del heap
D(n)D(n)	=  Grado (Número de hijos) máximo de cualquiernodo en un Fibonacci Heap de n nodos.CostoExtraermínimo = O(D(n))D(n) ≤ log N, donde = (1 + 5) / 2
Heap de FibonacciOperacionesCrear heapInsertar nodoUnión de dos Fibonacci HeapsExtraer mínimoDecrementar llaveEliminar nodo
Creación de un nuevo HeapMAKE-FIB-HEAP: Reserva espacio para el heap. n[H] = 0min[H] = NILΦ(H) = 0O(1)
Insertar NodoFIB-HEAP-INSERT(H, x)1 degree[x] ← 02 p[x] ← NIL3 child[x] ← NIL4 left[x] ← x5 right[x] ← x6 mark[x] ← FALSE7 concatenate the root list containing x with root list H8 if min[H] = NIL or key[x] < key[min[H]]9 thenmin[H] ← x10 n[H] ← n[H] + 1
Costo de InserciónComo, t(H′) = t(H)+1 and m(H′) = m(H) Incremento de la función potencial=((t(H) + 1) + 2 m(H)) - (t(H) + 2 m(H)) = 1.Costo Real = O(1)Costo Amortizado = O(1) + 1 = O(1)Estamos pagando 1 unidad de costo amortizado constante por cada inserción
Dar mínimo elementoFIB-HEAP-MIN(H)1 returnmin[h]Cambio Función potencial  = 0
Costo Amortizado = O(1) + 0 = O(1)Unión de dos Fibonacci HeapsFIB-HEAP-UNION(H1, H2)1 H ← MAKE-FIB-HEAP()2 min[H] ← min[H1]3 concatenate the root list of H2 with the root list of H4 if(min[H1] = NIL) or(min[H2] ≠ NIL and min[H2] < min[H1])5 thenmin[H] ← min[H2]6 n[H] ← n[H1] + n[H2]7 free the objects H1 and H28 returnH
Costo de UniónCambio Función Potencial = Φ(H) - (Φ(H1) + Φ(H2))  = (t(H) + 2m(H)) - ((t(H1) + 2 m(H1)) + (t(H2) + 2   m(H2)))  = 0Costo Amortizado = O(1) + 0 = O(1)
Extrayendo el mínimoFIB-HEAP-EXTRACT-MIN(H)1 z ← min[H]2 ifz ≠ NIL3 	then for each child x of z4 		do add x to the root list of H5 		p[x] ← NIL6 	remove z from the root list of H7 ifz = right[z]8 	thenmin[H] ← NIL9 else	min[H] ← right[z]10 CONSOLIDATE(H)11 n[H] ← n[H] - 112 returnz
Extrayendo el mínimo (Consolidate)CONSOLIDATE(H)1 for i ← 0 to D(n[H])2 	do A[i] ← NIL3 for each node w in the root list of H4 	do x ← w5 	d ← degree[x]6 	whileA[d] ≠ NIL7 		do y ← A[d] ▹ Another node with the same degree as x.8 		ifkey[x] > key[y]9 			then exchange x ↔ y10		 FIB-HEAP-LINK(H, y, x)11 		A[d] ← NIL12 		d ← d + 113 	A[d] ← x14 min[H] ← NIL15 for i ← 0 to D(n[H])16 	do ifA[i] ≠ NIL17 		then add A[i] to the root list of H18		 if min[H] = NIL or key[A[i]] < key[min[H]]19			 thenmin[H] ← A[i]FIB-HEAP-LINK(H, y, x)1 remove y from the root list of H2 make y a child of x, incrementing degree[x]3 mark[y] ← FALSE
Extrayendo el mínimo
Costo de extraer mínimoCosto RealO(D(n))		->El nodomínimomáximotenía D(n) hijosO(D(n) + t(H))	->Las raícesquequedan son: Las queyahabían				    más los nuevos hijosO(D(n)+t(H))Cambio en el costo amortizado#Raíces antes = t(H)Máximo número de raíces después = D(n) +1 Cambio de potencial = D(n)+1-t(H)Costo amortizadoCosto total + Cambio potencial =	O(D(n)+t(H)) + D(n) + 1 - t(H) = O(D(n))
Decrementar LlaveFIB-HEAP-DECREASE-KEY(H, x, k)1 ifk > key[x]2 	then error "new key is greater 	than current key"3 key[x] ← k4 y ← p[x]5 if y ≠ NIL and key[x] < key[y]6 	then CUT(H, x, y)7	 CASCADING-CUT(H, y)8 ifkey[x] < key[min[H]]9 	thenmin[H] ← xCUT(H, x, y)1 remove x from the child list of y, decrementing degree[y]2 add x to the root list of H3 p[x] ← NIL4 mark[x] ← FALSECASCADING-CUT(H, y)1 z ← p[y]2 ifz ≠ NIL3	 then if mark[y] = FALSE4	        thenmark[y] ← TRUE5 	else CUT(H, y, z)6 	         CASCADING-CUT(H, z)

Más contenido relacionado

PPT
PDF
Ejercicios Propuestos I - Equipo 1
PPTX
C3 rm ejercicios de ecuaciones de primer grado - 2º
DOCX
Feb28
PPT
Resta de funciones.mejorado
PDF
Comandos de algebra
PDF
Apuntes de cálculo diferencial
Ejercicios Propuestos I - Equipo 1
C3 rm ejercicios de ecuaciones de primer grado - 2º
Feb28
Resta de funciones.mejorado
Comandos de algebra
Apuntes de cálculo diferencial

La actualidad más candente (20)

PDF
Calvar3 seamana-11
PPTX
Ejercicio 5.d
PPTX
Ejercicio 5.d
DOCX
EncuestPregunta 11
PPTX
10 ecuaciones de la circunferencia
PDF
Python con un toque funcional
PPT
Mateatocha5 e
DOCX
El Dominio de una funcion
PDF
4practico26tomedinina
DOCX
Hechos en clase
TXT
DOC
Ejercicios de clase
PPTX
Eficiencia en uso de recursos memoria2 p
 
PPT
Tablas Hash (Joel Díaz Pousada)
PDF
Problemas+resueltos+de+c$2 b$2b
PPTX
PPTX
Taller de matemáticas
DOC
640 maximos y_minimos_relativos
PDF
Practica 1 informática ii
Calvar3 seamana-11
Ejercicio 5.d
Ejercicio 5.d
EncuestPregunta 11
10 ecuaciones de la circunferencia
Python con un toque funcional
Mateatocha5 e
El Dominio de una funcion
4practico26tomedinina
Hechos en clase
Ejercicios de clase
Eficiencia en uso de recursos memoria2 p
 
Tablas Hash (Joel Díaz Pousada)
Problemas+resueltos+de+c$2 b$2b
Taller de matemáticas
640 maximos y_minimos_relativos
Practica 1 informática ii
Publicidad

Similar a Expo fibonacci (20)

PPT
Heap sort2
PPT
Heap sort
PDF
Interpolaciones
PDF
La derivada
PDF
Ppex c690123
PPT
Integrales
PPT
Presentación
PDF
Newton And Neville Interpolation
PPT
Función cuadrática.
PPT
heapsort.ppt
PDF
Sol ex1cal1
PDF
Pbderivadas
PPT
integrales indefinidas.ppt
DOCX
Productos notables - Factorizacion
DOC
Alg(1) 4° 2 b
DOC
Tabla de símbolos matemáticos
PPTX
La derivada de una funciòn
PDF
Teoria y problemas de calculo integral ccesa007
DOC
Tabla de simbolos_matematicos
PDF
Problemas resueltos de funciones reales pre u ccesa007
Heap sort2
Heap sort
Interpolaciones
La derivada
Ppex c690123
Integrales
Presentación
Newton And Neville Interpolation
Función cuadrática.
heapsort.ppt
Sol ex1cal1
Pbderivadas
integrales indefinidas.ppt
Productos notables - Factorizacion
Alg(1) 4° 2 b
Tabla de símbolos matemáticos
La derivada de una funciòn
Teoria y problemas de calculo integral ccesa007
Tabla de simbolos_matematicos
Problemas resueltos de funciones reales pre u ccesa007
Publicidad

Último (20)

PDF
clase auditoria informatica 2025.........
PDF
Documental Beyond the Code (Dossier Presentación - 2.0)
PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
DOCX
Guía 5. Test de orientación Vocacional 2.docx
PPTX
la-historia-de-la-medicina Edna Silva.pptx
PDF
Maste clas de estructura metálica y arquitectura
PPTX
Presentación de Redes de Datos modelo osi
PDF
Ronmy José Cañas Zambrano - Potenciando la tecnología en Venezuela.pdf
DOCX
Contenido Fundamentos de comunicaciones Fibra Optica (1).docx
PDF
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
PPTX
Propuesta BKP servidores con Acronis1.pptx
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PDF
MANUAL de recursos humanos para ODOO.pdf
PDF
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
PPTX
Power Point Nicolás Carrasco (disertación Roblox).pptx
PDF
Diapositiva proyecto de vida, materia catedra
PPTX
Presentación PASANTIAS AuditorioOO..pptx
PPTX
Presentacion de Alba Curso Auditores Internos ISO 19011
PDF
CyberOps Associate - Cisco Networking Academy
clase auditoria informatica 2025.........
Documental Beyond the Code (Dossier Presentación - 2.0)
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
Guía 5. Test de orientación Vocacional 2.docx
la-historia-de-la-medicina Edna Silva.pptx
Maste clas de estructura metálica y arquitectura
Presentación de Redes de Datos modelo osi
Ronmy José Cañas Zambrano - Potenciando la tecnología en Venezuela.pdf
Contenido Fundamentos de comunicaciones Fibra Optica (1).docx
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
Propuesta BKP servidores con Acronis1.pptx
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
historia_web de la creacion de un navegador_presentacion.pptx
MANUAL de recursos humanos para ODOO.pdf
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
Power Point Nicolás Carrasco (disertación Roblox).pptx
Diapositiva proyecto de vida, materia catedra
Presentación PASANTIAS AuditorioOO..pptx
Presentacion de Alba Curso Auditores Internos ISO 19011
CyberOps Associate - Cisco Networking Academy

Expo fibonacci

  • 1. Estructuras de Datos AvanzadasDiego SánchezArthur Oviedo
  • 2. AgendaResumen de Heaps BinariosFibonacci Heaps
  • 3. Resumen de Heaps BinariosEs un árbol binario casi completo.Satisface la propiedad de orden del heap ( MAX-Heap: key[hijo] <= key[padre] )Se representa con un arreglo. PARENT(i)
  • 6. return 2i + 1Heaps BinariosSon utizados para:Implementar HeapSort (Algoritmo de ordenamiento )T(n) = O( n log n) S(n) = O(n)Implementar colas de prioridadUtilizados en algoritmos importantes: Dijkstra (Ruta mínima en un grafo), Prim( Árbol de expansión mínimo)Simulación discreta de eventos(Colas de procesos, Colas de impresión)
  • 7. Mantener la propiedad del heap O(lg n)
  • 8. Crear un Heap a partir de un conjunto de elementos dados O(n)
  • 14. Unión de dos heaps O(n)Resumen de Heaps Binarios
  • 16. DefiniciónConjunto de árboles ordenados(min-heaps)
  • 17. RepresentaciónUtilizamos listas circulares doblemente enlazadas para mantener la lista de las raíces de cada árbol: left[x], right[x]Hay un puntero min[H] hacia el menor elemento del heapCada nodo tiene una referencia a su padre p[x]. p[x] = NIL si x es una de las raícesCada nodo tiene una referencia a alguno de sus hijos child[x]. child[x] = NIL si el nodo es una hojaUtilizamos listas circulares doblemente enlazadas para mantener a la lista de hijos de un nodon[H] = # de nodos en el Heapdeg[x] = # hijos del nodo x
  • 18. Función Potencialt(H) = # de árboles en la lista de raíces del heapm(H) = # de nodos marcados del heap
  • 19. D(n)D(n) = Grado (Número de hijos) máximo de cualquiernodo en un Fibonacci Heap de n nodos.CostoExtraermínimo = O(D(n))D(n) ≤ log N, donde = (1 + 5) / 2
  • 20. Heap de FibonacciOperacionesCrear heapInsertar nodoUnión de dos Fibonacci HeapsExtraer mínimoDecrementar llaveEliminar nodo
  • 21. Creación de un nuevo HeapMAKE-FIB-HEAP: Reserva espacio para el heap. n[H] = 0min[H] = NILΦ(H) = 0O(1)
  • 22. Insertar NodoFIB-HEAP-INSERT(H, x)1 degree[x] ← 02 p[x] ← NIL3 child[x] ← NIL4 left[x] ← x5 right[x] ← x6 mark[x] ← FALSE7 concatenate the root list containing x with root list H8 if min[H] = NIL or key[x] < key[min[H]]9 thenmin[H] ← x10 n[H] ← n[H] + 1
  • 23. Costo de InserciónComo, t(H′) = t(H)+1 and m(H′) = m(H) Incremento de la función potencial=((t(H) + 1) + 2 m(H)) - (t(H) + 2 m(H)) = 1.Costo Real = O(1)Costo Amortizado = O(1) + 1 = O(1)Estamos pagando 1 unidad de costo amortizado constante por cada inserción
  • 24. Dar mínimo elementoFIB-HEAP-MIN(H)1 returnmin[h]Cambio Función potencial = 0
  • 25. Costo Amortizado = O(1) + 0 = O(1)Unión de dos Fibonacci HeapsFIB-HEAP-UNION(H1, H2)1 H ← MAKE-FIB-HEAP()2 min[H] ← min[H1]3 concatenate the root list of H2 with the root list of H4 if(min[H1] = NIL) or(min[H2] ≠ NIL and min[H2] < min[H1])5 thenmin[H] ← min[H2]6 n[H] ← n[H1] + n[H2]7 free the objects H1 and H28 returnH
  • 26. Costo de UniónCambio Función Potencial = Φ(H) - (Φ(H1) + Φ(H2)) = (t(H) + 2m(H)) - ((t(H1) + 2 m(H1)) + (t(H2) + 2 m(H2))) = 0Costo Amortizado = O(1) + 0 = O(1)
  • 27. Extrayendo el mínimoFIB-HEAP-EXTRACT-MIN(H)1 z ← min[H]2 ifz ≠ NIL3 then for each child x of z4 do add x to the root list of H5 p[x] ← NIL6 remove z from the root list of H7 ifz = right[z]8 thenmin[H] ← NIL9 else min[H] ← right[z]10 CONSOLIDATE(H)11 n[H] ← n[H] - 112 returnz
  • 28. Extrayendo el mínimo (Consolidate)CONSOLIDATE(H)1 for i ← 0 to D(n[H])2 do A[i] ← NIL3 for each node w in the root list of H4 do x ← w5 d ← degree[x]6 whileA[d] ≠ NIL7 do y ← A[d] ▹ Another node with the same degree as x.8 ifkey[x] > key[y]9 then exchange x ↔ y10 FIB-HEAP-LINK(H, y, x)11 A[d] ← NIL12 d ← d + 113 A[d] ← x14 min[H] ← NIL15 for i ← 0 to D(n[H])16 do ifA[i] ≠ NIL17 then add A[i] to the root list of H18 if min[H] = NIL or key[A[i]] < key[min[H]]19 thenmin[H] ← A[i]FIB-HEAP-LINK(H, y, x)1 remove y from the root list of H2 make y a child of x, incrementing degree[x]3 mark[y] ← FALSE
  • 30. Costo de extraer mínimoCosto RealO(D(n)) ->El nodomínimomáximotenía D(n) hijosO(D(n) + t(H)) ->Las raícesquequedan son: Las queyahabían más los nuevos hijosO(D(n)+t(H))Cambio en el costo amortizado#Raíces antes = t(H)Máximo número de raíces después = D(n) +1 Cambio de potencial = D(n)+1-t(H)Costo amortizadoCosto total + Cambio potencial = O(D(n)+t(H)) + D(n) + 1 - t(H) = O(D(n))
  • 31. Decrementar LlaveFIB-HEAP-DECREASE-KEY(H, x, k)1 ifk > key[x]2 then error "new key is greater than current key"3 key[x] ← k4 y ← p[x]5 if y ≠ NIL and key[x] < key[y]6 then CUT(H, x, y)7 CASCADING-CUT(H, y)8 ifkey[x] < key[min[H]]9 thenmin[H] ← xCUT(H, x, y)1 remove x from the child list of y, decrementing degree[y]2 add x to the root list of H3 p[x] ← NIL4 mark[x] ← FALSECASCADING-CUT(H, y)1 z ← p[y]2 ifz ≠ NIL3 then if mark[y] = FALSE4 thenmark[y] ← TRUE5 else CUT(H, y, z)6 CASCADING-CUT(H, z)
  • 32. Decrementar llave:En pocas palabras:Cambie el valor del nodoSi no se viola la regla del heap, TerminamosSi se viola:Separe al hijo del padre y póngalo como raízCorte en cascada: Si el nodo está desmarcado, márqueloSi el nodo está marcado, Córtelo de su padre (póngalo como raíz)Desmarque al nodoCorte en cascada al padre
  • 34. Costo de decrementar llaveCosto Real = O(1) + # de Llamadas recursivas CascadingCut *O(1) = O(c)Cambio en la función potencial= ((t(H) + c) ->c Nuevas raíces+ 2(m(H) – c +2)) ->Se desmarcaron c nodos– ( t(H) + 2m(H) ) = 4-c ->Estado anteriorCosto amortizado=O(c) + 4 – c = O(1)
  • 35. Eliminar NodoFIB-HEAP-DELETE(H, x)1 FIB-HEAP-DECREASE-KEY(H, x, -∞)2 FIB-HEAP-EXTRACT-MIN(H)Costo Amortizado = O(decrease-key +extract-min) = O(D(n))
  • 36. Acotando D(n)Recordemos: D(n) = Grado máximo de un nodo de un heap de n nodosA probar: D(N)  log N, donde  = (1 + 5) / 2.
  • 37. Acotando D(n)Lema 1: Sea x un nodo con grado k, y sean y1, . . . , yksus k respectivoshijos en el orden en el quefueronañadidos a x: Entonces:Prueba:-Cuando yi fue unido a x, y1, . . . , yi-1 ya se habíanunido a x-degree(x)=i-1-degree(yi) = i - 1 Porqueunimosnodos con igualgrado (Extract min)-yiha perdidomáximo 1 hijo (Si hubieraperdido 2 ya no seríahijo de x, sinoqueseríaunaraíz)-Luego el grado de yi= i-1 ó i-2
  • 39. Acotando D(n)Lema 4:Sea x cualquier nodo del heap. Sea k = deg[x]. Entonces size(x) >= Fk+2 >=φkSk = Tamaño mínimo de un nodo con grado k (1 + suma del tamaño de los hijos)S0=1 S1=2 S2=3 //Casos base
  • 40. Acotando D(n)El máximo grado D(n) de cualquier nodo de un FibonacciHeap de n nodos = O(lg n)Sea x un nodo con grado k.Entoncesn  size(x)  sk Fk kn  klog n  k