ESTRUCTURAS DE DATOS
SEMANA 7
Árboles
Todos los derechos de autor son de la exclusiva propiedad de IACC o de los otorgantes de sus licencias. No está permitido copiar, reproducir, reeditar, descargar, publicar, emitir, difundir, poner a disposición del público ni ESTE LAdeSEMANA 7 utilizarDOCUMENTO los contenidos paraCONTIENE fines comerciales ninguna clase.
1
ESTE DOCUMENTO CONTIENE LA SEMANA 7
2
ÍNDICE OBJETIVO ESPECÍFICO ......................................................................................................................... 4 INTRODUCCIÓN ................................................................................................................................... 4 1.
CONCEPTO DE ÁRBOLES .............................................................................................................. 4
2.
REPRESENTACIÓN DE ÁRBOLES ................................................................................................... 7
3.
LONGITUD DE CAMINO INTERNO Y EXTERNO ............................................................................ 9 3.1.
LONGITUD DE CAMINO INTERNO ..................................................................................... 10
3.2.
LONGITUD DE CAMINO EXTERNO ..................................................................................... 11
4.
OPERACIONES CON ÁRBOLES .................................................................................................... 12
5.
APLICACIONES CON ÁRBOLES ................................................................................................... 14 5.1.
ÁRBOL B, B+, B* ................................................................................................................. 14
5.2.
ÁRBOL ROJO-NEGRO ......................................................................................................... 15
COMENTARIO FINAL .......................................................................................................................... 17 REFERENCIAS ..................................................................................................................................... 18
ESTE DOCUMENTO CONTIENE LA SEMANA 7
3
ÁRBOLES
OBJETIVO ESPECÍFICO
Analizar la representación, longitud y operaciones de la estructura de datos árboles.
INTRODUCCIÓN Las estructuras de datos analizadas hasta ahora (pilas, colas y listas enlazadas) poseen la característica común de ser lineales, es decir, cada dato o nodo tiene solamente un sucesor. Esta peculiaridad conlleva a que su recorrido sea relativamente sencillo de ejecutar. Sin embargo, hay otras estructuras de datos donde un nodo puede tener varios sucesores. Tal particularidad las convierte en estructuras de datos no lineales. El objetivo de esta semana es conocer los árboles que son estructuras de datos no lineales y que ayudan a clasificar y ordenar los datos. Los árboles son, por ejemplo, la estructura primordial para el índice de una base de datos. Por lo anterior, es importante conocer la representación, uso e implementación de árboles, diseñar algoritmos que utilicen árboles, codificar programas que utilicen árboles y conocer aplicaciones que implementen árboles.
1. CONCEPTO DE ÁRBOLES “Un árbol es una estructura de datos dinámica no lineal que se compone de nodos y arcos, donde cada nodo almacena el dato, mientras los arcos representan las relaciones con otros nodos; además, debe conocerse la dirección de un nodo particular denominado raíz, ya que este sirve de referencia para iniciar el recorrido en el árbol” (López, 2012, p. 328). “Los árboles son las 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” (Cairó y Guardati, 2006, p. 176).
ESTE DOCUMENTO CONTIENE LA SEMANA 7
4
Representación gráfica de un árbol
Fuente: https://goo.gl/TJtJoF
Véase el siguiente código en PHP:
ESTE DOCUMENTO CONTIENE LA SEMANA 7
5
CONCEPTOS RELACIONADOS A UN ÁRBOL Un árbol se puede definir como 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, entre otros (Cairó y Guardati, 2006). Formalmente se define un árbol de tipo T como una estructura homogénea resultado de la concatenación de un elemento de tipo T con un número finito de árboles disjuntos, llamados subárboles. Una forma particular de árbol es el árbol vacío. Los árboles son estructuras recursivas, ya que cada subárbol es a su vez un árbol (Cairó y Guardati, 2006, p. 177). Pero para entender de mejor forma estos conceptos se ejemplificarán con el dibujo esquemático anterior de una estructura de datos tipo árbol: a) Raíz: nodo del cual parte el recorrido del árbol. En este caso la raíz está representada por el nodo con la letra A. b) Padre: es el nodo que antecede a otro, es decir, aquel que tiene un apuntador hacia otro nodo. Por ejemplo, el nodo A es padre de los nodos B, C y D. c) Hijo: representa el nodo sucesor o el descendiente, es decir, aquel apuntado por otro nodo. Los nodos E y F son hijos del nodo B. d) Hermano: los nodos son hermanos cuando son hijos del mismo padre. Los nodos B, C y D son hermanos debido a que son hijos comunes de nodo A. e) Hoja: se le asigna este término a los nodos que no tienen hijos o sucesores. f) Subárbol: es una sección de una jerarquía de un árbol, es decir, la rama que contiene los nodos descendientes de un nodo particular. g) Interior: se conoce con este término a aquellos nodos que no son raíz ni hojas del árbol. Los nodos B, E y F forman el interior del árbol. h) Nivel de un nodo: representa la cantidad de arcos recorridos para llegar a un nodo particular (partiendo de la raíz). La raíz tiene nivel 1, mientras el nodo D tiene nivel 2. i) Altura de un árbol: representa el valor más grande de los niveles de los nodos. El árbol que se está analizando tiene altura 3. j) Grado de un nodo: es la cantidad de nodos descendientes (hijos) de un nodo. La raíz tiene un grado 3, mientras que el nodo B posee el grado 2.
ESTE DOCUMENTO CONTIENE LA SEMANA 7
6
k) Grado del árbol: representa el valor más grande de los grados de los nodos. El árbol analizado tiene grado 3.
Para conocer más a fondo el concepto de árboles puede revisar el siguiente video: Árboles
2. REPRESENTACIÓN DE ÁRBOLES Un árbol se puede representar de múltiples formas que dependerán de la cantidad de nodos, niveles o grados que lo compongan y todas se consideran equivalentes. A continuación se presentarán cinco notaciones diferentes correspondientes a un mismo árbol:
A. DIAGRAMA DE VENN Diagrama consistente en dos o más áreas circulares que representan sendos conjuntos (totalidad de elementos que tienen una característica común) que se interseccionan y que comparten los subconjuntos representados por las áreas comunes.
Fuente: Cairó y Guardati (2006, p. 179).
B. ANIDACIÓN DE PARÉNTESIS Es una estructura de datos homogéneos tal que establece una jerarquía entre sus elementos.
ESTE DOCUMENTO CONTIENE LA SEMANA 7
7
Fuente: Cairó y Guardati (2006, p. 179).
C. NOTACIÓN DECIMAL DE DEWEY Es una estructura jerárquica que está compuesta por categorías y subcategorías que se organizan en forma de árbol, formándose divisiones y subdivisiones que dependen unas de otras.
Fuente: Cairó y Guardati (2006, p. 179).
D. NOTACIÓN IDENTADA Es la forma de representar gráficamente las carpetas (directorios) de un sistema de archivos. En este caso, una carpeta es un nodo padre de los archivos y subcarpetas contenidas en él.
Fuente: Cairó y Guardati (2006, p. 179).
E. GRAFO Esta representación es la que comúnmente se utiliza y ha originado el término de árbol por su parecido abstracto con una planta (raíz, ramas y hojas). Esto a pesar de que la raíz se esquematice al principio o arriba (Cairó y Guardati, 2006).
ESTE DOCUMENTO CONTIENE LA SEMANA 7
8
Fuente: Cairó y Guardati (2006, p. 179).
En el grafo se distinguen nodos (círculos) y arcos (líneas con flechas). Los primeros se usan para almacenar la información y los últimos para establecer la relación entre los nodos. En esta imagen los nodos almacenan letras y los arcos permiten ir de ciertos nodos a otros (Cairó y Guardati, 2006).
3. LONGITUD DE CAMINO INTERNO Y EXTERNO Se define la longitud de camino X como 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 1, sus descendientes directos longitud de camino 2 y así sucesivamente (Cairó y Guardati, 2006).
Fuente: https://goo.gl/9ePnJU
ESTE DOCUMENTO CONTIENE LA SEMANA 7
9
3.1. LONGITUD DE CAMINO INTERNO La longitud de camino interno (LCI) del árbol es la suma de las longitudes de camino de todos los nodos del árbol. Esta medida es importante porque permite conocer los caminos que tiene el árbol. Se calcula por medio de la siguiente fórmula:
Donde i representa el nivel del árbol y h su altura y ni el número de nodos en el nivel i (Cairó y Guardati, 2006). Luego, el LCI del árbol del árbol anterior se calcula de la siguiente forma: En el primer nivel hay un nodo, entonces sería:
1*1
En el segundo nivel hay dos nodos, entonces sería:
2*2
En el tercer nivel hay cinco nodos, entonces sería:
5*3
En el cuarto nivel hay cuatro nodos, entonces sería:
4*4
Finalmente se deben sumar todos los niveles: LCI = 1*1 + 2*2 + 5*3 + 4*4 LCI = 1 + 4 + 15 + 16 LCI = 36 Entonces, de acuerdo al ejemplo planteado, este árbol tiene 36 caminos de recorrido posibles.
MEDIA DE LA LONGITUD DE CAMINO INTERNO La media de la longitud de camino interno (LCIM) es importante, ya que permite conocer, en promedio, el número de decisiones que se deben tomar para llegar a un determinado nodo partiendo de la raíz. La media se calcula dividiendo la LCI por el número de nodos del árbol ( n). Se expresa de la siguiente manera:
Donde LCI representa la longitud de camino interno y n el número de nodos en el árbol (Cairó y Guardati, 2006). De acuerdo al ejemplo anterior sería: LCIM = 36/12 LCIM = 3
ESTE DOCUMENTO CONTIENE LA SEMANA 7
10
3.2. LONGITUD DE CAMINO EXTERNO Antes de definir el concepto de longitud de camino externo se explicará el concepto de árbol extendido y nodo especial (Cairó y Guardati, 2006).
Árbol extendido: es aquel en el que el número de hijos de cada nodo es igual al grado del árbol. Si alguno de los nodos del árbol no cumple con esta condición entonces deben incorporarse al mismo, tantos nodos especiales como se requiera para llegar a cumplirla. Siguiendo con el ejemplo anterior, el grado del árbol es 3 y es el número de nodos especiales por lo que se debieron agregar 25 nodos para convertirlo en árbol extendido:
Nodo especial: tienen como objetivo reemplazar las ramas vacías o nulas. No pueden tener descendientes y normalmente se representan en forma de un cuadrado.
Teniendo claro estos breves conceptos se puede definir la longitud del camino externo (LCE) de un árbol que es la suma de las longitudes de camino de todos los nodos especiales del árbol. Se calcula con la siguiente fórmula:
Donde i representa el nivel del árbol y h su altura y nei el número de nodos especiales en el nivel i (Cairó y Guardati, 2006). Se observa que i comienza desde el nivel 2, puesto que la raíz se
ESTE DOCUMENTO CONTIENE LA SEMANA 7
11
encuentra en el nivel 1 y no puede ser un nodo especial. Por tanto, de acuerdo al árbol ejemplo, su LCE sería:
Entonces: En el primer nivel:
no hay nodo especial, porque es raíz.
En el segundo nivel hay un nodo especial, entonces sería:
1*2
En el tercer nivel hay un nodo especial, entonces sería:
1*3
En el cuarto nivel hay un nodo, entonces sería:
11*4
En el quinto nivel hay un nodo, entonces sería:
12*5
Finalmente, la LCE = 1*2 + 1*3 + 11*4 + 12*5 = 109
4. OPERACIONES CON ÁRBOLES Un árbol puede ser recorrido de distintas formas. Existen básicamente tres maneras de recorrerlo.
1) EN PREORDEN: a) Se visita la raíz. b) Se visita el subárbol izquierdo. c) Se visita el subárbol derecho.
ESTE DOCUMENTO CONTIENE LA SEMANA 7
12
Siguiendo el ejemplo, el recorrido en preorden sería: A – B – D – I – E – F – J – K – C – G – H – L
2) INORDEN: a) Se visita el subárbol izquierdo. b) Se visita la raíz. c) Se visita el subárbol derecho.
Siguiendo el ejemplo, el recorrido en inorden sería: I – D – B – E – J – F – K – A – G – C – L – H
3) EN POSTORDEN: a) Se visita el subárbol izquierdo. b) Se visita el subárbol derecho. c) Se visita la raíz.
ESTE DOCUMENTO CONTIENE LA SEMANA 7
13
Siguiendo el ejemplo, el recorrido en postorden sería: I – E – J – K – F – D – B – G – L – H – C – A
5. APLICACIONES CON ÁRBOLES Los árboles se pueden aplicar para la solución de una gran cantidad de problemas. Por ejemplo, se pueden utilizar para representar fórmulas matemáticas, para registrar la historia de un campeonato de tenis, para construir un árbol genealógico, para el análisis de circuitos eléctricos y enumerar los capítulos o secciones de un libro (Cairó y Guardati, 2006).
5.1. ÁRBOL B, B+, B* Árbol B: es básicamente un árbol de búsqueda n-ario donde los nodos tienen p hijos como máximo y en el cual se añade la condición de balanceo de que todas las hojas estén al mismo nivel.
Fuente: https://goo.gl/PwXtEg
Árbol B+: son una variante de los árboles B, que se utiliza en representación de diccionarios. La estructura de los nodos hoja es distinta de la de los nodos internos. En esencia, la modificación consiste en que en los nodos internos solo aparecen claves, mientras en los nodos hoja aparecen las asociaciones (clave, valor).
ESTE DOCUMENTO CONTIENE LA SEMANA 7
14
Fuente: https://goo.gl/uQGM7Z
Árbol B*: su principal característica es que si en los árboles B, teniendo en cuenta la anterior definición los nodos deben estar ocupados como mínimo hasta la mitad, en los B* tienen que estar ocupados más de dos tercios del máximo.
Para conocer más a fondo el concepto de Árbol B* puede revisar el siguiente video: Árbol B*
5.2. ÁRBOL ROJO-NEGRO Es un árbol binario estricto (los nodos nulos se tienen en cuenta en la definición de las operaciones todo nodo hoja es nulo).
Cada nodo tiene estado rojo o negro. Nodos hoja (nulos) son negros. La raíz es negra (esta condición se impone para simplificar algunas operaciones).
Se deben cumplir las siguientes condiciones: 1) Un nodo rojo tiene dos hijos negros. 2) Todo camino de la raíz a cualquier hoja pasa por el mismo número de nodos negros.
ESTE DOCUMENTO CONTIENE LA SEMANA 7
15
Fuente: https://goo.gl/b6ZRfN
La altura negra de un nodo, de ahora en adelante, se denotará por la letra H (13), para diferenciarla de la altura normal (h). La altura negra de un nodo es igual a la altura del nodo cuando solo se tienen en cuenta los nodos negros del subárbol cuya raíz es el nodo.
ESTE DOCUMENTO CONTIENE LA SEMANA 7
16
COMENTARIO FINAL Una de las estructuras de datos más importantes en programación es el árbol. Pueden usarse los árboles para representar la información en una estructura jerárquica. Los árboles pueden procesarse en forma recursiva y son muy adaptables a pruebas matemáticas. La idea de estructura jerárquica es muy usada en la práctica. Por ejemplo, los libros son a menudo organizados como una sucesión de capítulos cada uno de los cuales son una sucesión de secciones que puede tener subdivisiones, y así sucesivamente. Una empresa puede organizarse como las colecciones de unidades comerciales cada una de las cuales pueden tener varias secciones. Las secciones, a su vez, pueden tener subsecciones múltiples y así sucesivamente. El software es organizado como una colección de módulos cualquiera, que puede constituirse de varios submódulos, con el nivel de refinamiento que los diseñadores encuentren apropiado. En cierto nivel, los módulos se expresan en unidades básicas como los objetos, los métodos o procedimientos. En otras palabras, las estructuras jerárquicas proporcionan una eficaz manera de organizar la información. Por tanto, los árboles aportan una capacidad enorme para expresar la idea de jerarquía.
ESTE DOCUMENTO CONTIENE LA SEMANA 7
17
REFERENCIAS Cairó, O. y Guardati, S. (2006). Estructura de datos. 3.a edición. México: McGraw-Hill. López, B. (2012). Estructura de datos orientado a objetos. 1.a edición. México: Alfaomega.
PARA REFERENCIAR ESTE DOCUMENTO, CONSIDERE: IACC (2017). Árboles. Estructuras de Datos. Semana 7.
ESTE DOCUMENTO CONTIENE LA SEMANA 7
18
ESTE DOCUMENTO CONTIENE LA SEMANA 7
19