7.  El TDA Diccionario.

Slides:



Advertisements
Presentaciones similares
-go Verbs There is a small but very important group of verbs that we call the -go verbs. These verbs are: Conocer : to know (people) Hacer: to make/do.
Advertisements

-go Verbs There is a small but very important group of verbs that we call the -go verbs. These verbs are: Hacer: to make/do Poner: to put Salir: to leave.
Control en cascada.
Editing Slides With Polaris Office, you can create new .ppt and .pptx presentations or edit your presentation with ease.
WALT: talking about dates and saying when your birthday is WILF: To be able to write & understand months and dates in Spanish to get to a Level 2 To be.
1 How to make commands in Spanish. First of all, commands in Spanish come in two kinds: formal and informal.
Telling Time (Cómo decir la hora). When we ask what time it is in Spanish, we say “¿Qué hora es?” Some people also say “¿Qué horas son?”
Stem-changing verbs.
PRUEBA DE UBICACION PARA HISPANOHABLANTES
Heaps Mauro Maldonado Abril/2005. Introducción La estructura heap es frecuentemente usada para implementar colas de prioridad. En este tipo de colas,
7.  El TDA Diccionario.
Telling Time.
What time is it? DLT: I can tell time in Spanish..
1 – 999,999,999.
Objective: I can recognize and accurately use gender agreement. Do Now: Match the following Spanish and English words: 1. Pelirroja a. Good-looking 2.
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.
Verbos con Cambio de Raiz en el Subjuntivo.
-AR Verbs In Spanish, there are three classes (or conjugations) of verbs: those that end in –AR, those that end in –ER, and those that end in –IR. This.
Español 3 Sra. Carpinella.  Because each tense is used for very specific things, there are some key words that indicate whether you would use the imperfect.
Los verbos reflexivos Objective:
Hace + Time Expressions
El uso del artículo como sustantivo
Stem-Changing verbs.
Arboles B (búsqueda externa)
1 B-Trees y AVL Trees. 2 AVL Trees: Topicos Balance en los Trees Chequear el Balance Insertar Single y Doble Rotaciones.
Digital Photography: Selfie Slides
Digital Photography: Selfie Slides By: Essence L. Thomas.
¿Qué haces en la escuela? Question words, objects, yo-go’s.
Indirect Object Pronouns
Formal Commands! Telling people what to do…… You speak, or you are speaking……Hablas, estás hablando This is different from telling (commanding) someone.
Tecnología y Estructura de Costos. Technologies u A technology is a process by which inputs are converted to an output. u E.g. labor, a computer, a projector,
Digital Photography: Selfie Slides Your Name Date Class Period.
Time Telling time is rather easy. You only need to know the numbers up to 59 to be able to tell the time.
The Imperfect In this presentation, we will look at another way of talking about the past.
Digital Photography: Selfie Slides Anaiyah holiday 10/23/2014 6th.
The Imperfect In this presentation, we will look at another way of talking about the past.
Digital Photography: Selfie Slides Caidyn Tanton 10/23/14 Period: 1.
Formal Commands! Ten-Hut! In this presentation, you will learn about making commands in Spanish.
Spanish Sentence Structure How can we make better sentences?
Digital Photography: Selfie Slides Traci Armstrong 10/23/14 6 th period.
Adverbs are words that describe how, when, and where actions take place. They can modify verbs, adjectives, and even other adverbs. In previous lessons,
Notebook Organization (Todo el trabajo de esta clase se hace en el cuaderno)
7.  El TDA Diccionario.
Unidad 8 Árboles B Bibliografía: “Algoritmos y Estructuras de datos” de Aguilar y Martinez. Unidad 16 Autor: Ing Rolando Simon Titiosky.
Associative, Commutative, and Distributive Properties of Addition and Multiplication August 18th Students only need to copy the writing in purple. Students.
Un Mapa De Tesoro. El Mapa… Include a drawing of all of the following: 1.el lago 2.el bosque 3.las montañas 4.el río 5.la playa 6.el océano 7.la catarata.
JUEVES, EL 10 DE SEPTIEMBRE LT: I WILL RECOGNIZE SOME NEW VOCABULARY WORDS. Go over tests & retake procedures Interpretive Assessment: numbers & alphabet.
-go Verbs There is a small but very important group of verbs that we call the “-go” verbs. These verbs are: Conocer : to know (people) Hacer: to make/do.
10.4 Adverbs ANTE TODO  Adverbs are words that describe how, when, and where actions take place.  They can modify verbs, adjectives, and even other adverbs.
Indirect Object Pronouns Original PowerPoint was by Ms. Martin of Tri-Center Community Schools.
Operations Charts Keep these operations charts posted by the wall you usually work out math word problems. Print them in color and paste them on the same.
How would you spell the following word out loud in Spanish? Abuelito.
To be, or not to be? Let’s start out with one of the most important verbs in Spanish: ser, which means “to be.”
What time is it? DLT: I can tell time in Spanish..
Un juego de adivinanzas: ¿Dónde está el tesoro? A1B1C1D1E1F1 A4B4C4D4E4F4 A2B2C2D2E2F2 A5B5C5D5E5F5 A3B3C3D3E3F3 A6B6C6D6E6F6 Inténtalo de nuevo Inténtalo.
INTRO. TO LAW – MR. STILLMAN 1/5/16 Discrimination based on gender (which is almost but not always discrimination against women) In employment In sports.
Antes de empezar – ¿Cómo se llaman estos quehaceres? (Necesito la tarea.)
LOS VERBOS REFLEXIVOS. WRITE: What is a reflexive verb? A reflexive verb describes when a person doing an action is also receiving the action.
English Language II (2). English Language I (2) Warm-up.
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.
The Present Progressive Tense form of estar + the present participle (-ando or -iendo)
When attaching object pronouns: 1.Find the natural stress of the original word in question. Voy a llevarselo ahora.
Memoria Retos de diseño. Universidad de SonoraArquitectura de Computadoras2 Fallas de caché Las fallas de caché disminuyen conforme se incrementa la asociatividad.
Escribir *You can get creative. You can write in the first person which means you are the character, you can use the third person which means you are talking.
To be, or not to be? Let’s start out with one of the most important verbs in Spanish: ser, which means “to be.”
To be, or not to be? Let’s start out with one of the most important verbs in Spanish: ser, which means “to be.”
First Grade Dual High Frequency Words
Quasimodo: Tienes que hacer parte D de la tarea..
Welcome to PowerPoint gdskcgdskfcbskjc. Designer helps you get your point across PowerPoint Designer suggests professional designs for your presentation,
Globalization Politics and the preservation of nation state.
Transcripción de la presentación:

