Árboles, montículos y grafos Cola de prioridades, montículos

Slides:



Advertisements
Presentaciones similares
5. Estructuras no lineales estáticas y dinámicas
Advertisements

ESTRUCTURA DE DATOS Unidad 04 TDA no lineales - Árboles.
Definición Las colas ofrecen dos operaciones fundamentales, que son encolar (al final de la cola) y desencolar (del comienzo de la cola). Al igual que.
IBD Clase 7.
Gestión de Recursos Informáticos Unidad Nº 4: Proyectos Informáticos
ESTRUCTURA DE DATOS Unidad 04 Árboles BINARIOS.
ESTRUCTURA DE DATOS Unidad 04 Árboles BINARIOS DE BUSQUEDA.
Árboles Grafo que no contiene ciclos, es decir es un grafo también acíclico, pero a su vez es conexo.
Montículos Daniel González Pérez Cristina Sánchez Aragón
BENEMERITA UNIVERSIDAD AUTONOMA DE PUEBLA
Programación y Estructuras de Datos
ÁRBOLES BINARIOS DE BUSQUEDA
Operaciones sobre un árbol
Estructura de Datos en memoria secundaria
Tema 4 Árboles. Conceptos Generales..
ESTRUCTURAS DE DATOS AVANZADAS
Algoritmos Aleatorizados
Teoría de lenguajes y compiladores
M.I.A Daniel Alejandro García López
Árboles balanceados AVL
Integrantes: Esteban Jiménez Guesseppe Lozada Mario Rodriguez Gustavo Tenorio Fabio.
Cont. Arbol Binario de Búsqueda (2). Sobre los recorridos Las versiones recursivas de los recorridos son costosas debido a la gran cantidad de llamadas.
Almacenamiento y Recuperacion de Información TAD_ABB Ana Lilia Laureano Cruces Universidad Autónoma Metroplotiana.
Tema Nº4.
COLAS, IMPLEMENTACIÓN A PARTIR DE LISTAS Y PARA PILAS
Ana Lilia Laureano Cruces UAM-A
Estructura de Datos Lineales
Árboles.
Estructuras de Datos MC Beatriz Beltrán Martínez.
Tópicos I Árboles, montículos y grafos
Ordenamiento, Heapsort y Colas de prioridad
TEMA 5 ORDENACION, BUSQUEDA, MODIFICACION, BUSQUEDA HASH.
PILAS, COLAS, RECURSIVIDAD.
Heaps Mauro Maldonado Abril/2005. Introducción La estructura heap es frecuentemente usada para implementar colas de prioridad. En este tipo de colas,
ARBOLES ESTRUCTURAS DE DATOS.
Estructura de Datos y Algoritmos
Diseño y análisis de algoritmos
Arboles M.C. José Andrés Vázquez FCC/BUAP
ARBOLES ESTRUCTURAS DE DATOS.
Árboles B M.C. José Andrés Vázquez Flores Estructuras de Datos / Primavera 2014.
Diseño y análisis de algoritmos
Almacenamiento y Recuperacion de Información- Arbol AVL
27/04/2015Dulce M. Rivero A. Estructura de datos 1 COLAS DE PRIORIDAD Las colas de prioridad son estructuras de datos que resultan ser útiles en muchas.
ÁRBOLES BINARIOS DE BÚSQUEDA BALANCEADOS
Estructuras de Datos1 ABB´s balanceados por peso Balance perfecto Para cada nodo, el número de nodos del subárbol izquierdo y el número de nodos del subárbol.
Árboles.
Árboles Recomendado: 1. Nivelación Funciones
Árboles Binarios Estructuras de Datos.
Matemáticas Discretas
Con el objeto de mejorar el rendimiento en la búsqueda surgen los árboles balanceados. La idea central de estos es la de realizar reacomodó o balanceos.
1 Ordenamiento y estadísticas de orden Agustín J. González ELO 320: Estructura de Datos y Algoritmos.
Estructura de Datos M.C. José Andrés Vázquez Flores FCC/BUAP
Sesión 3: Teoría de Grafos
Unidad 6: Árboles.
Estructura de Datos M.C. J. Andrés V. F. FCC/BUAP
Heap Fibonacci heap de Fibonacci es una estructura de datos similar a un heap binomial pero con mejor coste amortizado. se utiliza para mejorar el tiempo.
ARBOLES GENERALIZADOS
Árboles Binarios de Búsqueda (ABB)
Arboles Binarios.
A YUDANTÍA 5: A RBOLES Carlos Pulgar R. Mail: Página Ayudantía:
Árboles Binarios * Recorridos * Tipo
Capítulo 8: Árboles Autor: José Alfredo Jiménez Murillo.
Árboles Equilibrados Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2015.

