Fibonacci Heaps. Fabiola Di Bartolo. Universidad Simón Boĺıvar

Documentos relacionados
Análisis amortizado El plan:

Ampliación de Estructuras de Datos

Árboles. Un grafo no dirigido es un árbol si y sólo si existe una ruta unica simple entre cualquiera dos de sus vértices.

Algoritmos para determinar Caminos Mínimos en Grafos

Estructuras de datos Árboles B

Métodos de Ordenamiento. Unidad VI: Estructura de datos

Árboles binarios de búsqueda ( BST )

Complejidad amortizada

Definición 1.1 Sea G = (V, A) un grafo no dirigido. G se denomina árbol si es conexo y no contiene ciclos.

Algoritmos y estructuras de datos

Conjuntos disjuntos (Relaciones de equivalencia)

El TAD Grafo. El TAD Grafo

Tema 10- Representación Jerárquica: Tema 10- Representación Jerárquica: Árboles Binarios

Algorítmica y Complejidad. Tema 3 Ordenación.

Estructuras de datos: Árboles binarios de

Algoritmos de Ordenamiento

VI Colas de prioridad

Teoría de grafos y optimización en redes

CI-6675 Algoritmos y Estructuras Optimizadas para Videojuegos

3. COLA DE PRIORIDAD DEFINICION (I)

Clase 32: Árbol balanceado AVL

Binary Decision Diagrams

Árboles. Cursos Propedéuticos Dr. René Cumplido M. en C. Luis Rodríguez Flores

Estructuras de Datos. Estructuras de Datos para Conjuntos Disjuntos

Árboles balanceados. Alonso Ramírez Manzanares Computación y Algoritmos Thursday, April 30, 15

Tema Árboles generales. 9.2 Árboles binarios 9.3 Árboles de búsqueda

Árboles AVL. Laboratorio de Programación II

UNIDAD 9. DATOS COMPLEJOS PILAS

7. Agrupamiento (clustering)

ORDENAMIENTO Y BÚSQUEDA EN ARREGLOS

CAPITULO II ORDENAMIENTO Y BUSQUEDA. Ivan Medrano Valencia

Capítulo 6. ÁRBOLES.

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 4: Ordenación. Prof. Montserrat Serrano Montero

JUEGOS. Área de aplicación de los algoritmos heurísticos Juegos bi-personales: oponente hostil

APUNTADORES. Un apuntador es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable.

DEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006

Registro (record): es la unidad básica de acceso y manipulación de la base de datos.

PRÁCTICA No. 13 ÁRBOL BINARIO DE BÚSQUEDA

Centro Asociado Palma de Mallorca. Tutor: Antonio Rivero Cuesta

Notación Asintótica 2

Árboles de Búsqueda Binaria. Agustín J. González ELO-320: Estructura de Datos y Algoritmos

Convertir un AFND a un AFD

Estructuras de Datos. Dr. Pablo E. Fidel Martínez López Lic. en Ciencias de la Computación UNR

Búsqueda en e.e. --> reglas para elegir entre las ramas que con más probabilidad lleven a la solución.

Cómo ordenar una lista de números?

Contenido. Prólogo... Capítulo 1. Algoritmos y estructuras de datos Introducción... 24

Tablas de dispersión (hash tables)

Estructuras de Datos. Montículos. Montículos. Montículos. Tema 3. Montículos. Definiciones básicas: Definiciones básicas:

Arboles Binarios de Búsqueda

Complejidad computacional (Análisis de Algoritmos)

7.1 Consideraciones. Considere la búsqueda de un libro en una biblioteca. Considere la búsqueda de un nombre en el directorio telefónico.

TEORÍA DE GRAFOS Ingeniería de Sistemas

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

4.1. Polinomios y teoría de ecuaciones

Pilas y Colas. Capítulo 3

Tablas Hash y árboles binarios

árbol como un conjunto de nodos y líneas

Potencias y raíces Matemáticas 1º ESO

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos

(b) Cuál es la desventaja principal de una heurística con aprendizaje? es más informada que otra función heurística optimista h 2 *?

Grafos. Suponiendo que e = [u, v]. Entonces los nodos u y v se llaman extremos de e y u y v se dice que son nodos adyacentes o vecinos.

Ruta más Corta con una sóla Fuente de Inicio (Single-Source Shortest Paths) DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE

Árbol binario. Elaborado por Ricardo Cárdenas cruz Jeremías Martínez Guadarrama Que es un árbol Introducción

TEMA Nº 1. Conjuntos numéricos


El Juego como Problema de Búsqueda