7.  El TDA Diccionario

¿Qué es un Diccionario ? Dado un conjunto de elementos {X1, X2, ..., XN}, todos distintos entre sí, se desea almacenarlos en una estructura de datos que permita la implementación eficiente de las operaciones: búsqueda(X): dado un elemento X, conocido como llave de búsqueda, encontrarlo dentro del conjunto o decir que no está. inserción(X): agregar un nuevo elemento X al conjunto. eliminación(X): eliminar el elemento X del conjunto. Estas operaciones describen al TDA diccionario. En el presente capítulo se verán distintas implementaciones de este TDA y se estudiarán las consideraciones de eficiencia de cada una de dichas implementaciones.

Implementaciones sencillas Una lista enlazada, con la inserción de nuevos elementos al comienzo. búsqueda: O(n) (búsqueda secuencial). inserción: O(1) (insertando siempre al comienzo de la lista). eliminación: O(n) (búsqueda + O(1)). Arreglo ordenado: inserción y eliminación ineficientes, puesto ("correr" los elementos) Sin embargo, la ventaja que tiene mantener el orden es que es posible realizar una búsqueda binaria para encontrar el elemento buscado.

Programacion de la Búsqueda binaria Invariante Inicialmente: i = 0 y j = n-1. En cada iteración: Si el conjunto es vacío (j-i < 0), o sea si j < i, entonces el elemento x no está en el conjunto (búsqueda infructuosa). En caso contrario, m = (i+j)/2. Si x = a[m], el elemento fue encontrado (búsqueda exitosa). Si x < a[m] se modifica j = m-1, sino se modifica i = m+1 y se sigue iterando.

