sustentacion arboles
TRANSCRIPT
PROGRAMACIÓN LÓGICA Y FUNCIONAL
NILTON SANCHEZRAFAEL REYES
FUNDACIÓN UNIVERSITARIA SAN MARTIN
INGENIERIA DE SISTEMAS
ÁRBOLES
Es una extensión de una estructura de datos que imita la forma de árbol. Está compuesta por Nodos y conexiones a
hojas llamadas “hijos” que a su vez tienen “hijos” y así consecutivamente.
Función: Organizar la información de manera que facilite suentendimiento, análisis y funcionamiento. Es utilizada para modelos deBases de Datos, Administración de archivos, operaciones de recorridos ycaminos simples, inteligencia artificial, entre otras operaciones.
Tipos: Entre los tipos de árboles existen los árboles binarios, AVL, Rojo-Negro, AA, B,B+ o Eneários. De aquí se origina la base de los grafos.
RECORRIDOS DE UN ÁRBOL
Se llama recorrido de un árbol al proceso que permite acceder una sola vez a cada uno de los nodos del árbol para
examinar el conjunto completo de nodos.
Recorrido en Profundidad: el proceso exige alcanzar las profundidades deun camino desde la raíz hacia el descendiente mas lejano del primer hijo,antes de proseguir con el segundo.
Recorrido en Anchura: el proceso se realiza horizontalmente desde la raíza todos su hijos antes de pasar con la descendencia de alguno de ellos.
COMO RECORRER UN ÁRBOL
Al visitar los nodos de un árbol existen algunas maneras útiles en las que se puedenordenar sistemáticamente los nodos de un árbol.
Los ordenamientos más importantes son llamados: pre-orden, post-orden y en-orden y se definen recursivamente como sigue:
Si un árbol T es nulo, entonces, la lista vacía es el listado pre-orden, post-orden y en-orden del árbol T.
Si T consiste de un sólo nodo n, entonces, n es el listado pre-orden, post-orden y en-orden del árbol T.
Los algoritmos de recorrido de un árbol binario presentan tres tipos de actividadescomunes:
• visitar el nodo raíz• recorrer el subárbol izquierdo• recorrer el subárbol derecho
Estas tres acciones llevadas a cabo en distinto orden proporcionan los distintosrecorridos del árbol.
Recorrido en PRE-ORDEN: • Visitar el raíz• Recorrer el subárbol izquierdo en pre-orden• Recorrer el subárbol derecho en pre-orden
CÓDIGO:
void preorden(tArbol *a){
if (a != NULL){
tratar(a); //Realiza una operación en nodopreorden(a->hIzquierdo);preorden(a->hDerecho);
}}
Recorrido EN-ORDEN • Recorrer el subárbol izquierdo en en-orden• Visitar el raíz• Recorrer el subárbol derecho en en-orden
CÓDIGO:
void inorden(tArbol *a){
if (a != NULL){
inorden(a->hIzquierdo);tratar(a); //Realiza una operación en nodo
inorden(a->hDerecho);}
}
Recorrido en POST-ORDEN • Recorrer el subárbol izquierdo en post-orden• Recorrer el subárbol derecho en post-orden• Visitar el raíz
CÓDIGO:
void postorden(tArbol *a){
if (a != NULL){
postorden(a->hIzquiedo);postorden(a->hDerecho);tratar(a); //Realiza una operación en nodo
}}
1
2 3
Recorrido PreordenRaiz-IZQ-DER
RECORRIDOS DEL ÁRBOL GRÁFICAMENTE
2
1 3
Recorrido InordenIZQ-Raíz-DER
3
1 2
Recorrido PostordenIZQ-DER-Raíz
Recorreremos el Árbol Siguiente:
Recorrido Pre Orden (RID)El recorrido en Pre Orden del árbol es el siguiente: 15, 6, 4, 10, 20, 17, 22
Recorrido En Orden(IRD)El recorrido en En Orden del árbol es el siguiente: 4, 6, 10, 15, 17, 20, 22
Recorrido Post Orden(IDR)El recorrido en Post Orden del árbol es el siguiente: 4, 10, 6, 17, 22, 20, 15
Árbol N-ario
Un árbol n-ario es una estructura recursiva, en la cual cada elemento tiene un númerocualquiera de árboles n-arios asociados. En la siguiente figura se muestra elformalismo gráfico escogido para representar este objeto abstracto. En él se haceexplícita la raíz, y cada uno de los n subárboles que tiene asociados. Un árbol vacío serepresenta con el símbolo .
Los recorridos principales son:
inorden( a ) = inorden( a1 ), e, inorden( a2 ), ..., inorden( an )
preorden( a ) = e, preorden( a1 ), ..., preorden( an )
postorden( a ) = postorden( a1 ), ...., postorden( an ), e
Ejemplo Árbol N-ario
Para el árbol n-ario de la figura:
El orden del árbol es 4El orden del elemento a es 3preorden = a, b, c, e, f, d, g, j, k, l, m, h, iinorden = b, a, e, c, f, j, g, k, l, m, d, h, ipostorden = b, e, f, c, j, k, l, m, g, h, i, d, aNiveles = a, b, c, d, e, f, g, h, i, j, k, l, mAltura = 4Peso = 13Los hijos de g son los elementos j, k, l, mEl ancestro común más próximo de k y h es d
EJEMPLO CASO REAL
Considere el caso de una fábrica, en la cual se quiere hacer elmodelaje de un automóvil en términos de sus componentes: cadapieza debe estar relacionada con todos los elementos que laconstituyen, como se sugiere en la siguiente figura vemos que esinsuficiente un árbol binario para manejar este tipo de estructuras,ya que el número de hijos no se puede restringir a dos.
ARBOLES 2-3
Son un tipo de árbol balanceado por altura (height balanced). Sedefine como un árbol en dónde todos los nodos no-terminalestienen 2 ó 3 descendientes y todos los nodos hoja tienen lamisma longitud (path length) o distancia desde la raíz.
Fueran introducidos con el objeto de mejorar el tiempo deacceso en estructuras de datos manejadas en memoriasecundaria, en las cuales el número de consultas a un registroinfluye de manera determinante en el tiempo de respuesta de laoperación.
La estructura de árbol 2-3 exige que el crecimiento no se haga anivel de las hojas (aunque la inserción sigue siendo en las hojas),sino que a nivel de la raíz, ya que todas las hojas se debenmantener siempre en el mismo nivel. El proceso global deinserción comienza por localizar la hoja en la cual se debeagregar el elemento.
PROPIEDADES 2-3
Un árbol 2-3 permite que un nodo tenga dos o tres hijos. Estacaracterística le permite conservar el balanceo tras insertar oborrar elementos, por lo que el algoritmo de búsqueda es casitan rápido como en un árbol de búsqueda de altura mínima. Porotro lado, es mucho más fácil de mantenerlo.
En un árbol 2-3, los nodos internos han de tener 2 ò 3 hijos ytodas las hojas han de estar al mismo nivel. De forma recursivase pueden definir como:A es un árbol 2-3 de altura h si:•A es un árbol vacío (un árbol 2-3 de altura 0), o•A es de la forma (r, I, D), donde r es un nodo e I y D son árboles2-3 de altura h − 1, o•A es de la forma (r, I, C, D), donde r es un nodo e I, C y D sonárboles 2-3 de altura h-1.
PROPIEDADES 2-3
Para usar estos árboles de forma eficiente en las búsquedas, hayque introducir un orden entre los elementos por lo que un árbolA es un árbol 2-3 de búsqueda de altura h si:•Todos los elementos de I son menores que r y todos loselementos de D son mayores que r.
•A es de la forma (r1, r2,I, C, D), donde r1 _ r2, I, Ac y D sonárboles 2-3 de búsqueda de altura h-1 y todos los elementos de Ison menores que r1, todos los elementos de C son mayores quer1 y menores que r2 y todos los elementos de D son mayoresque r2.
•Esta definición implica que el número de hijos de un nodo essiempre uno más que el número de elementos que contiene esenodo. En el caso de las hojas se permiten uno o dos elementosen el nodo. Desde ahora nos referiremos a los árboles 2-3 debúsqueda simplemente como árboles 2-3.
ESPECIFICACIÓN
La especificación del tipo ARBOL23 es muy similar a la de otrosárboles con una diferencia que es la definición de tresoperaciones generadoras en lugar de dos. Árbol Vacío es laoperación que genera un árbol sin elementos, como en los otrostipos y hay una operación, consArbol, que genera un árbol 2-3cuya raíz tiene un solo elemento y dos hijos y otra, cons3Arbol,que genera un árbol 2-3 cuya raíz tiene dos elementos y treshijos. Estas dos últimas operaciones son los generadores que semantienen ocultos al usuario.
EJEMPLOSA continuación se ofrecen ejemplos concretos para ilustrar elmecanismo de inserción:
Ejemplo de eliminar :
Vamos a eliminar 65 de este árbol,
65 es un nodo interno.
65 se encuentra ahora en una
ubicación no válida, lo vamos a
eliminar
Ahora haremos lo mismo
para eliminar 70 que es un
nodo interno
70 se encuentra ahora en
una ubicación no válida,
porque vamos a eliminarlo
La eliminación de la hoja
nos deja con un 2-3 árbol
no valido
Combinar para fijar los
nodos del árbol
Ahora eliminamos, 100 es hoja ya se puede quitar
BIBLIOGRAFÍA
•WIKIPEDIA. Árbol 2-3. {En línea}. http://es.wikipedia.org/wiki/%C3%81rbol_2-3 5 de Enero de 2012.
•CUEVAS FLORES, Ricardo. Estructura y Organización de Datos. {En línea}. http://estructuradedatos09111005.blogspot.com/2011/11/arboles.html. 9 de Noviembre de 2011.
•VILLALOBOS, Jorge. Diseño y Manejo de Estructuras de Datos en C. McGraw-Hill. Enero 1996.