ELO320 Estructuras de Datos y Algoritmos. Arboles Binarios. Tomás Arredondo Vidal

Autómatas Deterministas. Ivan Olmos Pineda

Análisis amortizado El plan:

Almacenamiento y Recuperación de la Información

ESCUELA SUPERIOR POLITECNICA DEL LITORAL PROGRAMA DE ESTUDIOS

ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

TEMA 7. ALGORITMOS DE BÚSQUEDA, ORDENACIÓN

El Teorema Fundamental del Álgebra

Búsqueda con adversario

Reconocímíentes y Agradecimientos 5 Indice 6 Prólogo 11

Sistemas Operativos. Dr. Luis Gerardo de la Fraga. Departamento de Computación Cinvestav

UNIVERSIDAD MAYOR DE SAN SIMÓN FACULTAD DE CIENCIAS Y TECNOLOGÍA INGENIERÍA DE SISTEMAS BÚSQUEDA PRIMERO EL MEJOR

Estructuras de datos. Estructuras de datos

Capítulo 6. Relaciones. Continuar

Grafos. AMD Grado en Ingeniería Informática. AMD Grado en Ingeniería Informática (UM) Grafos 1 / 30

Introducción a los Sistemas Digitales. Conceptos básicos de matemática aplicada a los sistemas digitales

Árboles Filogenéticos. BT7412, CC5702 Bioinformática Diego Arroyuelo. 2 de noviembre de 2010

Computabilidad y Lenguajes Formales: Autómatas Finitos

Estructuras de datos: Conjuntos disjuntos

(d) Puede haber estrategias que funcionan mejor que Minimax si el contrincante es

ALGORITMO MINIMAX. o Nodo: Representa una situación del juego. o Sucesores de un nodo: Situaciones del juego a las que se

El TAD Grafo. El TAD Grafo

Sistemas de Representación. Organización del Computador 1 Verano 2016

Algoritmos Aleatorizados

Algoritmos sobre Grafos

Conjuntos Los conjuntos se emplean en muchas áreas de las matemáticas, de modo que es importante una comprensión de los conjuntos y de su notación.

Planaridad. Algoritmos y Estructuras de Datos III

Pregunta 1 Es correcta esta definición? Por qué?

Máquinas Secuenciales, Autómatas y Lenguajes. Tema 3.1: Autómatas Finitos Deterministas

Llamamos potencia a todo producto de factores iguales. Por ejemplo: 3 4 =

El concepto de número

Conjuntos. Un conjunto es una colección de objetos. Si a es un objeto y R es un conjunto entonces por. a R. se entiende que a pertenece a R.

ORGANIZACIÓN DE COMPUTADORAS DRA. LETICIA FLORES PULIDO

Transcripción:

Estructura Universidad Simón Boĺıvar

Estructura 1 Introducción Heaps 2 Estructura 3 4 5 6 7

Binary Heaps Introducción Heaps Estructura Arbol binario casi completo: Todos los niveles deben estar llenos, a excepción del último que se llena de izquierda a derecha. Min-heap-ordered: Cada nodo es menor o igual que sus hijos.

Estructura Binomial Heaps Colección de árboles binomiales. Arbol binomial B k : es un árbol ordenado, que consiste en dos arboles binomiales B k 1 enlazados (la raíz de uno es el hijo más izquierdo de la raíz del otro). del heap binomial: Propiedad min-heap: Cada nodo es menor o igual que sus hijos. Para cualquier k entero no negativo, existe a lo más un árbol binomial en H cuya raíz tenga grado k (número de sucesores).

Estructura Colección de árboles min-heap-ordered. Similar a los heaps binomiales (si no se realizan operaciones de disminuir la clave, o eliminar) Introducido por Michael L. Fredman y Robert E. Tarjan en 1984. Usado en colas de prioridades para mejorar el tiempo de los algoritmos Dijkstra (encontrar caminos mínimos) y Prim (calcular el mínimo árbol cobertor de un grafo). El nombre proviene de los números Fibonacci utilizados para el análisis del tiempo de ejecución. Tiene un costo amortizado mejor que los heaps binomiales y binarios.

Estructura Comparación de los distintos heaps Tiempo de ejecución de las operaciones

Estructura Estructura de los Apuntadores de un nodo x: p[x]: padre child[x]:cualquiera de sus hijos left[x]: hermano izquierdo right[x]: hermano derecho Campos de x: degree[x]: de hijos de x mark[x]: indica si x perdió un hijo desde la última vez que x fue hecho hijo de otro nodo. Heap H: min[h]: mínimo nodo n[h]: de nodos en H