Programacion de la Búsqueda binaria public int busquedaBinaria(int []a, int x) { int i=0, j=a.length-1; while (i<=j) { int m=(i+j)/2; if (x==a[m]) return m; else if (x<a[m]) j=m-1; else i=m+1; } return NO_ENCONTRADO; // NO_ENCONTRADO se define como -1

Eficiencia de la Búsqueda binaria Todo algoritmo de búsqueda basado en comparaciones corresponde a algún árbol de decisión. Cada nodo de dicho árbol corresponde al conjunto de elementos candidatos en donde se encuentra el elemento buscado, y que es consistente con las comparaciones realizadas entre los elementos. Los arcos del árbol corresponden a los resultados de las comparaciones, que en este caso pueden ser mayor que o menor que el elemento buscado, es decir, es un árbol de decisión binario. El número de comparaciones realizadas por el algoritmo de búsqueda es igual a la altura del árbol de decisión (profundidad de la hoja más profunda).

Eficiencia de la Búsqueda binaria Lema: sea D un árbol binario de altura h. D tiene a lo más 2h hojas. Demostración: por inducción. Lema: un árbol binario con H hojas debe tener una profundidad de al menos Demostración: directo del lema anterior. Si n es el número de nodos de elementos del conjunto, el número de respuestas posibles (hojas del árbol de decisión) es de n+1, el lema anterior implica que el costo en el peor caso es mayor o igual que el logaritmo del número de respuestas posibles. Corolario: cualquier algoritmo de búsqueda mediante comparaciones se demora al menos preguntas en el peor caso. Por lo tanto, la búsqueda binaria es óptima.

Métodos auto-organizantes Idea: cada vez que se accede a un elemento Xk se modifica la lista para que los accesos futuros a Xk sean más eficientes. Algunas políticas de modificación de la lista son: TR (transpose): se intercambia de posición Xk con Xk-1 (siempre que k>1). MTF (move-to-front): se mueve el elemento Xk al principio de la lista. Se puede demostrar que Costooptimo<=CostoTR<=CostoMTF<=2Costooptimo.

Diccionario con ABB 11-agosto(J.Alvarez)

AVL-Trees (Adelson-Velskii & Landis, 1962) In normal search trees, the complexity of find, insert and delete operations in search trees is in the worst case: (n). Can be better! Idea: Balanced trees. Definition: An AVL-tree is a binary search tree such that for each sub-tree T ' = < L, x, R > | h(L) - h(R) |  1 holds (balanced sub-trees is a characteristic of AVL-trees). The balance factor or height is often annotated at each node h(.)+1.

|Height(I) – hight(D)| < = 1 This is an AVL tree

This is NOT an AVL tree (node * does not hold the required condition)

Goals 1. How can the AVL-characteristics be kept when inserting and deleting nodes? 2. We will see that for AVL-trees the complexity of the operations is in the worst case = O(height of the AVL-tree) = O(log n)

Preservation of the AVL-characteristics After inserting and deleting nodes from a tree we must procure that new tree preserves the characteristics of an AVL-tree: Re-balancing. How ?: simple and double rotations

Only 2 cases (an their mirrors) Let’s analyze the case of insertion The new element is inserted at the right (left) sub-tree of the right (left) child which was already higher than the left (right) sub-tree by 1 The new element is inserted at the left (right) sub-tree of the right (left) child which was already higher than the left (right) sub-tree by 1

Rotation (for the case when the right sub-tree grows too high after an insertion) Is transformed into

Double rotation (for the case that the right sub-tree grows too high after an insertion at its left sub-tree) Double rotation Is transformed into

b First rotation a c W x y Z new a Second rotation b W c x new y Z

Re-balancing after insertion: After an insertion the tree might be still balanced or: theorem: After an insertion we need only one rotation of double-rotation at the first node that got unbalanced * in order to re-establish the balance properties of the AVL tree. (* : on the way from the inserted node to the root). Because: after a rotation or double rotation the resulting tree will have the original size of the tree!

The same applies for deleting Only 2 cases (an their mirrors) The element is deleted at the right (left) sub-tree of which was already smaller than the left (right) sub-tree by 1 The new element is inserted at the left (right) sub-tree of the right (left) child which was already higher that the left (right) sub-tree by 1

The cases Deleted node 1 1 1

Re-balancing after deleting: After deleting a node the tree might be still balanced or: Theorem: after deleting we can restore the AVL balance properties of the sub-tree having as root the first* node that got unbalanced with just only one simple rotation or a double rotation. (* : on the way from the deleted note to the root). However: the height of the resulting sub-tree might be shortened by 1, this means more rotations might be (recursively) necessary at the parent nodes, which can affect up to the root of the entire tree.

About Implementation While searching for unbalanced sub-tree after an operation it is only necessary to check the parent´s sub-tree only when the son´s sub-tree has changed it height. In order make the checking for unbalanced sub-trees more efficient, it is recommended to put some more information on the nodes, for example: the height of the sub-tree or the balance factor (height(left sub-tree) – height(right sub-tree)) This information must be updated after each operation It is necessary to have an operation that returns the parent of a certain node (for example, by adding a pointer to the parent).

Complexity analysis– worst case Be h the height of the AVL-tree. Searching: as in the normal binary search tree O(h). Insert: the insertion is the same as the binary search tree (O(h)) but we must add the cost of one simple or double rotation, which is constant : also O(h). delete: delete as in the binary search tree(O(h)) but we must add the cost of (possibly) one rotation at each node on the way from the deleted node to the root, which is at most the height of the tree: O(h). All operations are O(h).

Calculating the height of an AVL tree Be N(h) the minimal number of nodes In an AVL-tree having height h. N(0)=1, N(1)=2, N(h) = 1 + N(h-1) + N(h-2) for h  2. N(3)=4, N(4)=7 remember: Fibonacci-numbers fibo(0)=0, fibo(1)=1, fibo(n) = fibo(n-1) + fibo(n-2) fib(3)=1, fib(4)=2, fib(5)=3, fib(6)=5, fib(7)=8 By calculating we can state: N(h) = fibo(h+3) - 1 Principle of construction 1 2 3

Be n the number of nodes of an AVL-tree of height h Be n the number of nodes of an AVL-tree of height h. Then it holds that: n  N(h) , Remember fn =(1 /sqrt(5)) (Ф1n - Ф2n) with Ф1= (1+ sqrt(5))/2 ≈ 1.618 Ф2= (1- sqrt(5))/2 ≈ 0.618 we can now write n  fibo(h+3)-1 = (Ф1 h+3 – Ф2h+3 ) / sqrt(5) – 1  (Ф1 h+3/sqrt(5)) – 3/2, thus h+3+log Ф1(1/sqrt(5))  log Ф1(n+3/2), thus there is a constant c with h  log Ф1(n) + c = log Ф1(2) • log2(n) + c = 1.44… • log2(n) + c = O(log n).

Arboles B (External Search) The algorithms we have seen so far are good when all data are stored in primary storage device (RAM). Its access is fast(er) Big data sets are frequently stored in secondary storage devices (hard disk). Slow(er) access (about 100-1000 times slower) Access: always to a complete block (page) of data (4096 bytes), which is stored in the RAM For efficiency: keep the number of accesses to the pages low!

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))

