Está en la página 1de 30

Unidad 5: Estructuras de Datos Complejas No Lineales

Grafos

Los grafos son estructuras de datos no lineales donde cada componente puede tener uno
o más predecesores y sucesores. En una gráfica se distinguen dos elementos: los nodos,
mejor conocidos como vértices, y los arcos, llamados aristas, que conectan un vértice con
otro. Los vértices almacenan información y las aristas representan relaciones entre dicha
información.
Estas estructuras tienen aplicaciones en diferentes dominios, entre ellos transporte –
terrestre, aéreo y marítimo-, redes de computadoras, mapas, asignación de tareas, etc.
Definición: un grafo G consta de dos conjuntos: V(G) y A(G). El primero lo integran
elementos llamados nodos o vértices; el segundo, arcos o aristas. Por lo tanto podemos
denotar una gráfica G como:
G=(V,A)
Donde V representa el conjunto de vértices de G y A el conjunto de aristas de G. Si no se
hace ninguna especificación, los conjuntos V y A son finitos.
Cada arista está identificada por un único par de nodos del conjunto de vértices que
puede o no estar ordenado. Una arista que va del vértice u al v se denota mediante la
expresión a=(u,v), donde u y v son vértices adyacentes y los extremos de a. En este caso, u
y v están conectados por a y se dice que a es incidente en u y v.