Introducción Heaps Estructura Si sólo se realizan las operaciones MAKE-HEAP, INSERT, MINIMUM, EXTRACT-MIN y UNION, entonces cada Fibonacci heap es una colección de árboles binomiales no ordenados. Un árbol binomial no ordenado U k consiste en dos árboles binomiales no ordenados U k 1, donde la raíz de uno se coloca como cualquier hijo del otro. U 0 consiste en un solo nodo. de árbol binomial no ordenado U k : 1 Tiene 2 k nodos 2 La altura del árbol es( k ) 3 Existen exactamente k i nodos a la profundidad i para i = 0, 1,..., k 4 La raíz tiene grado k, el cual es mayor que el de cualquier otro nodo. Los hijos de la raíz son raíces de los subárboles U 0, U 1,..., U k 1 en algún orden.

Estructura Función potencial Dado un heap H: t(h) el número de árboles en la lista de raíces m(h) el número de nodos marcados. La función potencial de un Fibonacci heap es: φ(h) = t(h) + 2m(H) Idea clave: retrasar el trabajo lo más que se pueda. φ(h) = 5 + 2 3 = 11

Estructura Insertando un nodo INSERT(H,x) 1 Crea un nuevo árbol sólo con el nodo x 2 Agrega el árbol en la lista de raíces, a la izquierda del mínimo. 3 Actualiza min[h] si es necesario 4 Actualiza n[h] en n[h] + 1.

Estructura Insertando un nodo Costo Amortizado φ(h) = t(h) + 2m(H) Costo de la operación= O(1) Diferencia de potencial= 1 Costo amortizado= 1 + O(1)

Estructura Uniendo dos UNION(H, H ) 1 Concatena los heaps H y H 2 min[h] el mínimo de los dos mínimos. 3 n[h] = n[h ] + n[h ].

Estructura Uniendo dos - Análisis Costo Amortizado φ(h) = t(h) + 2m(H) t(h) = t(h ) + t(h ), m(h) = m(h ) + m(h ) Costo de la operación = O(1) Diferencia de potencial = φ(h) (φ(h ) + φ(h )) = 0 Costo amortizado = O(1)

Estructura Eliminando el mínimo EXTRACT-MIN(H) 1 Agrega todos los hijos del mínimo en la lista de raíces. 2 Elimina el mínimo 3 Temporalmente min[h] será el vecino derecho.

Estructura Eliminando el mínimo EXTRACT-MIN(H) 1 A es un arreglo de tamaño D(n) + 1 (lg(14) 3, 8) 2 Consolida la lista de raíces, enlazando raíces de igual grado, 3 Termina cuando todas las raíces tengan grados distintos 4 Encuentra un nuevo mínimo.

Estructura Eliminando el mínimo EXTRACT-MIN(H) 1 A es un arreglo de tamaño D(n) + 1 (lg(14) 3, 8) 2 Consolida la lista de raíces, enlazando raíces de igual grado, 3 Termina cuando todas las raíces tengan grados distintos 4 Encuentra un nuevo mínimo.

Estructura Eliminando el mínimo EXTRACT-MIN(H) 1 A es un arreglo de tamaño D(n) + 1 (lg(14) 3, 8) 2 Consolida la lista de raíces, enlazando raíces de igual grado, 3 Termina cuando todas las raíces tengan grados distintos 4 Encuentra un nuevo mínimo.

Estructura Eliminando el mínimo EXTRACT-MIN(H) 1 A es un arreglo de tamaño D(n) + 1 (lg(14) 3, 8) 2 Consolida la lista de raíces, enlazando raíces de igual grado, 3 Termina cuando todas las raíces tengan grados distintos 4 Encuentra un nuevo mínimo.

Estructura Eliminando el mínimo EXTRACT-MIN(H) 1 A es un arreglo de tamaño D(n) + 1 (lg(14) 3, 8) 2 Consolida la lista de raíces, enlazando raíces de igual grado, 3 Termina cuando todas las raíces tengan grados distintos 4 Encuentra un nuevo mínimo.

Estructura Eliminando el mínimo EXTRACT-MIN(H) 1 Heap resultante.