For external search: a variant of search trees: 1 node = 1 page Multiple way search trees!

Multiple way-search trees Definición: An empty tree is a multiple way search tree with an empty set of keys {} . Be T0, ..., Tn multiple way-search trees with keys taken from a common key set S, and be k1,...,kn a sequence of keys with k1 < ...< kn. Then is the sequence: T0 k1 T1 k2 T2 k3 .... kn Tn a multiple way-search trees only when: for all keys x from T0 x < k1 for i=1,...,n-1, for all keys x in Ti, ki < x < ki+1 for all keys x from Tn kn < x

B-Tree Definition A B-Tree of Order m is a multiple way tree with the following characteristics 1  #(keys in the root)  2m and m  #(keys in the nodes)  2m for all other nodes. All paths from the root to a leaf are equally long. Each internal node (not leaf) which has s keys has exactly s+1 children. 2-3 Trees is a particular case for m=1

Example: a B-tree of order 2:

Assessment of B-trees The minimal possible number of nodes in a B-tree of order m and height h: Number of nodes in each sub-tree 1 + (m+1) + (m+1)2 + .... + (m+1)h-1 =  ( (m+1)h – 1) / m. The root of the minimal tree has only one key and two children, all other nodes have m keys. Altogether: number of keys n in a B-tree of height h: n  2 (m+1)h – 1 Thus the following holds for each B-tree of height h with n keys: h  logm+1 ((n+1)/2) .

Example The following holds for each B-tree of height h with n keys: h  logm+1 ((n+1)/2). Example: for Page size: 1 KByte and each entry plus pointer: 8 bytes, If we chose m=63, and for an ammount of data of n= 1 000 000 We have      h  log 64 500 000.5 < 4 and with that hmax = 3.

Key searching algorithm in a B-tree Algorithm search(r, x) //search for key x in the tree having as root node r; //global variable p = pointer to last node visited in r, search for the first key y >= x or until no more keys if y == x {stop search, p = r, found} else if r a leaf {stop search, p = r, not found} if not past last key search(pointer to node before y, x) else search(last pointer, x)

Inserting and deleting of keys Algorithm insert (r, x) //insert key x in the tree having root r search for x in tree having root r; if x was not found { be p the leaf where the search stopped; insert x in the right position; if p now has 2m+1 keys {overflow(p)} }

Algorithm Split (1) Algorithm overflow (p) = split (p) Algorithm split (p) first case: p has a parent q. Divide the overflowed node. The key of the middle goes to the parent. remark: the splitting may go up until the root, in which case the height of the tree is incremented by one.

Algorithm Split (2) Algorithm split (p) second case: p is the root. Divide overflowed node. Open a new level above containing a new root with the key of the middle (root has one key).

Algorithm delete (r,x) //delete 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 )

if( q <> root) and (q has m-1 keys) underflow (q) 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 If when performing underflow we have to perform merge, we might have to perform underflow again one level up This process might be repeated until the root.

Example: B-Tree of order 2 (m = 2)

Cost Be m the order of the B-tree, n the number of keys. Costs for search , insert and delete: O(h) = O(logm+1 ((n+1)/2) ) = O(logm+1(n)).

Remark: B-trees can also be used as internal storage structure: Especially: B-trees of order 1 (then only one or 2 keys in each node – no elaborate search inside the nodes). Cost of search, insert, delete: O(log n).

Remark: use of storage memory Over 50% reason: the condition: 1/2•k  #(keys in the node)  k For nodes  root (k=2m)