Página | 1
Conceptos Básicos de Grafos: a continuación se presentan algunos de los conceptos más
importantes relacionados con la teoría de grafos:
Grado de un vértice: el grado de un vértice, escrito como grado(v), es el número de aristas
que contienen a v; es decir, que tienen a v como extremo. Si el grado(v)=0 (v no tiene
aristas), se dice que v es un nodo aislado.
Lazo o bucle: un lazo o bucle es una arista que conecta a un vértice consigo mismo; es
decir, a=(u,u).
Camino: un camino P de longitud n se define como la secuencia de n vértices que se debe
seguir para llegar del vértice –origen- al vértice –destino-.
P=( ,…,
De tal modo que es adyacente a para i=1,2,…, n-1.
Camino cerrado: el camino P es cerrado si el primero y ultimo vértices son iguales; es
decir, si =
Camino simple: el camino es simple si todos sus nodos son distintos, con excepción del
primero y del último, que pueden ser iguales; es decir, P es simple si son
distintos.
Ciclo: un ciclo es un camino simple cerrado de longitud 3 o mayor. Un ciclo de longitud k
se llama k-ciclo.
Grafo conexo: se dice que un grafo es conexo si existe un camino simple entre
cualesquiera dos de sus nodos.
Grafo árbol: se dice que un grafo G es del tipo árbol o árbol libre si G es un grafo conexo
sin ciclos.
Grafo completo: se dice que un grafo es completo si cada vértice v de G es adyacente a
todos los demás vértices de G. Un grafo completo de n vértices tendrá n(n-1)/2 aristas.
Grafo etiquetado: se dice que un grafo G esta etiquetado si sus aristas tienen asignado un
valor. Es decir, si cada arista a tiene un valor numérico no negativo c(a), llamado costo,
peso o longitud de a, entonces G tiene peso o esta etiquetado.
En este caso, cada camino P de G tendrá asociado un peso o longitud que será la suma de
los pesos de las aristas que forman el camino P.
Multígrafo: es cuando al menos dos de sus vértices están conectados entre sí por medio
de dos aristas. En este caso, las aristas reciben el nombre de aristas múltiples o paralelas.

Página | 2
Subgrafo: dado un grafo G=(V,A), G’=(V’,A’) se denomina subgrafo de G si V’ es igual al
conjunto no vacío, y V’ está incluido en V y A’ está incluido en A, donde cada arista de A’
es incidente con vértices de V’.

Grafo Nulo

El grado de un vértice, escrito como grado(v), es el número de aristas que contienen a v;


es decir, que tienen a v como extremo. Si el grado(v)=0 (v no tiene aristas), se dice que v
es un nodo aislado o grafo nulo.

Condiciones

Un grafo G se llama grafo simple si las siguientes condiciones son válidas.


 No tiene ciclos, esto es, no existe una arista en de la forma (v,v), de donde V
está en
 No hay más de una arista uniendo un par de nodos, esto es, no existe más de una
arista en de la forma ( ), para cualquier par de elementos en .

Trayectorias

Una trayectoria en un grafo es una secuencia de una o más aristas que conecta a dos
nodos. Denotamos por P( ) a una trayectoria que conecta a los nodos y . Para que
P( ) exista, debe haber en una secuencia de arcos de la siguiente forma:

La longitud de la trayectoria es el número de aristas que la componen.


Por ejemplo en el siguiente grafo:

Página | 3
Se tienen las siguientes trayectorias entre los nodos b y d:

Ciclos - Condiciones

Un ciclo es una trayectoria sobre la cual se cumple con las siguientes dos condiciones:
 Ninguna arista puede aparecer más de una vez en una secuencia de aristas.
 El nodo inicial de la trayectoria es el mismo que el nodo terminal, es decir, P(v,v).
En otras palabras, un ciclo regresa a su punto de inicio.

Grafos Dirigidos

Es un tipo especial de grafo, en el cual se les asigna dirección a las aristas del grafo.

Página | 4
Cada arista del grafo dirigido incluye una flecha para indicar la dirección.
El grado interno de un nodo en un grafo es el número de aristas que terminan en ese
nodo; el grado externo de un nodo, es el número de aristas que salen de este nodo. El
grado de un nodo es la suma de sus grados internos y externos.
Por ejemplo en la figura anterior:

Grafos implementados en listas encadenadas

En comparación con la técnica de matriz de adyacencias, la cual almacena información de


cada posible arista la representación encadenada solamente almacena la información de
las aristas que existen. A medida que las aristas se suman o se borran de la gráfica
encadenada, se debe modificar la representación en consecuencia. Existen dos tipos
fundamentales de estructuras encadenadas para representar grafos: una se llama
representación de directorio de nodos y otra representación de multi-lista.

Representación de directorio de nodos

La representación de directorio de nodos incluye dos partes: un directorio y un conjunto


de listas encadenadas. Hay una entrada en el directorio para cada nodo del grafo. La
entrada del directorio para el nodo i apunta a una lista encadenada, que representa los
nodos que están conectados al nodo i. Cada registro de la lista encadenada tiene dos

Página | 5
campos: el primero es una identificación del nodo, y el otro es una liga al siguiente
elemento de la lista. El directorio representa nodos y, la lista encadenada representa
aristas.
Por ejemplo, tenemos el siguiente grafo y su representación de directorio de nodos.

Un grafo no dirigido de orden N con E aristas, requiere de N entradas en el directorio y


2*E entradas de listas encadenadas, excepto cuando existen bucles en cuyo caso se
reduce el número de entradas de listas encadenadas en uno.
Un grafo dirigido de orden N con E aristas, requiere de N entradas en el directorio y E
entradas de listas encadenada.
La lista encadenada encabezada por la i-esima entrada del directorio corresponde al i-
ésimo renglón de la matriz de adyacencia. Las entradas del directorio se ordenan
secuencialmente de acuerdo al identificador del nodo.

Aristas Ponderadas

Página | 6
Representar un grafo con aristas ponderadas, requiere reservar espacio en la estructura
de datos para el almacenamiento de los pesos. La figura 7-13 muestra un grafo dirigido
con aristas ponderadas. Este ejemplo en particular es el de un grafo de actividades: cada
nodo representa un evento y cada arista representa una tarea que, al completarse ayuda
a disparar el siguiente evento, que inicia otras tareas. Cada peso de arista es su tiempo
requerido.
Una representación de directorio de nodos para este grafo se muestra en la figura 7-14. El
registro para cada entrada de arista contiene el identificador del nodo destino, el peso de
la arista y un apuntador al siguiente nodo, que tenga el mismo nodo fuente.

Recorrido de grafos en amplitud y en profundidad

Recorrido en amplitud: en un recorrido en amplitud de grafos, un nodo se selecciona


como posición inicial, éste se visita y se marca, después, todos los nodos no visitados,

Página | 7
adyacentes a ese nodo, se visitan y se marcan en algún orden secuencial. Por último, los
nodos no visitados. Inmediatamente adyacentes a esos nodos, se visitan y marcan, y así
sucesivamente, hasta que todos los nodos del grafo hayan sido visitados en el recorrido.

El recorrido en amplitud del anterior grafo, resulta en el orden siguiente: 1, 2, 3, 4, 5, 6, 7,


8.
El algoritmo de recorrido utiliza una cola para almacenar los nodos, de cada “nivel” del
grafo que se visita. Estos nodos almacenados son tratados uno por uno, luego sus nodos
adyacentes son visitados, y así sucesivamente hasta que todos los nodos hayan sido
visitados. Esta condición de terminación se alcanza cuando la cola queda vacía.
Recorrido en profundidad: mientras que el recorrido en amplitud procede nivel por nivel,
el recorrido en profundidad sigue primero una trayectoria desde el nodo inicial hasta un
nodo terminal, después otra trayectoria desde el mismo punto inicial hasta alcanzar otro
nodo final, y así sucesivamente hasta que todos los nodos hayan sido visitados.
El recorrido en profundidad de la gráfica mostrada anteriormente, resulta en una visita de
los nodos en el orden siguiente: 1, 2, 4, 8, 5, 7, 3, 6. Una trayectoria se sigue hasta que
todos los nodos no visitados hayan sido alcanzados; después, el algoritmo regresa al
último nodo que fue visitado y que tiene un nodo adyacente no visitado.

Caminos Críticos

La estructura de un grafo de un proyecto puede mostrar que varias tareas pueden


ejecutarse en paralelo. Por ejemplo, las tareas de los eventos 2 y 3 pueden proceder al
mismo tiempo en la figura 7-13. El interés del manejo de proyectos, es el de determinar
cuáles eventos son críticos para terminar el proyecto oportunamente. Un evento es crítico
si, el retraso en su terminación, retrasa la terminación de todo el proyecto. El tiempo más
corto de terminación posible para el proyecto es la trayectoria más larga a través del

Página | 8
grafo. A esta trayectoria más larga se la llama ruta crítica; y los eventos críticos se
encuentran a lo largo de esta ruta. A la longitud de esta ruta se le llama tiempo de la ruta
crítica.
Una forma de detectar la ruta crítica y determinar los tiempos de corrimiento permisibles
para los eventos que no están sobre la ruta crítica, consiste en encontrar los tiempos de
inicio más tempranos y los más tardíos de cada evento. El tiempo de inicio más temprano
del evento i (EST), es el tiempo de arranque más próximo posible para dicho evento. Para
el grafo de la figura 7-13.

El EST se calcula a partir de la trayectoria más larga desde el nodo de inicio hasta el nodo i.
Nótese que las tareas desde los nodos 5 y 6 se deberán completar antes de que arranque
el evento 7. Más formalmente,

El tiempo de inicio más tardío del evento i ( ), es el tiempo más tardío posible en el
cual el evento i puede ser arrancado para que el grafo se complete en tiempo crítico.
El conjunto se calcula hacia atrás a partir del último evento. Para el grafo de la figura
7-13.

Página | 9
La diferencia entre el y el es el corrimiento permisible del evento i.

Por lo tanto, los eventos críticos están representados por los nodos 1, 3, 6, 7, y 8, los
cuales se encuentran sobre la trayectoria más larga del grafo. Estos son los eventos que
necesitan controlarse para completar a tiempo el proyecto.

Arboles

Los árboles son estructuras de datos no lineales y dinámicas de datos más importantes del
área de computación. Dinámicas, puesto que las mismas pueden cambiar tanto de forma
como de tamaño durante la ejecución del programa. No lineales, puesto que cada
elemento del árbol puede tener más de un sucesor. Los arboles balanceados o AVL son la
estructura de datos más eficiente para trabajar con la memoria principal del procesador.
Un árbol es un grafo conexo, simple y acíclico. Un árbol no contiene ni ciclos ni bucles;
existe una sola arista entre cualquier par de nodos.

Conceptos sobre Arboles

Nodo: también llamado vértice o elemento del árbol. Es el contenedor de los datos y los
enlaces a sus hijos y a su padre.
Nodo Raíz: es el nodo donde comienza el árbol. Cada árbol tiene solamente un nodo raíz,
desde el cual cuelgan todos sus descendientes.

Página | 10
Nodo Rama: también llamado nodo interior o interno. Es un nodo cualquiera que puede
tener hijos, aunque en este preciso momento no los tenga. Es todo nodo que no es raíz u
hoja.
Nodo Hoja: también llamado nodo terminal. Es un nodo cualquiera que no puede tener
hijos y nunca los podrá tener. Es un nodo que no tiene ningún subárbol.
Nodo Hermano: es un nodo que es hijo del mismo padre.
Camino: son los enlaces que van desde un nodo hasta otro nodo.
Rama: es un camino que termina en una hoja (también llamado aristas).
Nivel del Nodo: es la longitud del camino desde el nodo raíz al nodo específico más uno.
Altura del Árbol: también llamado profundidad. Es el número máximo de nodos de una
rama del árbol. Es igual al nivel más alto de los nodos del árbol.
Peso del Árbol: es el número de nodos terminales
Árbol Vacío: es un árbol que en este momento no tiene ningún nodo. De existir solo un
nodo, ese nodo es el nodo raíz.
Grado de un Nodo: es el número de subárboles que tiene un nodo. Los nodos hoja tienen
grado cero.
Grado de un Árbol: el grado máximo de todos los nodos del árbol.
Ancestros del Nodo: son todos los nodos del árbol en el camino que va desde la raíz hasta
el nodo específico.
Arboles enraizados: son aquellos árboles en los cuales todas las aristas parten de un
solo vértice llamado raíz. Los árboles con raíz se representan de forma tal, que el
vértice raíz se coloca encima de los restantes, los cuales se sitúan por niveles según
su distancia a la raíz.
Los árboles con raíz se utilizan para especificar relaciones jerárquicas, por ejemplo
árboles genealógicos, relaciones lógicas entre los registros de una base de datos,
relaciones entre los directorios y subdirectorios en un computador, etc.
Subarboles: un árbol se divide en subárboles, que es cualquier estructura conectada por
debajo del nodo raíz. Cada nodo de un árbol es la raíz de un subárbol que se define por
el nodo y todos sus descendientes.
Árbol Vacío/Nulo: es un árbol que en este momento no tiene ningún nodo. De existir solo
un nodo, ese nodo es el nodo raíz.

Formas de Representación de Arboles

Página | 11
Los árboles se pueden representar de una forma gráfica como se muestra a continuación:

Otras notaciones gráficas para estructuras de árboles incluyen 1) conjuntos anidados y 2)


