P. 1
ARBOLES DIGITALES

ARBOLES DIGITALES

|Views: 361|Likes:
Publicado porlolo123mamani

More info:

Published by: lolo123mamani on Aug 13, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

04/28/2015

pdf

text

original

Análisis del caso promedio • El plan

:
– Probabilidad – Análisis probabilista – Árboles binarios de búsqueda construidos aleatoriamente – Tries, árboles digitales de búsqueda y Patricia – Listas “skip” – Árboles aleatorizados

Técnicas Avanzadas de Programación - Javier Campos

127

Tries, árboles digitales de búsqueda y Patricia • Tries: motivación…
– Letras centrales de la palabra “retrieval”, recuperación (de información). – Diccionario de Unix: 23.000 palabras y 194.000 caracteres una media de 8 caracteres por palabra… Hay información redundante:
bestial bestir bestowal bestseller bestselling

– Para ahorrar espacio: agrupar los prefijos comunes – Para ahorar tiempo: si las palabras son más cortas es más rápida la búsqueda…
Técnicas Avanzadas de Programación - Javier Campos

best ----------------------

i - al - r owal sell ---- er ---- ing

128

Tries, árboles digitales de búsqueda y Patricia • Trie: definición formal
– Sea Σ={σ1, …, σm} un alfabeto finito (m > 1). – Sea Σ* el conjunto de las palabras (o secuencias) de símbolos de Σ, y X un subconjunto de Σ* (es decir un conjunto de palabras). – El trie asociado a X es:
• trie(X) = ∅, si X = ∅ • trie(X) = <x>, si X = {x} • trie(X) = <trie(X \ σ1), …, trie(X \ σm)>, si |X| > 1, donde X \ σ representa el subconjunto de todas las palabras de X que empiezan por σ quitándoles la primera letra.

– Si el alfabeto tiene definida una relación de orden (caso habitual), el trie se llama árbol lexicográfico.
Técnicas Avanzadas de Programación - Javier Campos 129

Tries, árboles digitales de búsqueda y Patricia • Es decir, un trie es un árbol de prefijos:
bestial bestir bestowal bestseller bestselling
best besti bestial bestir bestowal bestsell bestseller bestselling

best i al r owal er sell ing
130

Técnicas Avanzadas de Programación - Javier Campos

Tries. árboles digitales de búsqueda y Patricia • Utilidad del trie: – Soporta operaciones de búsqueda de palabras: best i al r owal er sell ing – También se pueden implementar inserciones y borrados TAD diccionario best i al r owal er sell ing 131 ride Técnicas Avanzadas de Programación .Javier Campos .

Tries. Los tries son una de las estructuras de datos de propósito general más importantes en informática Técnicas Avanzadas de Programación . árboles digitales de búsqueda y Patricia • Y también uniones e intersecciones TAD conjunto • Y comparaciones de subcadenas procesamiento de textos. biología computacional… • No lo hemos dicho. pero no pueden almacenarse palabras que sean prefijos de otras… uso de un carácter terminador si eso fuese preciso.Javier Campos 132 .

raquel c j r r i s u z i a v u a n a f a q u e $ $ $ $ $ l ¡Demasiado coste en espacio! Técnicas Avanzadas de Programación . árboles digitales de búsqueda y Patricia • Implementaciones de tries: – Nodo-vector: cada nodo es un vector de punteros para acceder a los subárboles directamente cris. rafa. javi. cruz. juan.Javier Campos $ 133 .Tries.

raquel c r i s u z j a v i u a n r a f a q u e l 134 (representación primogénito-siguiente hermano de un bosque) ¡Menos coste en espacio pero más en tiempo para buscar! Técnicas Avanzadas de Programación . árboles digitales de búsqueda y Patricia – Nodo-lista: cada nodo es una lista enlazada por punteros que contiene las raíces de los subárboles cris.Tries. cruz. javi. rafa. juan.Javier Campos .

