Sustentacion arboles

Preview:

Citation preview

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.