paréntesis anidados:
(A(B(E))(C(F)(G(K)(L)))(D(H)(I)(J)))
En este último caso los paréntesis encierran a la raíz y a los subárboles de cada árbol.
Y 3) la indentación como se muestra en la figura 8-5.
1)

3)

Página | 12
Arboles Generales

Un árbol se dice que esta enraizado si tiene un nodo (llamado raíz), el cual se distingue de
los demás nodos. La raíz del árbol T es denotada por la raíz (T).
De manera más formal, un árbol T es un conjunto finito de cero o más nodos
( , de tal manera que:
1) Hay un nodo especialmente designado (digamos llamado Raíz(T).
2) Los nodos restantes ( son particionados en m≥0 conjuntos disjuntos,
llamados tales que, cada es por sí mismo un árbol.
Los conjuntos son llamados subárboles de la Raíz(T). Note la naturaleza recursiva
de esta definición, pues hemos definido árboles en términos de árboles. Un árbol sin
nodos es un árbol nulo.

Página | 13
En la figura se muestra un árbol con nodos etiquetados con una letra dentro de un círculo.
Esta notación se usa normalmente para dibujar árboles. Aquí la Raíz(T)=A. Los tres
subárboles de la raíz A, están enraizados en B, C, y D respectivamente. B es la raíz de un
árbol con un subárbol, cuya raíz es E, y tal subárbol ya no tiene subárboles. El árbol con
raíz en C tiene dos subárboles, con raíz en F y G respectivamente.
Algunas veces aplicamos características direccionales a las aristas del árbol. Tal como se
muestra en la siguiente figura.

Aquí tenemos un árbol de la manera típica, con la raíz en la parte superior y sus arcos (o
ramificaciones) creciendo hacia abajo.
El árbol tiene un nodo, especialmente designado, llamado raíz. La raíz no está
simplemente seleccionada de manera aleatoria; más bien es un nodo que se distingue por
la propiedad de:
Grado-interno(v)=0 para v=Raíz(T)
La raíz no tiene ramificaciones de entrada. Debido a que un árbol es un grafo conexo, no
puede haber más de un nodo con esta propiedad. Considere los subárboles de A, del árbol

Página | 14
de la figura anterior, tal como se muestra en la figura 8-3. Nótese que las aristas que
conectan A a B, C y D, no aparecen en estos subárboles, porque A no es uno de sus nodos.

Una colección de árboles enraizados se llama bosque. La figura 8-3 muestra un bosque de
tres árboles.

Propiedades

Las propiedades de los árboles son:


 Existe un único paseo entre dos vértices cualesquiera de un árbol.
 El número de vértices es mayor en uno al número de aristas de un árbol.
 Un árbol con dos o más vértices tiene al menos dos hojas.

Arboles Binarios

La clase más importante de árboles generales son los arboles binarios. Un árbol binario es
un conjunto finito de nodos, el cual puede ser vacío, o puede contener un par de árboles
binarios disjuntos, que son llamados subárbol izquierdo y subárbol derecho. Note que,
además del requerimiento de que el grado externo máximo de cualquier nodo de un árbol
binario sea 2, existe una restricción adicional de que a los subárboles se les impone la
identificación como derechos o izquierdos. Los arboles binarios de la figura 8-6a) y b) no
son los mismos; son dos árboles diferentes, uno con un subárbol izquierdo y otro con un
subárbol derecho.

