La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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.

Presentaciones similares


Presentación del tema: "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."— Transcripción de la presentación:

1 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 a memoria secundatria (almacenamiento externo) incluso para las claves. Acceso: siempre igual a un bloque entero (página) de datos, por ejemplo: 4096 Bytes. Effizienz: Número de accesos a una página debe mantenerse al mínimo!

2 2 Para búsqueda externa: Variante de árboles de búsqueda con: Knoten = Seite Vielwegsuchbäume (árboles de búsqueda de múltiples caminos)

3 3 Definición (Arbol de busqueda de multiples caminos) El arbol vacio es {}. Sean T 0,..., T n Arboles de busqueda de multiples caminos de un conjunto de claves S, und sea k 1,...,k n una lista de claves con k 1 <...< k n. Entonces la serie T 0 k 1 T 1 k 2 T 2 k 3.... k n T n Es un Arbol de busqueda de multiples caminos cuando: Para todas las claves x deT 0 se cumple: x < k 1 Para i=1,...,n-1, para todas las claves x en T i se cumple : k i < x < k i +1, Para cada clave x de T n se cumple: k n < x.

4 4 Árbol B Definition Un árbol B de orden m ist es un Arbol de busqueda de multiples caminos con las siguientes características 1  #(claves en la raíz)  2m y m  #(claves en nodo interno)  2m Todos los caminos de la raíz a una hoja son igual de largo. Cada nodo con s claves tiene exactamente s+1 hijos.

5 5 Beispiel: Ein B-Baum der Ordnung 2:

6 6 Abschätzungen zu B-Bäumen Un árbol minimal de orden m y altura h tiene: Numero de nodos en el árbol izquierdo y derecho 1 + (m+1) + (m+1) 2 +.... + (m+1) h-1 = ( (m+1) h – 1) / m. La raiz tiene una clave, todos los otros nodos tiene m claves. En total: Numero de claves n en un B-Baum de altura h: n  2 (m+1) h – 1 Por lo tanto se cumple que para todo B-Baum de altura h con n claves: h  log m+1 ((n+1)/2).

7 7 Ejemplo Por lo tanto se cumple que para todo B-Baum de altura h con n claves : h  log m+1 ((n+1)/2). Ejemplo: para Tamaño de página : 1 KByte y Cada entrada correspondiente a una clave: 8 Byte, Se puede elegir m=63 y para Un número de datos de n= 1000 000 Se tiene h  log 64 500 000.5 < 4 y con esto h max = 3.

8 8 Algoritmos para insertar y eliminar claves en un árbol B Algorithmus insert (root, x) //insertar clave x en el árbol con raíz root buscar x en el árbol de raíz root ; si no se encuentra { sea p hoja donde se terminó la búsqueda; insertar x en la posición adecuada (ordenado); si p tiene 2m+1 claves {overflow(p)} }

9 9 Algorithmus overflow (p) = split (p) Algorithmus split (p) primer caso: p tiene un padre q. Dividir el nodo rebalsado. La clave del medio va al padre. Anmerkung: la división se tiene que repetir hasta que se llegue a la raiz si es necesario, con lo que la altura del árbol crece en 1. Algorithmus Split (1)

10 10 Algorithmus split (p) segundo caso: p es la raiz. Dividir el nodo rebalsado. Abrir un nuevo nivel hacia arriba con una nueva raíz que contenga la clave que divide. Algorithmus Split (2)

11 11 //borrar clave x del árbol con raíz root buscar x en el árbol con raíz root; cuando se encuentra x { si x està en un nodo interno { intercambiar x con la clave siguiente mayor x' // si x está en un nodo interno, hay una clave // siguiente mayor que está en una hoja } sea p la hoja que contiene x; borrar x de p; si p no es la raíz { si p queda con m-1 claves {underflow (p)} } } Algorithmus delete (root,x)

12 12 Algorithmus underflow (p) si p tiene un nodo hermano con s>m { balance (p,p') } else // como p no es la raíz, un hermano de p tiene que tener por lo menos m claves { sea p' hermano de p; merge (p,p')}

13 13 Algorithmus balance (p, p') // balancear p con su hermano p' (s > m, r =  (m+s)/2  -m )

14 14 Algorithmus merge (p,p') // unir p con su hermano realizar las siguientes operaciones: Al final : Si ( q != raíz) und (q tiene m-1 claves) underflow (q) Else (si (q= raíz) y (q vacío)) {liberar q y hacer p la nueva raíz}

15 15 Rekursion Cuando por un underflow se llega a un merge, debe eventualmente hacerse underflow de un nivel más arriba. Esto puede extenderse hasta la raíz.

16 16 Ejemplo: ärbol B de Orden 2

17 17 Costo Sea m el orden del B-Baums, n el número de claves. Costo de la búsqueda, inserción y eliminación: O(h) = O(log m+1 ((n+1)/2) ) = O(log m+1 (n)).

18 18 Anmerkung: B-Bäume auch als interne Speicherstruktur zu gebrauchen: Besonders: B-Bäume der Ordnung 1 (dann nur 1 oder 2 Schlüssel pro Knoten – keine aufwändige Suche innerhalb von Knoten). Aufwand für Suchen, Einfügen, Löschen: O(log n).

19 19 Anmerkung: Speicherplatzausnutzung: über 50% Grund: die Bedingung: 1/2k  #(Schlüssel in Knoten)  k Für Knoten  Wurzel (k=2m)

20 20 Noch höhere Speicherplatzausnutzung möglich, z.B. über 66% mit Bedingung: 2/3k  #(Schlüssel in Knoten)  k für alle Knoten mit Ausnahme der Wurzel und ihrer Kinder. Erreichbar durch 1) modifiziertes Balancieren auch beim Einfügen und 2) split erst, wenn zwei Nachbarn ganz voll. Nachteil: Häufigere Reorganisation beim Einfügen und Löschen notwendig.


Descargar ppt "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."

Presentaciones similares


Anuncios Google