Documento 408297

Anuncio
Alberto León Aparicio
Algoritmos y Estructuras de Datos
Árboles
____________________________________________________________________________________________________________________
ÁRBOLES
Los árboles representan las estructuras no lineales y dinámicas de datos más
importantes en computación. Los árboles pueden ser construidos con estructuras
estáticas y dinámicas. Las estáticas son arreglos, registros y conjuntos, mientras que
las dinámicas están representadas por listas.
Un árbol es una estructura jerárquica aplicada sobre una colección de elementos u
objetos llamados nodos; uno de los cuales es conocido como raíz. Además se crea
una relación o parentesco entre los nodos dando lugar a términos como padre, hijo,
hermano, antecesor, sucesor, ancestro, etc.
Existen diferentes formas de representación de un árbol, entre las más comunes se
tienen las siguientes: Mediante círculos y flechas, Mediante paréntesis anidados,
Mediante notación decimal de Dewey. Algunas veces se incluye entre los árboles el
árbol nulo vacío, el cual, es un árbol sin nodos que se representa mediante la letra .
Cualquier nodo del árbol podría tener un número arbitrario de nodos hijos, a esto se le
conoce como un árbol general, como se muestra en la siguiente figura. Si se limita el
número de nodos hijos para cada nodo del árbol, digamos a un número n > 2 (llamado
la aridad del árbol), entonces el árbol de aridad n es llamado n-ario.
La terminología que por lo regular se utiliza para el manejo de árboles es la siguiente:
-HIJO. X es hijo de Y, sí y solo sí el nodo X es apuntado por Y. También se dice que X
es descendiente directo de Y.
-PADRE. X es padre de Y sí y solo sí el nodo X apunta a Y. También se dice que X es
antecesor de Y.
-HERMANO. Dos nodos serán hermanos si son descendientes directos de un mismo
nodo.
-HOJA. Se le llama hoja o terminal a aquellos nodos que no tienen ramificaciones.
-NODO INTERIOR. Es un nodo que no es raíz ni terminal.
-GRADO. Es el número de descendientes directos de un determinado nodo.
-GRADO DEL ARBOL Es el máximo grado de todos los nodos del árbol.
-NIVEL. Es el número de arcos que deben ser recorridos para llegar a un determinado
nodo. Por definición la raíz tiene nivel 1.
-ALTURA. Es el máximo número de niveles de todos los nodos del árbol.
-PESO. Es el número de nodos del árbol sin contar la raíz.
-LONGITUD DE CAMINO. Es el número de arcos que deben ser recorridos para llegar
desde la raíz al nodo X. Por definición la raíz tiene longitud de camino 1, y sus
descendientes directos longitud de camino 2 y así sucesivamente.
ORDEN DE LOS NODOS. Generalmente los árboles de un nodo se ordenan de
izquierda a derecha. Si no se toma en cuenta el orden de los nodos hijos, entonces se
habla de un árbol no ordenado.
ÁRBOLES BINARIOS
Un árbol binario es un árbol de grado 2, en el que todo nodo del árbol tiene un
subárbol binario izquierdo y derecho asociados.
Árbol Binario Completo o Lleno: Es un árbol binario en el que todos sus nodos,
excepto las hojas, tienen siempre dos hijos (el subárbol izquierdo y el derecho) no
nulos. El número de nodos de un árbol completo se calcula por la fórmula: Número de
nodos = 2h-1 (donde h es la altura)
Alberto León Aparicio
Algoritmos y Estructuras de Datos
Árboles
____________________________________________________________________________________________________________________
Árbol Binario Completo de Altura o Profundidad H: Es un árbol Binario Completo en
donde todas las hojas están en el nivel H. Esta es una de las pocas estructuras de
árbol que se pueden representar eficientemente usando arreglos.
Una expresión es una secuencia de componentes léxicos (tokens), que siguen reglas
preescritas. Un token puede ser un operador o un operando. Un árbol binario de
búsqueda es un árbol en el que todo nodo existente tiene un sólo elemento y cumplen
lo siguiente:
DE
EXPRESION
-Cada hoja es un operando.
-El nodo raíz y los nodos internos son operadores.
-Los subárboles son sub_expresiones en las que
el nodo raíz es un operador.
DE
BUAQUEDA
-Todas las claves del subárbol izquierdo son menores
que la raíz.
- Todas las claves del subárbol derecho son mayores
que la raíz.
-Los subárboles izquierdo y derecho son también
árboles de búsqueda.
ÁRBOLES
BINARIOS
Representación en memoria
Hay dos formas tradicionales de representar un árbol binario en memoria:
1.-Por medio de datos tipo punteros también conocidos como variables dinámicas o
listas. Esta es la forma más utilizada, puesto que es la más natural para tratar este tipo
de estructuras.
2.-Por medio de arreglos. Los nodos del árbol binario serán representados como
registros que contendrán como mínimo tres campos. En un campo se almacenará la
información del nodo. Los dos restantes se utilizarán para apuntar al subárbol
izquierdo y derecho del subárbol en cuestión.
Clasificación de árboles binarios:
Existen cuatro tipos de árbol binario:
Alberto León Aparicio
Algoritmos y Estructuras de Datos
Árboles
____________________________________________________________________________________________________________________
DISTINTOS. Dos árboles binarios son distintos cuando sus estructuras
son diferentes.
SIMILARES. Dos árboles binarios son similares cuando sus estructuras
son idénticas, pero la información que contienen sus
nodos es diferente.
ÁRBOLES
BINARIOS
EQUIVALENTES. Son aquellos árboles que son similares y que
además los nodos contienen la misma información.
COMPLETOS. Son aquellos árboles en los que todos sus nodos
excepto los del último nivel, tiene dos hijos; el
subárbol izquierdo y el subárbol derecho.
Recorrer el subárbol izquierdo
INORDEN Examinar la raíz
Recorrer el subárbol derecho inorden
RECORRIDO DE
Examinar la raíz
UN ARBOL
PREORDEN Recorrer el subárbol izquierdo en preorden
Recorrer el subárbol derecho en preorden
Recorrer el subárbol izquierdo en postorden
POSTORDEN Recorrer el subárbol derecho en postorden
Examinar la raíz
Además de estos recorridos tradicionales, se tienen los recorridos conversos, en los
que el orden del recorrido se invierte a derecha- izquierda, en vez de izquierda –
derecha. Finalmente existe un recorrida llamado nivel por nivel en el que los nodos del
árbol se visitan por niveles a partir de cero y de izquierda a derecha.
Árboles enhebrados
Existe un tipo especial de árbol binario llamado enhebrado, el cual contiene hebras
que pueden estar a la derecha o a la izquierda.
ARBOL ENHEBRADO A LA DERECHA. Este tipo de árbol tiene un apuntador a la
derecha que apunta a un nodo antecesor.
ARBOL ENHEBRADO A LA IZQUIERDA. Estos árboles tienen un apuntador a la
izquierda que apunta al nodo antecesor en orden.
BOSQUE
Entenderemos como bosque a un conjunto normalmente ordenado de dos o más
árboles generales.
Alberto León Aparicio
Algoritmos y Estructuras de Datos
Árboles
____________________________________________________________________________________________________________________
ÁRBOLES AVL
Un árbol AVL es un árbol binario de búsqueda al que se le añade una condición de
equilibrio. Esta condición es que para todo nodo la altura de sus subárboles izquierdo y
derecho pueden diferir a lo sumo en 1. AVL son las iniciales de Adelson-Velskii y
Landis, los hombres que idearon este tipo de árbol.
Operaciones básicas en los árboles binarios.
Inserción. La inserción de un elemento en un árbol AVL es idéntica que en un árbol
binario de búsqueda, la diferencia se encuentra en la comprobación que hay que
realizar posteriormente en los árboles AVL.
En un árbol AVL tras realizar la inserción hay que comprobar que se sigue
manteniendo la condición de equilibrio, o lo que es lo mismo, que la altura del subárbol
izquierdo y la del subárbol derecho difieran en una unidad o sean iguales. Si se
produce un desequilibrio hay que reequilibrar la estructura para que siga siendo un
árbol AVL.
Borrar. El procedimiento de borrado es el mismo que en el caso de arbol binario de
busqueda. La diferencia se encuentra en el proceso de reequilibrado posterior. Este
proceso es idéntico al que se realiza en la inserción, la única diferencia es que en la
inserción tras realizar una rotación el árbol ya estaba equilibrado, mientras que en el
borrado puede ser necesario realizar mas de una rotación.
Rotación Simple
REEQUILIBRIO DE
LOS ÁRBOLES AVL
Rotación doble
Las operaciones adicionales en un árbol AVl son análogas a las de árboles de busque
da binarios. Los árboles AVL son un subconjunto de los árboles de busque da binarios,
por lo que sus aplicaciones son muy similares.
ÁRBOLES B
Los árboles reciben su nombre de R. Bayer, contienen entre n y 2n nodos, siendo n
una constante dada. Como consecuencia de esto se puede deducir que los árboles B
no son árboles binarios como sí lo son los binarios de búsqueda o los AVL. En los
árboles B los nodos se agrupan dentro de páginas, por lo que se podría definir a la
página como un conjunto de nodos.
Los árboles B deben cumplir las siguientes características en cuanto a estructura:
1. Todas las hojas en el árbol están al mismo nivel.
2. Cada nodo contiene entre n y 2n elementos, excepto la raíz que tiene entre 1 y
2n.
3. Si en nodo tiene m elementos, en nodo contendrá 0 ó m+1 hijos.
4. Los elementos de un nodo del árbol están ordenados linealmente en el nodo.
5. Los elementos del árbol B están organizados siguiendo las propiedades de un
ABB, es decir, los elementos menores a la izquierda y los mayores a la derecha
del nodo original.
Alberto León Aparicio
Algoritmos y Estructuras de Datos
Árboles
____________________________________________________________________________________________________________________
Operaciones básicas en los árboles B
Insertar. La primera acción a realizar en la operación de inserción es localizar el lugar
adecuado en el árbol donde se insertará el nuevo elemento. Una vez localizado el
lugar adecuado, hay que tener en cuenta el número de nodos que tiene la página
destino del nuevo elemento. Si tiene menos de 2n, entonces se inserta el nuevo nodo
y se da por finalizada la operación de inserción.
La complejidad se produce cuando la página destino está al completo de su
capacidad, es decir, tiene 2n nodos. En estos casos el procedimiento a seguir es el
siguiente:
1. Insertar el nodo como si realmente tuviese sitio libre.
2. Extraer el nodo que ocupa la posición del medio e insertarlo en la página padre.
Si no hubiese página padre se crearía una nueva página con ese nodo.
3. Dividir la página original en dos nuevas páginas, cada una de ellas con n
elementos. Estas páginas serán los hijos derechos e izquierdos del nodo que
promocionó a la página superior.
4. Si la página a la que promociona el nodo mediano también se encuentra
completa, se repetiría la misma operación de división y promoción.
Como consecuencia de que todas las hojas deben estar en el último nivel, los árboles
B crecen hacia arriba (este crecimiento se produce cuando la inserción de un nodo en
una página completa provoca su división) y la ausencia de la restricción de 2 hijos por
nodo que tienen los binarios son características que los diferencia del resto de
árboles. Los árboles B tienen un campo de aplicación similar a los árboles binarios de
búsqueda, ya que también son árboles de búsqueda.
Borrar.
a).-Cuando el nodo que contiene el elemento por eliminar posee más del mínimo de
elementos, se elimina el elemento del nodo y el proceso de eliminación termina.
b).-Cuando el nodo que contiene el elemento a eliminar posee exactamente el mínimo
de elementos se buscara otro elemento que pueda sustituir al que se dará de baja y si
no existe un sustituto se deberá unir dos nodos. Cuando alguno de los hermanos
adyacentes al nodo que se dará de baja tiene más del mínimo de elementos, el
elemento padre del nodo con el elemento por borrar lo sustituirá cuando sea borrado.
Si no existe un hermano adyacente con mas del mínimo de elementos el nodo donde
ocurre la eliminación y un hermano adyacente se unen junto con el elemento padre
que desaparece del nodo padre, si este ultimo queda con mas del mínimo de
elementos el proceso termina, sino, se analiza la eliminación en el nodo padre
repitiendo los pasos anteriormente mencionados.
c).-Si el nodo que contiene el elemento por eliminar es la raíz del árbol y posee un solo
elemento el nodo desaparece y la nueva raíz del árbol será el nodo resultado de la
unión de los hijos que dependían de la raíz anterior.
Como en el caso de los árboles binarios las operaciones secundarias más usuales son
las búsquedas y los recorridos. Estos algoritmos son semejantes a los utilizados para
los árboles binarios
Descargar