Página | 15
Se dice que dos árboles binarios son similares si tienen la misma estructura, tal y como se
ejemplifica en la figura 8-7. Dos árboles binarios son equivalentes si son similares y
contienen la misma información. Los dos árboles de la figura 8-7 no son equivalentes.

Consideremos ahora algunas propiedades de los arboles binarios que los distinguen de los
arboles generales. Considere un árbol binario con K niveles, como se representa en la
figura 8-8.

Página | 16
Ahora empezamos a omitir las flechas sobre las aristas del árbol, dado que no existe duda
de donde está la raíz. Se dice que el árbol binario está completo si contiene el número
máximo de nodos posibles para su altura. ¿Cuantos nodos contiene un árbol binario
completo con K niveles? El número de aristas que llegan a cualquier nivel (excepto al nivel
0) es dos veces el número de nodos en el nivel anterior.

Por lo tanto, el número máximo de nodos en el I-ésimo nivel es . Así, es un árbol binario
con K niveles contiene los siguientes nodos:

Un árbol binario con K niveles, se dice que es casi completo, si los niveles desde el 0 hasta
el K-2 están llenos, y el nivel K-1 se está llenando de izquierda a derecha, tal como se
muestra en la figura 8-9, para un árbol de 5 niveles.

Representación de árboles binarios: los arboles binarios se representan frecuentemente