cuando un cierto nodo es la raíz de un subtrie que ya sólo contiene una palabra. árboles digitales de búsqueda y Patricia – Precisión sobre las implementaciones anteriores: En realidad.Javier Campos 135 .Tries. se puede almacenar esa palabra (sufijo) directamente en un nodo externo (eso ahorra espacio. aunque obliga a manejar punteros a tipos distintos…) r a f quel a Técnicas Avanzadas de Programación .

a la raíz del trie al que da acceso el nodo. • Si el carácter buscado es menor. • Si el carácter buscado es mayor. y se pasa a buscar el siguiente carácter de la cadena buscada. se sigue en el hijo derecho. Técnicas Avanzadas de Programación .Javier Campos 136 . la búsqueda de ese carácter sigue en el hijo izquierdo. se va al hijo central. • Una búsqueda compara el carácter actual en la cadena buscada con el carácter del nodo. Objetivo: combinar la eficiencia en tiempo de los tries con la eficiencia en espacio de los abb’s. • Un puntero. central. árboles digitales de búsqueda y Patricia – Nodo-abb: la estructura se llama también árbol ternario de búsqueda.Tries. • Si el carácter es igual. Cada nodo contiene: • Dos punteros al hijo izquierdo y derecho (como en un árbol binario de búsqueda).

árboles digitales de búsqueda y Patricia Árbol ternario de búsqueda para las palabras… as at be by he in is it of on or to En un abb: En un trie (representación nodo-vector o nodo-lista): Técnicas Avanzadas de Programación .Javier Campos 137 .Tries.

Javier Campos 138 .Tries. árboles digitales de búsqueda y Patricia Árbol ternario de búsqueda: Técnicas Avanzadas de Programación .

pero usando los bits del argumento para decidir si se sigue por el subárbol izquierdo o por el derecho.E. • Ejemplo. es decir. 0 00000 I 9 01001 R 19 10011 usando el código MIX A 1 00001 J 11 01011 S 22 10110 (D. sólo dos símbolos): • Almacenar claves completas en los nodos. árboles digitales de búsqueda y Patricia • Árboles digitales de búsqueda: – Caso binario (m = 2.Javier Campos 139 . Knuth) B 2 00010 K 12 01100 T 23 10111 C E F 3 00011 L 13 01101 U 24 11000 5 00101 N 15 01111 W 26 11010 6 00110 O 16 10000 X 27 11011 D 4 00100 M 14 01110 V 25 11001 G 7 00111 P 17 10001 Y 28 11100 H 8 01000 Q 18 10010 Z 29 11101 Técnicas Avanzadas de Programación .Tries.

HAVE 27ª 28ª HAD HER ¡Ojo! Es un árbol de búsqueda pero considerando la codificación binaria de las claves (código MIX). 21ª insertadas por orden de frecuencia descendente.Javier Campos 140 .Tries. Técnicas Avanzadas de Programación . árboles digitales de búsqueda y Patricia – Árboles digitales de búsqueda (caso binario): 1ªTHE(10111…) 3ª AND (00001…) 2ª OF (10000…) (01001…) 4ª 5ª (00001…) 6ª IN A TO (10111…) 13ª WITH 22ª 18ª 25ª 12ª 11ª 8ª IS 7ª THAT 14ª AS FOR NOT ON WAS YOU 30ª 24ª 26ª 31ªTHIS 23ª 17ªBE 9ª I ARE FROM OR WHICH 15ª 29ª 10ª 19ª AT BY HIS IT 20ª 16ª BUT HE Las 31 palabras inglesas más frecuentes.

para un alfabeto con m símbolos. árboles digitales de búsqueda y Patricia – La búsqueda en al árbol anterior es binaria pero puede ampliarse fácilmente a m-aria (m > 2). Técnicas Avanzadas de Programación . pero en un árbol digital de búsqueda de orden 27.Tries. insertados en igual orden. 1ªTHE 22ª 3ª 18ª 15ªHIS 6ª IN NOT 2ª OF 4ª TO 13ª WITH YOU 17ªBE AND FOR11ª 5ª 24ª 12ª 29ª 20ª 19ª 30ª 21ª 16ª 23ª 9ª 8ª 10ª 25ª 26ª 7ª 14ª A ARE AS ATBUT BY FROM HAVE HE I IS IT ON OR THAT WAS WHICH 27ª 28ªHAD HER 31ª THIS Los mismos datos de antes.Javier Campos 141 .

