You are on page 1of 2

fundamentales en Ciencia de la Computación.

De toda la
PONTIFICIA UNIVERSIDAD terminología sobre árboles, tan sólo recordar que la propiedad
CATÓLICA DEL que define un árbol binario es que cada nodo tiene a lo más un
hijo a la izquierda y uno a la derecha. Para construir los
ECUADOR SEDE algoritmos consideraremos que cada nodo contiene un registro
con un valor clave a través del cual efectuaremos las búsquedas.
ESMERALDAS En las implementaciones que presentaremos sólo se considerará
en cada nodo del árbol un valor del tipo elemento, aunque en un
caso general ese tipo estará compuesto por dos: una clave
indicando el campo por el cual se realiza la ordenación y una
Arboles binarios de busqueda información asociada a dicha clave o visto de otra forma, una
Torosina Toroshina Kevin Omar información que puede ser compuesta en la cual existe definido
un orden.
Añapa Dany Dario
1

Resumen. - II. CONTENIDO


En este tema hemos comprendido qué hace una tabla de
símbolos y el porqué de su complejidad. Es importante también Búsqueda con árboles binarios ordenados
el tener claras sus misiones: Los árboles binarios ordenados se pueden definir de la siguiente
• Colaborar en las comprobaciones semánticas. manera:
• Facilitar la generación de código. Si se llama T al árbol, clave(T) al elemento contenido en su raíz,
Se ha visto la implementación típica árboles de búsqueda. Es izquierdo(T) y derecho(T) a sus hijos izquierdo y derecho,
importante conocer los atributos que se van a almacenar del respectivamente, y nodos(T) al conjunto de sus nodos, T es un
identificador: tipo, valor, dirección de memoria, número de árbol binario ordenado si y sólo si cumple que:
línea, ámbito o cualquier otro que el diseñador considere, ∀ T’∈ nodos(T) clave(izquierdo(T’)) ≤ clave(T’) ≤
teniendo en cuenta que pueden ser tipos simples (enteros), tipos clave(derecho(T’))
estructurados (arrays), tipos puntero, funciones y El algoritmo de búsqueda (véase la Figura 2.3) consulta la raíz
procedimientos o clases. del árbol para decidir si la búsqueda ha terminado con éxito (en
Además, es necesario saber que el comportamiento de una tabla el caso en el que el elemento buscado coincida con la clave del
de símbolos depende mucho de las propiedades de las árbol) o, en caso contrario, en qué subárbol debe seguir
declaraciones del lenguaje que se está traduciendo. Hay cuatro buscando: si la clave del árbol es posterior (anterior) al
clases básicas de declaraciones: de constantes, de tipo, de elemento buscado, la búsqueda continúa por el árbol
variables y de procedimiento/función. Otro aspecto a tener en izquierdo(T) (derecho(T)). Si en cualquier momento se
cuenta es el ámbito, que determina cuando un símbolo encuentra un subárbol vacío, la búsqueda termina sin éxito. Se
determinado va a estar accesible y contempla dos posibilidades: suelen utilizar distintas variantes de este algoritmo para que el
declaraciones antes de uso o las estructuras de bloque. Para valor devuelto resulte de la máxima utilidad: en ocasiones basta
finalizar se ha visto las operaciones más comunes, como es la con el dato buscado, o con una indicación de que se ha
consulta, y los requisitos que debe cumplir la tabla de símbolos. terminado sin éxito; en otras, el retorno de la función apunta al
subárbol donde está el elemento buscado o donde debería estar.
La Figura 2.3 resalta la comparación de claves. En el peor de
los casos (que la búsqueda termine con fracaso, tras haber
Palabras claves. - Búsqueda, algoritmo, identificador, atributos recorrido los subárboles más profundos, o que el elemento
buscado esté precisamente en el nivel más profundo del árbol),
el número de comparaciones de clave coincidirá con la
I. INTRODUCCION profundidad del árbol. Es decir, los tiempos peor y medio
La tabla de símbolos (TS) es la estructura utilizada por el dependen de la profundidad del árbol. Se escribirá prof(T) para
compilador para almacenar los atributos asociados a los representar la profundidad del árbol T.
símbolos que se utilizan en un lenguaje de programación.
La misión de la TS es colaborar en las comprobaciones
semánticas y facilitar la generación de código. Las operaciones
que podemos necesitar para utilizarla son la de inserción,
búsqueda o consulta, actualización y eliminación. La eficiencia
de estas operaciones depende de la estructura de datos utilizada,
y puede hacer que el compilador consuma mucho tiempo en los
accesos a la misma. Es interesante observar que este razonamiento no expresa una
dependencia directa de n, sino de un parámetro del árbol binario
La búsqueda en árboles binarios es un método de búsqueda que depende tanto de n como de la manera en la que se creó el
simple, dinámico y eficiente considerado como uno de los
1
árbol binario en el que se busca. La Figura 2.4 muestra dos IV. REFERENCIAS
posibles árboles binarios ordenados y correctos formados con http://decsai.ugr.es/~jfv/ed1/tedi/cdrom/docs/arb_BB.htm
el conjunto de datos {0,1,2,3,4} file:///C:/Users/Usuario/Downloads/edoc.site_compiladores-e-
interpretes-teoria-y-practica.pdf

Posteriormente se profundizará más en esta reflexión, para


comprender cómo depende prof(T) de n.

Búsqueda con árboles AVL


Los árboles de Adelson-Velskii y Landis (AVL) son un
subconjunto de los árboles binarios ordenados. Un árbol binario
ordenado es un árbol AVL si y sólo si las profundidades de los
hijos de cualquier nodo no difieren en más de una unidad. Por
tanto, aunque pueda haber muchos árboles AVL para el mismo
conjunto de datos, se tiene la garantía de que la profundidad es
siempre más o menos la del árbol binario menos profundo
posible.
El árbol binario menos profundo que se puede formar con n
nodos es el que tiene todos sus niveles completos, es decir, cada
nodo que no sea una hoja tiene exactamente 2 hijos. Es fácil
comprobar que el número de nodos que hay en el nivel i-pésimo
de un árbol con estas características es igual a 2i, y también que
el total de nodos en un árbol de este tipo, de profundidad k, es
igual a 2k+1-1. Si se despeja la profundidad k necesaria para
que el número de nodos sea igual a n, quedará en función de
log2(n).
Se ha dicho que la profundidad es más o menos la del árbol
binario menos profundo posible, porque se permite una
diferencia en la profundidad de como mucho una unidad, que
se puede despreciar para valores grandes de n. Por tanto, los
árboles AVL garantizan que la profundidad es del orden de
log(n), mientras que en la sección anterior se vio que el tiempo
peor y medio de la búsqueda en un árbol binario T es del orden
de prof(T).

III. CONCLUSIONES
Los árboles binarios son muy útiles como métodos simples de
búsqueda, además de que son tipos de datos abstractos, no son
muy difíciles de entender y cómo al ir agregando elementos se
van acomodando no hay necesidad de usar un método de
ordenamiento.

Al tener una gran cantidad de datos en un árbol, la mejor forma


de encontrar rápido los datos es balancearlo y aplicar la
búsqueda binaria, ya que las comparaciones disminuyen
drásticamente.

You might also like