PILAS Una pila es una estructura de datos o lista de elementos, a la cual se le puede insertar o eliminar su contenido sólo por uno de sus extremos, llamado.
Matemáticas Discretas MISTI
Bases de datos II Universidad del Cauca Ing. Wilson Ortega.
Algoritmos voraces Códigos de Huffman. Descripción del problema Tenemos un archivo de entrada. Asumiremos que el archivo está compuesto de bytes (enteros.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
Montículos Binarios (Binary Heaps)
Transcripción de la presentación:

Árboles, montículos y grafos Cola de prioridades, montículos Tópicos I Unidad I Árboles, montículos y grafos Semana 3 Cola de prioridades, montículos

Objetivos Generales Entender el manejo, uso de algoritmos y estructuras de datos avanzados, haciendo énfasis en los algoritmos de internet, seguridad y redes.

Objetivo Específico Implementar algoritmos utilizando estructura de datos avanzadas.

Objetivo Instruccional Implementar algoritmos que permitan la asignación de prioridades adecuadas y que sirvan como base para la construcción de algoritmos mas avanzados.

Montículos binarios a la izquierda Contenidos Cola de Prioridades Montículos binarios Montículos – d Montículos binarios a la izquierda

Introducción Cola de prioridades En muchas aplicaciones los registros con clave se deben procesar en orden, pero no necesariamente en orden completo, ni todos a la vez. A veces se forma un conjunto de registros y se procesa el mayor; a continuación posiblemente se incluyan otros elementos y luego se procesa el nuevo registro máximo y así sucesivamente. Una estructura de datos apropiada para un entorno como este es aquella que permita insertar un nuevo elemento y eliminar el mayor. Esta estructura que se puede contrastar con las colas (donde se elimina el mas antiguo) o con las pilas (donde se elimina el mas reciente), se denomina cola de prioridad.

Introducción Cola de prioridades Las colas de prioridad son estructuras de datos que resultan ser útiles en muchas aplicaciones informáticas. Es útil pensar en los valores de las claves asociados con los elementos como prioridades. Así, las claves obedecen a un relación de orden total.

Las aplicaciones de las colas de prioridades incluyen por ejemplo: Cola de prioridades Las aplicaciones de las colas de prioridades incluyen por ejemplo: la gestión de un planificador de tareas en un Sistema MultiUsuario. los trabajos que consumen menos recursos los trabajos del administrador del sistema la gestión de los trabajos enviados a impresión los trabajos más importantes primero los trabajos más cortos primero

Cola de prioridades Por razones de utilidad se debe precisar algo mas sobre la forma de tratar las colas de prioridad, puesto que existen varias operaciones que pueden ser necesario llevar a cabo sobre ellas, para preservarlas y poderlas utilizar con eficacia en las aplicaciones. Lo que se desea es construir y mantener una estructura de datos que contenga registros con claves numéricas (prioridades) y que cuente con algunas de las operaciones siguientes: Construir una cola de prioridad a partir de N elementos Insertar un nuevo elemento Suprimir el elemento mas grande Cambiar la prioridad de un elemento Unir dos colas de prioridad en una mas grande

Cola de prioridades Las operaciones más importantes en una cola de prioridades se refieren aquellas que permiten repetidamente seleccionar el elemento de la cola de prioridad que tiene como clave el valor mínimo (máximo). Esto conlleva a que una cola de prioridad P debe soportar las siguiente operaciones: ColaPrioridad(T) Insertar(P,x): añade el elemento x a la cola de prioridad EncontrarMin(P): Devuelve el elemento de P con la prioridad con menor valor. EliminarMin(P): Quita y devuelve el elemento con la prioridad con menor valor.

Implementaciones de una Cola de Prioridades Arboles equilibrados (AVL, Rojo y Negro) Permite las operaciones en O(log n). Se mantiene la propiedad de ABB. Se añade costo adicional por las operaciones de equilibrio. Montículos Binarios Montículos a la izquierda

Propiedades estructurales de los montículos Montículos binarios Propiedades estructurales de los montículos Un montículo binario (o simplemente montículo o heap) es un árbol binario completo: todos los niveles están llenos con la posible excepción del nivel mas bajo, que se llena de izquierda a derecha. Un árbol binario completo de altura h, tiene entre 2h y 2h+1-1 nodos Esta regularidad facilita su representación mediante un vector Para cualquier elemento en la posición i del vector, el hijo izquierdo esta en la posición 2i, el hijo derecho en 2i+1 y el padre en i/2

Propiedades de orden de los montículos Montículos binarios Propiedades de orden de los montículos El mínimo (máximo) esta en la raíz Y como todo subárbol también es un montículo, todo nodo debe ser menor (mayor) o igual que todos sus descendientes

Ejemplo de montículos de máximos Montículos binarios Ejemplo de montículos de máximos 15 13 12 8 9 5 7 3 4 1 2 3 4 5 6 7 8 9 10 12 11 15 13 12 8 9 5 7 3 4 1 2 3 4 5 6 7 8 9 10 11 12

Ubicación en el vector de un elemento Montículos binarios 15 13 12 8 9 5 7 3 4 1 2 6 10 11 i=3 2*i=2*3=6 2*i+1=2*3+1=7 i/2=1 15 13 12 8 9 5 7 3 4 1 2 3 4 5 6 7 8 9 10 11 12

Al hacer uso de un vector, se observa que: Montículos binarios Al hacer uso de un vector, se observa que: No hay necesidad de almacenar punteros como en los ABB. Los cálculos de índices tardan menos tiempo que los de referencia de punteros asociados a una representación enlazada.

Mantenimiento de montículos Montículos binarios Mantenimiento de montículos La operación EncontrarMin() o EncontrarMax(), se realiza en orden constante ya que solo será necesario acceder al valor de la raíz. Las operaciones Insertar(x), EliminarMin() o EliminarMax() no tienen implantaciones triviales en un montículo binario. Es necesario asegurar que ambas operaciones no destruyan las propiedades del montículo.

Montículos binarios Insertar (x): Al insertar un elemento x en un montículo de n elementos debe resultar un árbol binario de n+1 elementos, esto es: El nodo se añade como una hoja extrema creciendo de izquierda a derecha (n+1). (garantiza la propiedad de forma) Se garantiza la propiedad de ordenamiento 2 8 3 10 16 7 18 13 15 4 Ejemplo de montículos de mínimos

Reordenando para garantizar las propiedades Montículos binarios Reordenando para garantizar las propiedades 2 8 3 10 4 7 18 13 15 16 2 8 3 2 10 4 7 18 13 15 16

Reordenando para garantizar las propiedades Montículos binarios Reordenando para garantizar las propiedades 2 4 3 10 8 7 18 13 15 16 2 4 3 2 10 8 7 18 13 15 16

Resultado final Montículos binarios 2 4 3 10 8 7 18 13 15 16 2 4 3 2

Montículos binarios Eliminar(): Al eliminar un elemento X en un montículo de n elementos, se elimina el elemento de clave mínima o máxima, es decir el elemento de la raíz. Se debe garantizar la propiedad de ordenamiento 2 2 8 3 10 2 16 7 18 13 15 8 3 10 16 7 18 Eliminando un elemento del montículo 13 15

Reordenando para garantizar las propiedades Montículos binarios Reordenando para garantizar las propiedades 15 8 3 10 16 7 18 13 15 15 8 3 2 10 16 7 18 13 n=n-1

Reordenando para garantizar las propiedades Montículos binarios Reordenando para garantizar las propiedades 15 8 3 10 16 7 18 13 15 8 3 2 10 16 7 18 13

Reordenando para garantizar las propiedades Montículos binarios Reordenando para garantizar las propiedades 3 8 15 10 16 7 18 13 3 8 15 2 10 16 7 18 13

Reordenando para garantizar las propiedades Montículos binarios Reordenando para garantizar las propiedades 3 8 7 10 16 15 18 13 3 8 7 2 10 16 15 18 13

Montículos binarios Entonces: En la operación de inserción es necesario realizar un subir (filtrado ascendente) del nodo a insertar para asegurar la propiedad de forma. En la operación de eliminación es necesario realizar un hundir (filtrado descendente) del nodo pivote para asegurar la propiedad de forma.

Ejercicio: Montículos binarios Creación de un montículo a partir de una colección existente de datos. Solución 1: Hacer n inserciones en un montículo inicialmente vacío O(nlog n). Enfoque de arriba hacia abajo. Solución 2: Utilizar un enfoque de abajo hacia arriba, O(n).

Montículos binarios Detalle de la Solución 2: Utilizar un enfoque de abajo hacia arriba, O(n). Pasos: Almacenar arbitrariamente los n elementos en el árbol. 19 2 13 18 15 3 7 16 8 19 2 13 2 18 15 3 7 16 8

Montículos binarios Pasos: Con el nodo [n/2] procesando en orden decreciente hasta el nodo 1, montificar el subárbol con raíz en cada nodo por medio de un hundir. 1 19 2 3 2 13 4 18 15 3 7 16 8 [n/2] =[9/2]=4 19 2 13 2 18 15 3 7 16 8

Montículos binarios Pasos: Procesando en orden decreciente el nodo n-1, montificar el subárbol con raíz en cada nodo por medio de un hundir. 1 19 2 3 2 13 8 15 3 7 16 18 19 2 13 2 8 15 3 7 16 18

Montículos binarios Pasos: Procesando en orden decreciente el nodo n-2, montificar el subárbol con raíz en cada nodo por medio de un hundir. 1 19 2 2 3 8 15 13 7 16 18 19 2 3 2 8 15 13 7 16 18

Montículos binarios Pasos: Procesando en orden decreciente el nodo n-3, montificar el subárbol con raíz en cada nodo por medio de un hundir. 1 19 2 3 8 15 13 7 16 18 19 2 3 2 8 15 13 7 16 18

Montículos binarios Pasos: Procesando en orden decreciente por el medio de hundir para garantizar la propiedad del montículo. 2 19 3 8 15 13 7 16 18 2 19 3 2 8 15 13 7 16 18

Montículos binarios Pasos: Procesando en orden decreciente por el medio de hundir para garantizar la propiedad del montículo. 2 8 3 19 15 13 7 16 18 2 8 3 2 19 15 13 7 16 18

Resultado final Montículos binarios 2 8 3 16 15 13 7 19 18 2 8 3 2 16

Montículos - d Montículos parecidos a los binarios, excepto que todos los nodos tienen d hijos. 5 1 6 7 10 2 3 4 61 31 21 14 13 12 19 18 16 4 7 10 13 15 16 8 17 9

Características Más bajos que los montículos binarios altura logd n. Montículos - d Características Más bajos que los montículos binarios altura logd n. Mejora la operación de insertar EliminarMin es más costosa O(d logd n) Se pueden implantar en arreglos Bueno cuando hay muchas inserciones y pocas eliminaciones Bueno cuando el tamaño del montículo es muy grande.

Montículos - d Problema: La operación de combinar dos montículos en uno (fusionar) no tiene un soporte eficiente Estructuras para fusionar eficientemente. Montículos a la izquierda: es un árbol binario. Se diferencia del montículo binario porque el montículo a la izquierda no está perfectamente equilibrado (intenta ser muy desequilibrado).

Longitud del camino nulo (lcn) Montículos binarios a la izquierda Longitud del camino nulo (lcn) Longitud del camino nulo lcn(x): es la longitud del camino más corto entre x y un nodo hoja. Longitud del camino nulo de un nodo hoja con un hijo es 0. lcn(nulo) = -1 (longitud del camino nulo es -1) 1

Propiedad del montículo a la izquierda La lcn del hijo izquierdo es al menos tan grande como la del hijo derecho El árbol se desvía con mayor profundidad al lado izquierdo. Montículos binarios a la izquierda Un montículo a la izquierda posee dos propiedades: Propiedad estructural basada en la longitud del camino nulo Propiedad de orden (como el montículo binario)

Montículos binarios a la izquierda Montículo a la izquierda No 1 1 1 1 Montículos binarios a la izquierda 1 No cumple propiedad 1 lcn de cualquier nodo es 1 más que la mínima longitud del camino nulo de sus hijos

Montículos binarios a la izquierda Teorema: Un árbol a la izquierda con d nodos en el camino derecho debe tener al menos 2d - 1 nodos Un árbol a la izquierda de n nodos tiene un camino derecho con a lo más log(n+1) nodos La idea es trabajarlo por el lado derecho que es más corto. Montículos binarios a la izquierda

Montículos binarios a la izquierda Ejemplo para fusionar dos montículos a la izquierda (P1, P2) 3 6 10 8 12 7 Montículos binarios a la izquierda 21 14 17 18 24 37 18 23 26 33 P1 P2

Montículos binarios a la izquierda Ejemplo para fusionar dos montículos a la izquierda (P1, P2) 3 6 10 12 7 8 Montículos binarios a la izquierda 21 14 18 24 37 18 17 23 33 26 P1 P2

Montículos binarios a la izquierda Ejemplo para fusionar dos montículos a la izquierda (P1, P2) 3 6 10 12 8 Montículos binarios a la izquierda 7 21 14 18 24 17 37 18 23 33 26 P1 P2

Montículos binarios a la izquierda Ejemplo para fusionar dos montículos a la izquierda (P1, P2) 3 6 10 12 8 Montículos binarios a la izquierda 7 21 14 18 24 17 37 23 33 26 18 P1 P2

Montículos binarios a la izquierda Ejemplo para fusionar dos montículos a la izquierda (P1, P2) 3 6 10 12 8 Montículos binarios a la izquierda 7 NULO 21 14 18 24 17 37 23 33 26 18 P1 P2

Montículos binarios a la izquierda Ejemplo para fusionar dos montículos a la izquierda (P1, P2) 3 6 LCN? 10 12 8 Montículos binarios a la izquierda 7 21 14 17 18 18 24 37 23 33 26

Montículos binarios a la izquierda Ejemplo para fusionar dos montículos a la izquierda (P1, P2) LCN? 3 6 7 10 12 8 Montículos binarios a la izquierda 37 21 14 18 24 17 18 23 33 26

Montículos binarios a la izquierda Ejemplo para fusionar dos montículos a la izquierda (P1, P2) LCN? 3 6 7 10 12 Montículos binarios a la izquierda 8 37 21 14 18 24 17 18 23 33 26

Montículos binarios a la izquierda Ejemplo para fusionar dos montículos a la izquierda (P1, P2) LCN? 3 6 10 12 7 Montículos binarios a la izquierda 8 37 21 14 18 24 23 33 17 18 26

Montículos binarios a la izquierda Ejemplo para fusionar dos montículos a la izquierda (P1, P2) 3 LCN? 6 10 12 7 Montículos binarios a la izquierda 21 14 8 37 18 24 23 33 17 18 26

Montículos binarios a la izquierda Ejemplo para fusionar dos montículos a la izquierda (P1, P2) 3 6 10 12 7 Montículos binarios a la izquierda 21 14 8 37 18 24 23 33 17 18 26

Montículos binarios a la izquierda Insertar un nodo M1 M2 3 6 10 8 Montículos binarios a la izquierda 21 14 17 23 26

Montículos binarios a la izquierda Insertar un nodo M1 M2 3 6 Nulo 10 8 Montículos binarios a la izquierda 21 14 17 23 26

Montículos binarios a la izquierda Insertar un nodo M1 M2 3 6 8 10 Montículos binarios a la izquierda 17 21 14 26 23

Montículos binarios a la izquierda Insertar un nodo M1 M2 3 6 8 10 Montículos binarios a la izquierda 17 21 14 26 23

Montículos binarios a la izquierda Resultado de Insertar un nodo M1 3 10 6 Montículos binarios a la izquierda 8 21 14 17 23 26

Montículos binarios a la izquierda EliminarMin() M1 3 10 8 Montículos binarios a la izquierda 21 14 17 23 26

Montículos binarios a la izquierda EliminarMin() M1 M2 8 10 Montículos binarios a la izquierda 17 21 14 26 23

Montículos binarios a la izquierda EliminarMin() M1 M2 8 10 Montículos binarios a la izquierda 17 21 14 26 23

Montículos binarios a la izquierda EliminarMin() M1 M2 8 10 Montículos binarios a la izquierda 17 21 14 NULO 26 23

Montículos binarios a la izquierda EliminarMin() M1 8 17 10 Montículos binarios a la izquierda 26 21 14 23

Árboles, montículos y grafos Cola de prioridades, montículos Tópicos I Unidad I Árboles, montículos y grafos Semana 3 Cola de prioridades, montículos