por las listas encadenadas. Cada nodo puede tener tres campos elementales: un arca de
información y los apuntadores a los subárboles izquierdo y derecho. Por ejemplo, el árbol
binario de la figura 8-11 se puede representar por listas encadenadas como se muestra en
la figura 8-12.

Página | 17
La colocación topológica de los nodos de la lista encadenada en esta página, por supuesto
no es significativa; la ubicación real de los nodos en el almacenamiento puede estar
diseminada a través de la memoria.

Recorrido de un árbol: recorrido en orden y post orden

Una de las operaciones más importantes que se realiza en un árbol binario es el recorrido
de los mismos. Recorrer significa visitar los nodos del árbol en forma ordenada, de tal
manera que todos los nodos del mismo sean visitados una sola vez. Existen tres formas
diferentes de efectuar el recorrido y todas ellas de naturaleza recursiva; estas son:
a) Recorrido en preorden
 Visitar la raíz
 Recorrer el subárbol izquierdo
 Recorrer el subárbol derecho

b) Recorrido en inorden
 Recorrer el subárbol izquierdo
 Visitar la raíz
 Recorrer el subárbol derecho

c) Recorrido en posorden

Página | 18
 Recorrer el subárbol izquierdo
 Recorrer el subárbol derecho
 Visitar la raíz
En la figura 6.20 se muestran tres arboles binarios con el resultado que se obtiene al
efectuar los diferentes tipos de recorrido. Note que en un árbol binario que representa
una expresión algebraica, por ejemplo, el árbol de la figura 6.20c, la impresión de la
información de sus nodos, usando el recorrido preorden, produce la notación polaca
prefija. En el caso del recorrido inorden se obtiene la notación convencional y, por último,
el recorrido posorden produce la notación polaca posfija. Aunque, cabe aclarar, sin los
paréntesis respectivos que indican la precedencia de los distintos operadores.