Estructura Eliminando el mínimo - Análisis Notación: D(n) = máximo grado de cualquier nodo en un Fibonacci heap de n t(h) = número de árboles en el heap H. φ(h) = t(h) + 2m(H) Costo de la operación: O(D(n) + t(h)) O(D(n)): proceso de colocar los hijos como raíces. A lo más el grado del mínimo será D(n). O(D(n) + t(h)): proceso de consolidación. Proporcional al tamaño de la lista de raíces, el número de raíces decrece en uno luego de cada unión o mezcla. Al inicio de la consolidación son D(n) + t(h) 1 raíces. Costo amortizado: O(D(n)) t(h ) D(n) + 1, no habrán dos árboles con el mismo grado. Diferencia de potencial = ((D(n) + 1) + 2m(H)) (t(h) + 2m(H)) = D(n) + 1 t(h) Función potencial = O(D(n) + t(h)) + (D(n) + 1) t(h) = O(D(n))

Estructura Eliminando el mínimo - Análisis Cota para D(n) Si sólo soporta las operaciones MAKE-HEAP, INSERT, MINIMUM, EXTRACT-MIN y UNION en un Fibonacci heap de n nodos: Tiene sólo árboles binomiales no ordenados ya que sólo se mezclan árboles que tengan raíces de igual grado. D(n) lg n Cuando soporta las operaciones DECREASE-KEY y DELETE en un Fibonacci heap de n nodos: No preserva la propiedad de que todos los árboles sean binomiales no ordenados. D(n) = O(lg n)

Estructura Disminuyendo una clave Caso 0: propiedad min-heap no es violada DECREASE-KEY(H,x,k) 1 Disminuye la clave de x (46 a 45) 2 Actualiza el apuntador al mínimo si es necesario

Estructura Disminuyendo una clave Caso 1: padre de x no está marcado DECREASE-KEY(H,x,k) 1 Disminuye la clave de x (45 a 15) 2 Corta el link entre x y su padre 3 Marca al padre (perdió un hijo) 4 Agrega a x a la lista de raíces. 5 Actualiza el apuntador al mínimo si es necesario

Estructura Disminuyendo una clave Caso 2: padre de x si está marcado DECREASE-KEY(H,x,k) 1 Disminuye la clave de x a k (35 a 5) 2 Corta el link entre x y su padre p[x] 3 Agrega a x a la lista de raíces. 4 Actualiza el apuntador al mínimo si es necesario

Estructura Disminuyendo una clave Caso 2: padre de x si está marcado DECREASE-KEY(H,x,k) 1 Corta el link entre p[x] y su padre p[p[x]] (corte en cascada) 2 Desmarca p[x] y lo agrega a la lista de raíces. Si p[p[x]] no está marcado, se marca (si no es raíz) y termina. Si p[p[x]] si está marcado, se repite.

Estructura Disminuyendo una clave - Análisis Notación: t(h) = número de árboles en el heap H. m(h) = número de nodos marcados en el heap H. φ(h) = t(h) + 2m(H) Costo de la operación: O(c). (c es el número de nodos cortados) O(1): para disminuir la clave. O(1): c/u de los cortes en cascada y la inserción en la lista de raíces. Costo amortizado: O(1) t(h ) = t(h) + c: por el corte en cascada. m(h ) m(h) c + 2: cada corte desmarca un nodo (c 1). El último corte en cascada podría marcar a un nodo. Diferencia de potencial = ((t(h) + c) + 2(m(H) c + 2)) (t(h) + 2m(H)) = 4 c Función potencial = O(c) + 4 c = O(1)

Estructura Eliminando un nodo DELETE(H,x) 1 Disminuye la clave de x a. DECREASE-KEY(H,x, ) 2 Elimina el mínimo del heap. EXTRACT-MIN(H). Costo Amortizado: O(lg n) O(1): por DECREASE-KEY. O(D(n)): EXTRACT-MIN. (D(n) = O(lgn))

Estructura Acotando el máximo grado D(n) Cota superior de D(n) Para probar que el tiempo amortizado de EXTRACT-MIN y DELETE es O(lg n), se demuestra que una cota superior para D(n) en un Fibonacci heap de n nodos es O(lg n). Cuando todos los árboles son binomiales no ordenados, D(n) = lg n. Los cortes realizados por DECREASE-KEY, pueden generar árboles que violen la propiedad de binomiales no ordenados. Debido a que un nodo es cortado tan pronto pierde dos hijos, se demuestra que D(n) es O(lg n), en particular D(n) log φ n, donde φ = (1 + 5)/2 Lema clave Sea size(x) el número de nodos del subárbol formado por x, incluyendo a x y k = degree[x]. Entonces size(x) F k+2 φ k.

Introducción Heaps Estructura Ineficiente para buscar un elemento que no sea el mínimo. MAKE-HEAP, INSERT, MINIMUM, EXTRACT-MIN y UNION son O(1) EXTRACT-MIN y DELETE son O(lg n). Mejores tiempos que los heaps binomiales.