Arboles B (búsqueda externa)

Slides:



Advertisements
Presentaciones similares
ÍNDICES.
Advertisements

Branch-and-bound Search
ESTRUCTURA DE DATOS Unidad 04 TDA no lineales - Árboles.
IBD Clase 7.
ESTRUCTURA DE DATOS Unidad 04 Árboles BINARIOS.
ESTRUCTURA DE DATOS Unidad 04 Árboles BINARIOS DE BUSQUEDA.
ÁRBOLES EN C UNIVERSIDAD “ALONSO DE OJEDA” Facultad de Ingeniería
Inteligencia Artificial Búsqueda informada y exploración
Ordenamiento Interno y Búsqueda Binaria
Programación y Estructuras de Datos
ÁRBOLES BINARIOS DE BUSQUEDA
Operaciones sobre un árbol
Estructura de Datos en memoria secundaria
ESTRUCTURAS DE DATOS AVANZADAS
IBD Plan 2003 Clase 4. UNLP - Facultad de InformáticaIBD - CLASE 4 2 Archivos - Búsqueda Búsqueda de información (costo) # de comparaciones (operaciones.
Algoritmos Aleatorizados
Teoría de lenguajes y compiladores
Solución de problemas por búsqueda inteligente
Cont. Arbol Binario de Búsqueda
Á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.
Ana Lilia Laureano Cruces UAM-A
Estructura de Datos Lineales
PROGRAMACIÓN PARALELA EN ALGORITMOS SOBRE GRAFOS
ÁRBOLES BINARIOS DE BÚSQUEDA
Estructuras de Datos MC Beatriz Beltrán Martínez.
Definiciones: conjuntos, grafos, y árboles
Árboles, montículos y grafos Cola de prioridades, montículos
Tópicos I Árboles, montículos y grafos
Ordenamiento, Heapsort y Colas de prioridad
PILAS, COLAS, RECURSIVIDAD.
Sebastián Sánchez Prieto
Heaps Mauro Maldonado Abril/2005. Introducción La estructura heap es frecuentemente usada para implementar colas de prioridad. En este tipo de colas,
Análisis y Diseño de Algoritmos. Propiedades : f ( n )  O ( f ( n ) ) a ) O ( f ( n ) )  O ( g ( n ) )  f ( n )  g ( n )
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
Métodos de Búsqueda Informada. Búsqueda de la mejor Ruta En esta sección no sólo nos interesa encontrar una posible ruta, sino obtener aquella ruta que.
Programación IMC José Andrés Vázquez Flores. Definición Un arreglo es un conjunto finito e indexado de elementos homogéneos, que se referencian por un.
ARBOLES ESTRUCTURAS DE DATOS.
Árboles B M.C. José Andrés Vázquez Flores Estructuras de Datos / Primavera 2014.
Almacenamiento y Recuperacion de Información- Arbol AVL
Implementacion de F.S. Asignación espacio Manejo espacio libre Emely Arráiz Ene-Mar 08.
1 7.1 Búsqueda Externa Los algoritmos vistos hasta ahora son adecuados cuando todos los datos están en memoria principal. Gran volúmen de datos: se recurre.
Árboles Binarios Estructuras de Datos.
Árboles de Búsqueda Binaria
1 Arboles AVL Introducción Arboles AVL (Adel’son-Vel’skii and Landis.
1 Ordenamiento y estadísticas de orden Agustín J. González ELO 320: Estructura de Datos y Algoritmos.
7.  El TDA Diccionario.
Estructura de Datos M.C. José Andrés Vázquez Flores FCC/BUAP
Diccionarios El TDA diccionario Búsqueda binaria
DISEÑO DE UNA ESTRUCTURA DE INDEXACION DE DATOS TOPOLOGICAMENTE CONTENIDO.
Definiciones: conjuntos, grafos, y árboles
Estructura de Datos M.C. J. Andrés V. F. FCC/BUAP
1 Árboles de Búsqueda Binaria Agustín J. González ELO-320: Estructura de Datos y Algoritmos.
1 B-Trees y AVL Trees. 2 AVL Trees: Topicos Balance en los Trees Chequear el Balance Insertar Single y Doble Rotaciones.
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.
Árboles Binarios de Búsqueda (ABB)
A YUDANTÍA 5: A RBOLES Carlos Pulgar R. Mail: Página Ayudantía:
7.  El TDA Diccionario.
MIA - Grupo 5 Unidad 2.
Árboles Equilibrados Estructuras de Datos MC Beatriz Beltrán Martínez Primavera 2015.
Unidad 8 Árboles B Bibliografía: “Algoritmos y Estructuras de datos” de Aguilar y Martinez. Unidad 16 Autor: Ing Rolando Simon Titiosky.
Matemáticas Discretas MISTI
7. El TDA Diccionario. ¿Qué es un Diccionario ? Dado un conjunto de elementos {X 1, X 2,..., X N }, todos distintos entre sí, se desea almacenarlos en.
Clase II Estructuras dinámicas (TAD) Listas Enlazadas. ¿A que llamamos estructuras dinámicas? ¿Por qué son necesarias? Ventajas y Desventajas que tendremos.
Bases de datos II Universidad del Cauca Ing. Wilson Ortega.
Transcripción de la presentación:

Arboles B (búsqueda externa) Los algoritmos vistos hasta ahora funcionan bien cuando todos los datos estan en memoria RAM, la vual es (más) rápida Grandes conjuntos de datos están guardados normalmente en memoria secundaria (hard disk) de acceso (más) lento (de 100-1000 veces más lento) Acceso: siempre a un bloque completo (page) de datos (4096 bytes), que es guardado en RAM (caché) Por eficiencia: mantener el número de accesos a las páginas bajo! Un nodo = una página

Preámbulo: Arboles 2-3 Los nodos internos pueden contener hasta 2 elementos por lo tanto un nodo interno puede tener 2 o 3 hijos, dependiendo de cuántos elementos posea el nodo.

Propiedad todas las hojas están a la misma profundidad, es decir, los árboles 2-3 son árboles perfectamente balanceados La altura está acotada por

Inserción se realiza una búsqueda infructuosa y se inserta dicho elemento en el último nodo visitado durante la búsqueda, implica manejar dos casos distintos:

Ejemplos

Eliminación Físicamente se debe eliminar un nodo del último nivel Si el elemento a borrar está en un nodo interno el valor se reemplaza por el inmediatamente anterior/posterior Estos necesariamente están en último nivel

Caso simple El nodo donde se encuentra Z contiene dos elementos. En este caso se elimina Z y el nodo queda con un solo elemento.

Caso complejo 1 El nodo donde se encuentra Z contiene un solo elemento. En este caso al eliminar el elemento Z el nodo queda sin elementos (underflow). Si el nodo hermano posee dos elementos, se le quita uno y se inserta en el nodo con underflow.

Caso complejo 2 Si el nodo hermano contiene solo una llave, se le quita un elemento al padre y se inserta en el nodo con underflow. Si esta operación produce underflow en el nodo padre, se repite el procedimiento anterior un nivel más arriba. Finalmente, si la raíz queda vacía, ésta se elimina. Costo de las operaciones de búsqueda, inserción y eliminación en el peor caso: Θ (log(n))

1 node = 1 page (1 acceso a disco) Para búsqueda externa (en memoria secundaria) se usa una variante de árboles de búsqueda: Multiple way search trees 1 node = 1 page (1 acceso a disco)

Multiple way-search trees Definición (recursiva) : La forma básica de un multiple way-search tree es un conjunto vacío de claves {} Sean T0, ..., Tn multiple way-search trees con claves tomadas de un conjunto común S, y sean k1,...,kn una secuencia de claves tales que k1 < ...< kn. Entonces la secuencia : T0 k1 T1 k2 T2 k3 .... kn Tn Es un multiple way-search tree si se da que: Para cada claves x de T0 x < k1 Para i=1,...,n-1, para cada clave x en Ti, ki < x < ki+1 Para cada clave x de Tn kn < x

B-Tree Definicion: Un B-Tree of Order m es un multiple way tree con las siguientes características 1  #(claves en la raíz)  2m y m  #(claves en el nodo)  2m para todos los otros nodos. Todos los caminos de la raíz a alguna hoja son del mismo largo. Cada nodo interno (no hoja) con s claves tiene exactamente s+1 hijos. Árboles 2-3 es un caso particular para m=1

Ejemplo: un B-tree de orden 2:

Evaluación de B-trees El número minimo posible de nodos que puede tener un B-tree de orden m y altura h: Número de nodos en cada sub-tree 1 + (m+1) + (m+1)2 + .... + (m+1)h-1 =  ( (m+1)h – 1) / m. La raíz del ábol minimal tiene una sola clave y dos hijos, todos los demas tienen m claves. Sumando: número minimo de claves n en un B-tree de altura h: n  2 (m+1)h – 1 Por lo tanto para todo B-tree de altura h con n llaves s e cumple: h  logm+1 ((n+1)/2) .

Ejemplo Lo siguiente se cumple para todo B-tree de altura h con n llaves: h  logm+1 ((n+1)/2). Ejemplo: para Page size: 1 KByte y (1024 Cada clave mas el puntero: 8 bytes, nos caben 128 datos en un nodo. Si tomamos m=63, para un número de datos de n= 1 000 000 Tenemos      h  log 64 500 000.5 < 4 por lo cual hmax = 3.

Algoritmo de búsqueda en un B-tree Algorithm search(r, x) //buscar x en un árbol de raiz r; //variable global p = puntero al último node visitado en r, buscar la primera clave y >= x o hasta que no hayan mas if (y == x) {para, p = r, encontrado} else if (r una hoja) {parar, p = r, no encontrado} if (no es la la última clave) { search(puntero a nodo hijo anterior a y , x) } else search(puntero a ultimo hijo, x)

Insert y delete de claves Algoritmo insertar (r, x) //insertar clave x en el árbol de raíz r search( x , r); if (x no encontrado) { sea p la hoja donde paró la búsqueda: insertar x en el nodo apuntado por p en la posicion correcta ; if (p tiene ahora mas de 2m+1 claves) overflow(p); }

Algoritmo de Particion (1) overflow (p) = split (p) Algoritmo split (p) caso 1: p tiene un padre q. Dividir nodo p. La clave de la mitad va para el padre. consideración: el splitting puede ir subiendo hasta llegar a la raiz, en cuyo caso la altura de todo el el árbol se incrementa en uno.

Algoritmo Split (2) Algoritmo split (p) Caso 2: p es la raíz. Dividir nodo . crear un nodo nuevo sobre el actual que contiene la clave del medio (root tiene una clave).

Algoritmo borrar (r,x) //borra la clave key x from tree having root r search for x in the tree with root r; if x found { if x is in an internal node { exchange x with the next bigger key x' in the tree // if x is in an internal node then there must // be at least one bigger number in the tree //this number is in a leaf ! } be p the leaf, containing x; erase x from p; if p is not in the root r { if p has m-1 keys {underflow (p)} } }

Algorithm underflow (p) if p has a neighboring node with s>m nodes { balance (p,p') } else // because p cannot be the root, p must have a neighbor with m keys { be p' the neighbor with m keys; merge (p,p')}

Algorithm balance (p, p') // balance node p with its neighbor p' (s > m , r = (m+s)/2 -m )

Algorithm merge (p,p') // merge node p with its neighbor perform the following operation: afterwards: if( q <>  root) and (q has m-1 keys) underflow (q) else (if(q= root) and (q empty)) {free q let root point to p^}

Recursion Si al ejecutar underflow tenemos que ejecutar merge, existe la posibilidad de que tengamos que ejecutar underflow de nuevo en un nivel superior (padre) Este proceso se puede repetir hasta la raíz.

Ejemplo: B-Tree de orden 2 (m = 2)

Cost Sea m el orden del B-tree, sea n el numero de llaves. El costo de búsqueda, insertar y eliminar : O(h) = O(logm+1 ((n+1)/2) ) = O(logm+1(n)).

Remark: B-trees pueden ser usados como estructuras de almacenamiento interno (en memoria principal): Por ejemplo: B-trees de orden 1 (entonces hay 1 o 2 claves en cada nodo – áboles 2-3 -> no se necesita busqueda elaborada en los nodos). Costo de búsqueda, insertar y eliminar : O(log n).

Remark: uso de memoria de almacenamiento (secundaria) Sobre 50% razón: la condición: 1/2•k  #(llaves en el nodo)  k Para nodos  raiz (k=2m)