Página | 19
A continuación se presentan los algoritmos para efectuar estos recorridos:

Nota: cabe destacar que el término visitar se puede reemplazar por cualquier otra
instrucción valida, por ejemplo, escribir, sumar o comparar la información del nodo.
Esta aclaración se aplica también para los otros tipos de recorridos.

Página | 20
Arboles Binarios Enhilados

Para facilitar el recorrido de un arboles binarios, algunas veces enhilamos al árbol con
apuntadores que explícitamente muestran el orden de recorrido. De manera intuitiva el
enhilado liga a los nodos del árbol en la secuencia del método de recorrido.
Hay dos tipos de enhilado: el enhilado derecho, liga a un nodo con su sucesor según el
orden de recorrido; el enhilado izquierdo, liga a un nodo con su predecesor según el orden
de recorrido. A partir de estas definiciones, se debe establecer que un árbol solo se puede
enhilar de acuerdo a un método de recorrido; en pre-orden o en-orden o en post-orden.
Un árbol de búsqueda binario es normalmente enlazado en pre-orden.

Página | 21
El enhilado es presentado en las figuras con líneas discontinuas. La figura 8-19a), muestra
los tres arboles de la figura 8-15 enhilados en pre-orden; en la figura 8-19b) se muestra el
enlazado en en-orden; y la figura 8-19c) muestra el enhilado en post-orden. Solamente se
ilustraran los enhilados derechos.

Página | 22
Página | 23
Página | 24
Página | 25
Cada nodo tiene sus apuntadores usuales derecho e izquierdo, sus campos de
información, y sus apuntadores de enhilamiento derecho e izquierdo. Todos los
apuntadores son a otros nodos con esta misma estructura. Si el árbol fuera un árbol de
búsqueda binario, cada nodo tendría también, un campo llave.

Búsquedas Directas

Las propiedades de un árbol de búsqueda binario implican la existencia de un


procedimiento para determinar si un nodo con una llave dada, reside en el árbol y para
encontrar tal nodo cuando exista. Para encontrar el nodo con llave K en el árbol de
búsqueda binario, con raíz en , se deben seguir los siguientes pasos:
1) Si el árbol esta vacío, la búsqueda termina sin éxito.
2) Si k= , la búsqueda termina satisfactoriamente; el nodo encontrado es .
3) Si k< , se debe buscar en el subárbol izquierdo de es decir, :=izquierdo( .
4) Si k> , se debe buscar en el subárbol derecho de , es decir, :=derecho( ).
En Pascal el algoritmo es:

La búsqueda termina cuando nodo-encontrado apunta al nodo solicitado, si es que existe,


o con un valor nulo si la llave k no está en el árbol.
Encontrar un nodo particular en un árbol que no es un árbol de búsqueda binario es
usualmente realizado mediante una búsqueda secuencial más que mediante una
búsqueda directa, a menos que el árbol este especialmente estructurado y los nodos
tengan campos llave. Una búsqueda secuencial en un árbol con N nodos requerirá un
promedio de N/2 nodos visitados para encontrar un nodo particular. En el peor de los
casos, todos los N nodos necesitaran ser recorridos para determinar que el nodo buscado
no existe en el árbol.

Página | 26
El esfuerzo requerido para encontrar un registro particular en un árbol de búsqueda
binario depende de la posición del registro en el árbol. Hemos visto que hay muchos
posibles arboles de búsqueda binarios para organizar una colección dada de registros.
Entre más lejos de la raíz del árbol se encuentre el registro buscando, más esfuerzo se
hará para encontrarlo. El esfuerzo de búsqueda se mide por el número de comparaciones
hechas, antes de terminar la búsqueda, con éxito o sin él.

Balanceo de Arboles de Búsqueda Binarios

El desempeño de un árbol de búsqueda binario se determina por la estructura del árbol y


por las probabilidades de acceso a los nodos. La estructura del árbol está afectada por la
secuencia de modificaciones al árbol; tanto las inserciones como las supresiones cambian
el esquema del árbol.
Los algoritmos heurísticos para el balanceo son los siguientes:
 Poner los nodos con las llaves más frecuentemente accesadas, cerca de la raíz del
