Sustentacion arboles

22
PROGRAMACIÓN LÓGICA Y FUNCIONAL NILTON SANCHEZ RAFAEL REYES FUNDACIÓN UNIVERSITARIA SAN MARTIN INGENIERIA DE SISTEMAS

Transcript of Sustentacion arboles

Page 1: Sustentacion arboles

PROGRAMACIÓN LÓGICA Y FUNCIONAL

NILTON SANCHEZRAFAEL REYES

FUNDACIÓN UNIVERSITARIA SAN MARTIN

INGENIERIA DE SISTEMAS

Page 2: Sustentacion arboles

Á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.

Page 3: Sustentacion arboles

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.

Page 4: Sustentacion arboles

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.

Page 5: Sustentacion arboles

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);

}}

Page 6: Sustentacion arboles

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);}

}

Page 7: Sustentacion arboles

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

}}

Page 8: Sustentacion arboles

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

Page 9: Sustentacion arboles

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

Page 10: Sustentacion arboles

Á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

Page 11: Sustentacion arboles

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

Page 12: Sustentacion arboles

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.

Page 13: Sustentacion arboles

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.

Page 14: Sustentacion arboles

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.

Page 15: Sustentacion arboles

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.

Page 16: Sustentacion arboles

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.

Page 17: Sustentacion arboles

EJEMPLOSA continuación se ofrecen ejemplos concretos para ilustrar elmecanismo de inserción:

Page 18: Sustentacion arboles

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

Page 19: Sustentacion arboles

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

Page 20: Sustentacion arboles

La eliminación de la hoja

nos deja con un 2-3 árbol

no valido

Combinar para fijar los

nodos del árbol

Page 21: Sustentacion arboles

Ahora eliminamos, 100 es hoja ya se puede quitar

Page 22: Sustentacion arboles

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.