Javier Campos 142 . pero evitando las bifurcaciones de una sola dirección. árboles digitales de búsqueda y Patricia • Patricia (Practical Algorithm To Retrieve Information Coded In Alphanumeric) – Problema del trie: si |{claves}| << |{claves potenciales}|. – Ejemplo de utilización: tablas de encaminamiento en los router. – Patricia: representación compacta de un trie en la que todos los nodos con un solo hijo “se mezclan” con sus padres. asignatura “Sistemas de transporte de datos” (búsqueda de direcciones = longest prefix matching) Técnicas Avanzadas de Programación . la mayoría de los nodos internos tienen un solo hijo aumenta el coste en espacio – Idea: árbol binario.Tries.

las claves se almacenan en los nodos internos. 1000 1001 1100 1101 – La etiqueta del nodo interno indica el bit usado para bifurcar. baja). – Como hay un nodo interno menos que 0001 0 nº de elementos. 1101 – Cada nodo sigue guardando el 3 nº de bit usado para bifurcar.Tries.Javier Campos 143 . 0011 1001 2 – Ese nº distingue si el puntero 4 4 1000 1100 sube o baja (si > el del padre. hay que añadir un 1 nuevo nodo (se pone como raíz). árboles digitales de búsqueda y Patricia – Ejemplo de Patricia: • Partimos de: 0 1 – Un trie binario con 3 2 las claves almacenadas en las hojas y compactado 0001 0011 4 4 (de manera que cada nodo interno tiene dos hijos). Técnicas Avanzadas de Programación . 1 • En un Patricia.

árboles digitales de búsqueda y Patricia – Búsqueda de clave: 0001 0 • Se usan los bits de la clave de izq. y llegamos a la clave 1101. se sigue hacia abajo según ese bit. es mayor que el del padre. vamos al hijo derecho (el 1001). a dch. 4 4 1000 1100 • Ejemplo. terminamos con éxito. 1101 • Cuando el puntero que se ha 3 seguido va hacia arriba se 0011 1001 2 compara la clave con la del nodo. – Ahora se usa el 4º bit de la clave.Tries. – Como el nº de bit es 1 (<4) comparamos la clave con la buscada. 1 Bajando en el árbol. – Se busca según el valor del bit 1 de la clave. búsqueda de 1101: – Se empieza yendo al hijo izq. 0).Javier Campos 144 . 1. Técnicas Avanzadas de Programación . como el 2º bit de la clave es 1. – El nº de bit del nodo alcanzado es 2. como es 1 seguimos el puntero hijo dch. de la raíz. como coincide. – El puntero que se ha seguido es hacia abajo (se sabe porque el bit que etiqueta el nodo 1101. vamos al hijo derecho. como es un 1.

• Insertamos 0000010. de ese nodo apunta al mismo nodo. 5 0000000 0000010 6 Técnicas Avanzadas de Programación . el puntero izq. 0000101 0 La búsqueda termina en 0000000.Tries. Creamos el hijo izq. Como el 5º bit de la clave insertada es 0.Javier Campos 145 . El primer bit en que difieren es el 6º. El puntero dch. apunta al nodo raíz. 0000101 0 • Insertamos la clave 0000101. Vemos que el 0000000 5 primer bit en que difieren es el 5º. árboles digitales de búsqueda y Patricia – Inserción de claves: • Partimos de árbol vacío (ninguna clave). • Ahora insertamos la clave 0000000. Buscando esa clave llegamos a la raíz y 0000101 0 vemos que es distinta. etiquetado con el bit 5 y guardamos la clave en él.

el hijo izq. yyyyyyyy x Técnicas Avanzadas de Programación . la búsqueda termina en un nodo con clave C’. será el “auto-puntero”. si no.Javier Campos 146 . del nuevo nodo apuntará al mismo nodo. etiquetado con el nº de bit anterior y se inserta en el camino desde la raíz al nodo de C’ de forma que las etiquetas de nº de bit sean crecientes en el camino. • Se crea un nuevo nodo con la nueva clave. el hijo dch. • Si el bit nº b de C es 1. en que C y C’ difieren. • El hijo restante apuntará a q. • Se calcula el nº b de bit más a la izq.Tries. • Esa inserción ha roto un puntero del nodo p al nodo q. • Ahora el puntero va de p al nuevo nodo. árboles digitales de búsqueda y Patricia – Estrategia general de inserción (a partir de la 2ª clave): • Se busca la clave C a insertar.

0000000 5 0000010 Técnicas Avanzadas de Programación . 0000010 6 Creamos un nuevo nodo con etiqueta 4 y ponemos en él la nueva clave.): • Insertamos la clave 0001000. Como el bit 4 de la clave insertada es 1.Javier Campos 0000101 0 6 147 . 0000000 5 El primer bit en que difieren es el 4. como hijo izquierdo de la raíz.Tries. del nuevo nodo es un auto-puntero. árboles digitales de búsqueda y Patricia – Inserción de claves (cont. Se inserta ese nodo en el camino de la raíz a 0000000 de forma que las etiquetas de bit sean crecientes. 0000101 0 es decir. La búsqueda termina en 0000000. 0001000 4 el hijo dch.

El primer bit en que difieren 0000000 5 es el 7º. luego su hijo 0000101 0 izquierdo es un auto-puntero. árboles digitales de búsqueda y Patricia – Inserción de claves (cont. de 0000000. 0001000 4 La búsqueda termina en la raíz. 0001000 4 0000000 5 0000010 Técnicas Avanzadas de Programación .): 0000101 0 • Insertamos la clave 0000100.Javier Campos 6 0000100 7 148 . 6 Creamos nuevo nodo 0000010 con etiqueta 7. El bit 7 de la nueva clave es 0.Tries. Insertamos el nuevo nodo en el camino de búsqueda de forma que las etiquetas de bit sean crecientes: hijo dch.

0000100 7 0000010 Insertamos el nuevo nodo en el camino de búsqueda de forma que las etiquetas de bit sean crecientes: hijo dch. 0000101 0 El bit 6 de la nueva clave es 1. 0000000 5 Creamos nuevo nodo 6 con etiqueta 6. El primer bit en que difieren es el 6º. de 0001000. 0001000 4 La búsqueda termina en 0001000. 0001000 4 0000000 5 0000010 6 0001010 6 0000100 7 Técnicas Avanzadas de Programación .Tries.): 0000101 0 • Insertamos la clave 0001010. árboles digitales de búsqueda y Patricia – Inserción de claves (cont. luego su hijo derecho es un auto-puntero.Javier Campos 149 .

Tries. se borra y queda vacío » si p no es la raíz.) – p no tiene auto-puntero: » buscamos el nodo q que tiene un puntero hacia arriba a p (es el nodo desde el que llegamos a p en la búsqueda de la clave a borrar) » la clave de q se mueve a p y se procede a borrar q » para borrar q se busca el nodo r que tiene un puntero hacia arriba a q (se consigue buscando la clave de q) » se cambia el puntero de r que va a q para que vaya a p » el puntero que baja del padre de q a q se cambia al hijo de q que se usó para localizar r Técnicas Avanzadas de Programación . dos casos: – p tiene un auto-puntero: » si p es la raíz.Javier Campos 150 . es el único nodo. árboles digitales de búsqueda y Patricia – Borrado de claves: • Sea p el nodo con la clave a borrar. hacemos que el puntero que va del padre de p a p pase a apuntar al hijo de p (que no es auto-punt.

sólo dos símbolos)… – Hay una curiosa relación entre este tipo de árboles y un método de ordenación. el “radix-intercambio”. así que veamos primero un resumen sobre los métodos de ordenación radix. Técnicas Avanzadas de Programación .Javier Campos 151 . es decir. pero… ¿cuánto es esto? – Caso de tries binarios (m = 2.Tries. árboles digitales de búsqueda y Patricia • Análisis de los algoritmos: – Es evidente que el coste de las operaciones de búsqueda. inserción y borrado es de orden lineal en la altura del árbol.

se pone una caja o cubo (bucket) por cada provincia y se recorren secuencialmente todas las cartas almacenándolas en la caja correspondiente ¡muy eficiente! – Si hay que ordenar las cartas por códigos postales. se necesitan 100. – En general. llamado también ordenación por distribución (bucket sort) – Si hay que ordenar cartas por provincias.Tries.000 cajas (y una oficina muy grande) el método sólo es útil (y mucho) si el número de elementos posibles pertenece a un conjunto pequeño. Técnicas Avanzadas de Programación .Javier Campos 152 . el coste en tiempo (y en espacio) es O(m+n). si se ordenan n elementos que pueden tomar m valores distintos (número de cajas). árboles digitales de búsqueda y Patricia • El método de la oficina de correos.

000 códigos distintos • el coste de esta fase es O(n) – Segunda fase: se procede igual para cada caja – Hay cinco fases… Técnicas Avanzadas de Programación .Javier Campos 153 .Tries. árboles digitales de búsqueda y Patricia • Primera idea para la extensión natural del método bucket sort: en el caso de la ordenación de cartas por código postal… – Primera fase: se usan 10 cajas y se ordenan las cartas por el primer dígito del código • cada caja incluye ahora 10.

at which time your deck was back in its original order! The card sorting machine was a physical realisation of the radix sort algorithm. 2. If they had been numbered you were saved. It read each card and placed it in a bin according to the digit in a particular column.csse.Javier Campos 154 . This gave ten stacks of cards. The ten stacks were removed and concatenated.monash.html Técnicas Avanzadas de Programación . computer programs were written in Fortran and entered on punched cards. one stack in each bin. but columns 73-80 could be used for a card number. down to column 73. It had a card input hopper and ten output bins. The whole process was then repeated on column 79. then 1. column 80. The card sorting machine was the size of three or four large filing cabinets.” http://www.au/~lloyd/tildeAlgDS/Sort/Radix.edu. numbered 0 to 9. e. unless the cards had been numbered in columns 73-80. about 2000 to a tray. etc. they could be fed into a card sorting machine and restored to their original order. in order: stack 0. 77.g.. and again on column 78. Fortran code was typed in columns 1 to 72. árboles digitales de búsqueda y Patricia • Una extensión más elaborada: radix sort “Once upon a time. If you ever dropped a large deck of cards you were really in the poo. and so on up to stack 9.Tries.

árboles digitales de búsqueda y Patricia • Radix sort: – Se usa una cola de claves para implementar cada “caja” (tantas como el valor de la base de numeración utilizado. – Se repite el proceso. cualquier base es válida). es decir. pero clasificando según el segundo dígito por la derecha. Técnicas Avanzadas de Programación . cada clave se coloca en la cola correspondiente a su dígito más a la derecha.Tries. – Se clasifican las claves según su dígito más a la derecha (el menos significativo). – Se concatenan todas las colas (ordenadas según el dígito más a la derecha).Javier Campos 155 . – Se repite el proceso para todos los dígitos.

x).k) {pre: X=vector[1. post: X ordenado} principio colocar los elmtos. de X en cola GQ {puede usarse X}.n] de claves.GQ) fpara fpara. insertar(x..Javier Campos 156 . cada una con k dígitos. d:=dígito(i. eliminar(GQ). para i:=1 hasta n hacer X[i]:=primero(GQ). para i:=k descendiendo hasta 1 hacer mq not esVacía(GQ) hacer x:=primero(GQ). eliminar(GQ) fpara fin Técnicas Avanzadas de Programación .Q[d]) fmq.Tries. para i:=1 hasta d hacer {d=base de numeración usada) colaVacía(Q[i]) fpara. árboles digitales de búsqueda y Patricia algoritmo radix(X.n. para t:=1 hasta d hacer insertarCola(Q[t].

es decir.Tries. árboles digitales de búsqueda y Patricia • Análisis del método radix sort: – En tiempo: O(kn). es un método lineal en el tamaño del vector – Nótese que a mayor base de numeración menor coste – En espacio: O(n) espacio adicional. y sólo se precisa un espacio adicional O(log n) para guardar posiciones del vector) Técnicas Avanzadas de Programación . (Es posible hacerlo in-situ. considerando que k es una constante.Javier Campos 157 .

Javier Campos 158 . no se llega a contar el número de habitantes solteros) – Herman Hollerith (empleado de la oficina del censo.UU. en esencia es una implementación física del radix sort Técnicas Avanzadas de Programación . 1880: no se puede terminar el censo de la década anterior (en concreto.. árboles digitales de búsqueda y Patricia • Un poco de historia: orígenes del radix sort – EE.Tries. de 20 años de edad) inventa una máquina tabuladora eléctrica para resolver el problema.

Tries.Javier Campos 159 . unas 49 tarjetas por minuto) – 1896: Hollerith crea la empresa Tabulating Machine Company Técnicas Avanzadas de Programación . árboles digitales de búsqueda y Patricia • Un poco de historia: orígenes del radix sort (continuación) – 1890: se usan unas 100 máquinas de Hollerith para tabular las listas del censo de la década (un operador experto procesaba 19.071 tarjetas en una jornada laboral de 6’5 horas.

Tries. hasta 1960) – 1911: la empresa de Hollerith se fusiona con otras dos. con más o menos variaciones. árboles digitales de búsqueda y Patricia • Un poco de historia: orígenes del radix sort (continuación) – 1900: Hollerith resuelve otra crisis federal inventando una nueva máquina con alimentación automática de tarjetas (útil. creando la Calculating-TabulatingRecording Company (CTR) – 1924: Thomas Watson cambia el nombre a la CTR y la llama International Business Machines (IBM) Técnicas Avanzadas de Programación .Javier Campos 160 .

Tries.Javier Campos 161 . árboles digitales de búsqueda y Patricia • Un poco de historia: orígenes del radix sort (continuación) – El resto de la historia es bien conocido… hasta: – 2000: crisis del recuento de votos en las Presidenciales Técnicas Avanzadas de Programación .

árboles digitales de búsqueda y Patricia • Un poco de historia: orígenes del radix sort (continuación) – Ésta es la auténtica: Técnicas Avanzadas de Programación .Javier Campos 162 .Tries.

árboles digitales de búsqueda y Patricia • Método de ordenación radix-intercambio: (versión del libro de D. Técnicas Avanzadas de Programación . se aplica recursivamente el paso anterior a cada una de las dos subsecuencias de claves.Javier Campos 163 . se intercambian y se repite el proceso hasta que i > j • Paso 2: se parte en dos la secuencia de claves y se aplica recursivamente – La secuencia de claves ha quedado dividida en dos: las que empiezan por 0 y las que empiezan por 1. Knuth) – Suponer las claves en su representación binaria – En vez de comparar claves se comparan sus bits • Paso 1: se ordenan las claves según su bit más significativo – Se halla la clave ki más a la izquierda que tenga un primer bit igual a 1 y la clave kj más a la derecha que tenga un primer bit 0.Tries. pero considerando ahora el segundo bit más significativo. etcétera.

Tries. árboles digitales de búsqueda y Patricia • El radix-intercambio y el quicksort son muy similares: – Ambos están basados en la idea de la partición. – Se intercambian las claves hasta que la secuencia queda dividida en dos partes: • La subsecuencia izquierda. • El quicksort toma como K una clave existente en la secuencia mientras que el radix-intercambio toma una clave artificial basada en la representación binaria de las claves. el radix-intercambio fue publicado un año antes que el quicksort (en 1959). Técnicas Avanzadas de Programación . en la cual todas las claves son menores o iguales que una clave K y la de la derecha en la cual todas las claves son mayores o iguales que K. – Históricamente.Javier Campos 164 .

Tries.577215. función Gamma)… Técnicas Avanzadas de Programación . la constante de Euler y f (n) una función " bastante extraña" tal que | f (n) |< 173 *10 −9 (*) Requiere manipulación de series infinitas y su aproximación. análisis matemático de variable compleja (integrales complejas. ⎝ ln 2 2 ⎠ con γ = 0 .Javier Campos 165 .. ⎛ γ −1 1 ⎞ U n = n log n + n⎜ − + f ( n) ⎟ + O(1).. árboles digitales de búsqueda y Patricia • Análisis del radix-intercambio: – El análisis asintótico del radix-intercambio es… digamos… ¡no trivial! Según Knuth(*).

Tries. – El número medio de consultas de bit necesarias para encontrar una clave en un trie binario de n claves es 1/n veces el número de consultas de bit necesarias en la ordenación de esas n claves mediante el radix-intercambio. árboles digitales de búsqueda y Patricia • Relación con el análisis de tries (caso binario): – El número de nodos internos de un trie binario que almacena un conjunto de claves es igual al número de particiones realizado para ordenar dichas claves con el método radix-intercambio. Técnicas Avanzadas de Programación .Javier Campos 166 .

Javier Campos 0 7 0 8 1 10000 10011 167 . 00100 00101 Técnicas Avanzadas de Programación .69) 10011 00100 00101 01111 01111 00100 00101 ¦ 10011 00101 00100 ¦ 01111 ¦ 10011 ¦ 00101 00100 ¦ 01111 ¦ 10011 ¦ 00101 00100 ¦ 01111 ¦ 10011 ¦ 00100 ¦ 00101 ¦ 01111 ¦ 10011 ¦ 00100 ¦ 00101 ¦ 01111 ¦ 10011 ¦ 00100 ¦ 00101 ¦ 01111 ¦ 10011 ¦ 00100 ¦ 00101 ¦ 01111 ¦ 10000 ¦ 00001 10000 10000 10000 10000 10000 10000 10000 10011 1 |i|d|bit |1|6|1 |1|4|2 |1|3|3 |2|3|4 |2|3|5 |5|6|2 |5|6|3 |5|6|4 | | |_ 1 0 6 8 particiones: los nodos internos del árbol 0 corresponden con las particiones (el nodo 0 2 1 k-ésimo del recorrido en pre-orden corresponde con la k-ésima partición). 0 3 1 01111 00001 0 4 El nº de consultas de bit en un nivel de 0 5 1 partición es igual al nº de claves dentro del subárbol del nodo correspondiente. pág. las letras de ‘ORDENA’ 1| 2| 3| 4| 5| 6| 7| 8| 9| 10000 00001 00001 00001 00001 00001 00001 00001 00001 (claves codificadas con el código MIX. árboles digitales de búsqueda y Patricia – Ejemplo: con 6 claves.Tries.

Javier Campos 168 .Tries. la constante de Euler y f (n) una función " bastante extraña" tal que | f (n) |< 173 *10 −9 γ −1 1 • El número medio de nodos de un trie binario de n claves es: n + ng (n) + O(1). como f (n) Técnicas Avanzadas de Programación . ln 2 con g (n) otra función despreciable.. árboles digitales de búsqueda y Patricia • Por tanto. ln 2 2 con γ = 0 .. el coste promedio de una búsqueda en un trie binario con n claves es: U n = log n + − + f (n) + O (n −1 ).577215.

el análisis de Patricia es… “posiblemente el hueso asintótico más duro que hemos tenido que roer…” Técnicas Avanzadas de Programación . árboles digitales de búsqueda y Patricia • Análisis de tries m-arios: – El análisis es igual de difícil o más que el caso binario…. resulta: • El número de nodos necesarios para almacenar n claves al azar en un trie m-ario es aproximadamente n/ln m • El número de dígitos o caracteres examinados en una búsqueda al azar es aproximadamente logm n • El análisis de los árboles digitales de búsqueda y de Patricia da resultados muy parecidos • Según Knuth.Tries.Javier Campos 169 .

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->