árbol.
 Balancear el árbol: esto es, para cada nodo, los subárboles derecho e izquierdo
deberán tener un número de nodos, tan similar como sea posible, minimizando
por lo tanto la longitud máxima de ruta.

Arboles Balanceados por su Altura (AVL)

Un tipo de árboles “casi completamente” balanceados es conocido como árbol


balanceado por su altura, o árbol AVL. Un árbol esta balanceado por su altura si sus nodos
quedan arreglados de tal forma que, para cada nodo , se cumple con la siguiente
propiedad:
La altura del subárbol izquierdo de y la altura del subárbol derecho de difieren en un
máximo de 1.

Página | 27
Recordemos que la altura de un árbol es de uno más el número del nivel más alto en el
cual tiene nodos.
Los arboles de búsqueda binarios mostrados en la figura 8-25, están todos balanceados
por su altura. Note que aunque esta balanceado por su altura, el árbol c) no está
completamente balanceado.
Los arboles AVL proporcionan una buena y eficiente búsqueda directa. Aunque tiendan a
verse algo más esparcidos que los que están completamente balanceados, las búsquedas
que requieren son moderadamente mayores.

Arboles Balanceados por un Limite (BB)

Otra clase de árbol balanceado “casi completamente” es conocido como árbol balanceado
por un límite. Estos árboles son conocidos también como arboles BB o arboles
balanceados por peso. La idea básica de un árbol balanceado por un límite es la de
imponer una restricción con respecto a que tan lejos puede desviarse un árbol de estar
completamente balanceado. Este límite restringe la diferencia entre el número de nodos
en el subárbol izquierdo y en el subárbol derecho. Aunque basados en una restricción de
tamaño en lugar de la altura de los subárboles, los arboles balanceados por un límite son
similares en sus propiedades a los arboles balanceados por su altura. Ambos intentan
negociar un compromiso entre longitudes de búsqueda cortas y los requerimientos de
balanceo.
Un árbol balanceado por un límite lleva un parámetro β, el cual controla este compromiso.
En un árbol balanceado por un límite de balance β, donde 0<β≤ , para cada nodo del

Página | 28
árbol, la fracción de nodos en el subárbol izquierdo estará entre β y 1-β. Más
formalmente, si el TAMAÑO(N) es el número de nodos en el árbol con raíz en el nodo N,
entonces la restricción es:

Si β= , entonces el subárbol izquierdo y el derecho tendrá el mismo número de nodos, es


decir, el árbol estará completamente balanceado. Si β= , entonces uno de los subárboles
podrá tener hasta tres veces tantos nodos como tenga el otro.

A medida que el valor de β se acerca a , la restricción de limitación se hace más cerrada.

Arboles de Búsqueda Binarios

Un árbol de búsqueda binario sobre la colección de n registros con llaves , …, es


un árbol binario, donde cada uno de sus nodos contiene una de las llaves , para i=1,
2,…, n.

Las llaves son los identificadores de los nodos. La búsqueda de un nodo particular se hará,
buscando su valor de llave. Los nodos del árbol binario están arreglos de tal modo que,
para cada nodo , se aplican las siguientes propiedades:
Todas las llaves de los nodos en el subárbol izquierdo de preceden a la llave etiquetada
por .
Si pertenece a izquierdo( )

Entonces <

Página | 29
La llave etiquetada por precede a las llaves de todos los nodos en el subárbol derecho
.
Si pertenece a derecha( )

Entonces < .

En general requerimos que las llaves en la colección sean distintas aunque esta restricción
algunas veces es eliminada. La precedencia de llaves es determinada por su ordenamiento
lineal, de acuerdo a una secuencia de ordenamiento.
Es importante notar que hay muchas maneras de ordenar las llaves para que la búsqueda
binaria sea válida. Por ejemplo, la figura 8-17 muestra cuatro arboles de búsqueda
binarios con las mismas llaves.

La estructura de un árbol de búsqueda binario particular está determinada por el orden en


el cual los nodos son colocados en el árbol. A menos que permitamos que el árbol sea
reestructurado durante el proceso de inserción, un nuevo nodo es siempre insertado
como nodo hoja.

Página | 30

También podría gustarte