Sie sind auf Seite 1von 21

INGENIERIA DE SEGURIDAD INDUSTRIAL Y MINERA

CURSO: Matematicas Discretas

TEMA: Avance de trabajo final Recorrido en Arboles

PROFESOR: Angel Bautista

PRESENTADO POR: Claudia Cruz Gutierres Edder Montesinos Barra Edgar torres Monge Roxana Cama Valencia Luis Jerson Carrasco

GRUPO: B

T/M

AULA: 7

2013

INTRODUCCIN

Con esta investigacin comenzamos a ver una de las estructuras ms importantes en el procesamiento de informacin, veremos los conceptos generales y algunas implementaciones. El rbol es una estructura de datos muy importante en informtica y en ciencias de la computacin, se trata de estructuras no lineales. Los rboles se utilizan para representar frmulas algebraicas, organizar objetos en orden de tal forma que las bsquedas sean muy eficientes y en aplicaciones diversas como inteligencia artificial o algoritmos de cifrado. Casi todos los sistemas operativos almacenan sus archivos en rboles o estructuras similares a rboles. Tambin se utilizan en el diseo de compiladores, procesamiento de texto y algoritmos de bsqueda.

RBOLES GENERALES Y TERMINOLOGA

De manera intuitiva, el concepto de rbol implica una estructura en la que los datos se organizan de modo que los elementos de informacin estn relacionados entre s a travs de ramas. Un rbol consta de un conjunto finito de elementos, llamados nodos y de un conjunto finito de lneas dirigidas, llamadas ramas que conectan los nodos. Un rbol es un conjunto de uno o ms nodos tales que: hay un nodo especial llamado raz y los restantes se dividen en n 0 conjuntos disjuntos tal que cada uno de estos conjuntos es un rbol y se los conoce como subrboles.

TERMINOLOGA

Adems del nodo raz, existen muchos trminos utilizados en la descripcin de los atributos de un rbol, por ejemplo un nodo que tiene subrboles se conoce como padre de ellos, y los nodos sucesores se llaman hijos. De este modo los hijos de un nodo y los hijos de estos se denominan descendientes as como el padre y los abuelos se conocen como ascendientes. Los nodos del mismo padre suelen llamarse hermanos y los nodos que no tienen descendientes se conocen como hojas. Se define nivel de un nodo a la distancia que ese nodo tiene al nodo raz, consecuente la raz tiene nivel igual cero. Un camino es una secuencia de nodos en los que cada nodo es adyacente al siguiente. Cada nodo del rbol puede ser alcanzado siguiendo un nico camino que comienza en el nodo raz. La altura o profundidad de un rbol es el nivel de la hoja del camino ms largo desde la raz ms uno. Por definicin la altura de un rbol vaci es cero. Un rbol se divide en subrboles, que es cualquier estructura conectada por debajo del nodo raz. Cada nodo de un rbol es la raz de un subrbol que se define por el nodo y todos sus descendientes.

1.- OBJETIVO GENERAL Sistematizar la informacin logrando asi un mejor desarrollo en la rapidez y funcionamiento en la organizacin del conocimiento y simplificar en el proceso factores que impidan la resolucin del problema.

2.- OBJETIVOS ESPECIFICOS


Continuar con la investigacin que se realizara durante las semanas posteriores en la lnea de persistir en un mejoramiento continuo.

Analizar continuamente el avance de la investigacin previniendo as de posibles errores en la recoleccin de informacin.

3. MARCO TEORICO

CONCEPTO DE ARBOL Un rbol es una estructura de datos no lineal, en la que cada elemento (nodo) tiene un nico elemento anterior denominado padre (menos la raz, que no tiene ninguno), y puede tener ms de un elemento siguiente (hijos del nodo). Los rboles son estructuras jerrquicas que permiten organizar la informacin de acuerdo a unos criterios de jerarqua. Ejemplo.-

TERMINOLOGIA. Relacin entre nodos: El que est por encima se llama padre y, el de abajo, hijo. El nodo raz es el que no tiene padre. Los nodos hoja son aquellos que no tienen hijos. Nodos hermanos son aquellos que comparten padre. Un nodo interior es aquel que tiene hijos. En caso contrario, se dice que el nodo es exterior. La profundidad de un nodo es el nmero de relaciones padre-hijo que hay que seguir entre el nodo y la raz del rbol. Un nivel es un conjunto de nodos que se encuentran a la misma profundidad. La altura de un nodo es el nmero de relaciones padre-hijo que hay que seguir entre el nodo y su descendiente ms lejano. Se llama estructura del rbol a la altura de la raz.

Un subrbol es un nodo de un rbol junto con todos sus descendientes. Un rbol parcial es un rbol que contiene nicamente algunos nodos del rbol original.

Antes de continuar avanzando en las caractersticas y propiedades de los rboles, veamos algunos trminos importantes asociados con el concepto de rbol: Grado de un nodo: Es el nmero de subrboles que tienen como raz ese nodo (el nmero de subrboles que "cuelgan" del nodo). Nodo terminal: Nodo con grado 0, no tiene subrboles. Grado de un rbol: Grado mximo de los nodos de un rbol. Hijos de un nodo: Nodos que dependen directamente de ese nodo, es decir, las races de sus subrboles. Padre de un nodo: Antecesor directo de un nodo, nodo del que depende directamente. Nodos hermanos: Nodos hijos del mismo nodo padre. Camino: Sucesin de nodos del rbol

Antecesores de un nodo: Todos los nodos en el camino desde la raz del rbol hasta ese nodo. Nivel de un nodo: Longitud del camino desde la raz hasta el nodo. El nodo raz tiene nivel 1. Altura (profundidad) de un rbol: Nivel mximo de un nodo en un rbol. Longitud de camino de un rbol: Suma de las longitudes de los caminos a todos sus componentes. Bosque: Conjunto de rboles disjuntos.

La representacin de un rbol general depender de su grado, es decir, del nmero de relaciones mximo que puede tener un nodo del rbol. Resulta ms simple la representacin y manipulacin de una estructura rbol cuando el grado de ste es fijo y no variable. Por esa razn, para introducir los aspectos ms concretos de la manipulacin de rboles, vamos a tratar con un tipo particular de rboles de grado fijo, los llamados rboles binarios.

RECURSOS DE CONTEO: LISTAS Y RBOLES Para ver estos recursos ser ms fcil si empezamos con un 1. Ejemplo: En el men de un restaurante se tienen dos entradas, tres platos principales y cuatro bebidas Cuntas posibles combinaciones de comidas diferentes constan de un plato principal y una bebida? Primeramente veamos el men: Entrada Plato Principal Bebidas Nachos (N), Hamburguesa (H), Te (T) Ensalada (E) Hamburguesa con queso (Q) Leche (L) Filete de Pescado (F) Caf (C) Cerveza de Raz (R) Si listamos todas las posibles comidas que constan de un plato principal y una bebida.

HT, HL, HC, HR, QT, QL, QC, QR, FT, FL, FC, FR Se ve que hay 12 comidas diferentes. Ya que hay 3 platos principales y 4 bebidas, por la regla del producto 3 4 = 12 comidas diferentes. Adems existen 24 comidas diferentes que constan de una entrada, un plato principal y una bebida, las cuales son: NHT, NHL, NHC, NHR, NQT, NQL, NQC, NQR, NFT, NFL, NFC, NFR EHT, EHL, EHC, EHR, EQT, EQL, EQC, EQR, EFT, EFL, EFC, EFR

Y se observa que como hay dos entradas, tres platos principales y cuatro bebidas, se tiene, que por la regla del producto, existen 2 3 4 = 24 comidas diferentes. Se pueden representar las posibles comidas no solamente por listas que sirven para enumerar las posibles opciones, tambin se pueden representar mediante rboles, como se muestra a continuacin.

En la figura anterior se representan las 12 posibles opciones de elegir una comida que conste de un plato principal y de una bebida. -48- En cambio el siguiente rbol muestra las 24 diferentes opciones que constan de una entrada, un plato principal y una bebida.

C R

L C

T L C R

C R

L C

T L C R

ARBOLES BINARIOS Los rboles binarios constituyen un tipo particular de rboles de gran aplicacin. Estos rboles se caracterizan porque no existen nodos con grado mayor que dos, es decir, un nodo tendr como mximo dos subrboles. DEFINICION.- Un rbol binario es un conjunto finito de nodos que puede estar vaco o consistir en un nodo raz y dos rboles binarios disjuntos, llamados subrbol izquierdo y subrbol derecho. En general, en un rbol no se distingue entre los subrboles de un nodo, mientras que en un rbol binario se suele utilizar la nomenclatura subrbol izquierdo y derecho para identificar los dos posibles subrboles de un nodo determinado. De forma que, por ejemplo, los dos siguientes rboles, a pesar de contener la misma informacin son distintos por la disposicin de los subrboles:

Antes de pasar a la representacin de los rboles binarios, vamos a hacer algunas observaciones relevantes acerca del nmero y caractersticas de los nodos en este tipo de rboles. Lema 1: El nmero mximo de nodos en el nivel i de un rbol binario es 2i-1, i1, y el Nmero mximo de nodos en un rbol binario de altura k es 2k-1, k1.

Lema 2: Para cualquier rbol binario no vaco, si n0 es el nmero de nodos terminales y n2 es el nmero de nodos de grado 2, entonces se cumple que n0=n2+1.

Igualmente, para poder entender alguna de las formas de representacin de los rboles binarios, vamos a introducir dos nuevos conceptos, lo que se entiende por rbol binario lleno y por rbol binario completo.

Definicin: Se dice que un rbol binario est lleno si es un rbol binario de profundidad k que tiene 2k-1 nodos. Un rbol binario lleno es aquel que contiene el nmero mximo de posibles nodos. Como en estos casos no existen subrboles vacos excepto para los nodos terminales, es posible realizar una representacin secuencial eficiente de este tipo de rboles. Esta representacin suele implicar la numeracin de los nodos. La numeracin se realiza por niveles y de izquierda a derecha. FUNDAMENTOS. Al igual que hemos visto en el resto de temas, empezaremos por introducir el tipo abstracto de datos rbol Binario. Como en las otras estructuras de datos vistas, empezaremos viendo las operaciones que Consideraremos bsicas para la manipulacin de los rboles. Y al igual que hicimos en los otros TAD tendremos diferentes tipos de operaciones: De consulta sobre la informacin del TAD: En este caso, se deber poder consultar tanto la informacin guardada en el nodo raz como los hijos del nodo raz (Informacin, HijoIzdo, HijoDcho.) De consulta sobre la propia estructura: Si la estructura contiene informacin, o por el contrario, est vaca (rbol Vaco.)

El hecho de aadir y eliminar una cierta informacin del rbol, es un problema ciertamente complejo, que depende de diferentes criterios y que es difcil de abordar desde el punto de vista general. El problema de la eliminacin de informacin lo veremos de forma ms concreta ms adelante. La adicin de informacin, la veremos desde un punto de vista concreto en este momento, aunque se puede ver de diferentes maneras (veremos otros puntos de vista ms adelante, en rboles binarios de bsqueda y en montculos.) Para aadir informacin: En este caso, la manera en que consideraremos que se puede aadir informacin ser creando un nuevo rbol a partir de dos rboles ya existentes y con la informacin que deseamos aadir en el nodo raz, cada subrbol ser un hijo del nuevo rbol (Hacer Arbol.)

Resumiendo, estas operaciones quedaran de la siguiente forma: Iniciar Arbol ( ) Arbol Binario Arbo Vacio (Arbol Binario) Boolean Hacer Arbol (Arbol Binario, Valor, Arbol Binario) Arbol Binario Hijo Izquierdo (Arbol Binario) Arbol Binario Hijo Derecho (Arbol Binario) Arbol Binario Informacin (Arbol Binario) Valor

Y cumplen los siguientes axiomas: ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( )) )) )) )) )) )) )) ))

OPERACIONES CON ARBOLES BINARIOS: RECORRIDO DE ARBOLES BINARIOS. Si se desea manipular la informacin contenida en un rbol, lo primero que hay que saber es cmo se puede recorrer ese rbol, de manera que se acceda a todos los nodos del rbol solamente una vez. El recorrido completo de un rbol produce un orden lineal en la informacin del rbol. Este orden puede ser til en determinadas ocasiones. Cuando se recorre un rbol se desea tratar cada nodo y cada subrbol de la misma manera. Existen entonces seis posibles formas de recorrer un rbol binario: (1) nodo - subrbol izquierdo - subrbol derecho (2) subrbol izquierdo - nodo - subrbol derecho (3) subrbol izquierdo - subrbol derecho - nodo (4) nodo - subrbol derecho - subrbol izquierdo (5) subrbol derecho - nodo - subrbol izquierdo (6) subrbol derecho - subrbol izquierdo nodo Si se adopta el convenio de que, por razones de simetra, siempre se recorrer antes el subrbol izquierdo que el derecho, entonces tenemos solamente tres tipos de recorrido de un rbol (los tres primeros en la lista anterior).

Estos recorridos, atendiendo a la posicin en que se procesa la informacin del nodo, reciben, respectivamente, el nombre de recorrido prefijo, infijo y posfijo. Los tres tipos de recorrido tienen una definicin muy simple si se hace uso de una expresin recursiva de los mismos.

RECORRIDO EN ARBOLES Se llama recorrido de un rbol al orden establecido en el que se debe visitar los nodos de un rbol. Existen varios tipos de recorridos, donde los ms comunes son: Preorden: Raz > Hijo Izquierda > Hijos Derecha. Inorden: Hijo Izquierda > Raz > Hijos Derecha. Postorden: Hijo Izquierda > Hijos Derecha > Raz. Por niveles: Nodos de un nivel, de izquierda a derecha. Pasar al siguiente nivel.

RECORRIDO EN PRE ORDEN

RECORRIDO EN INORDEN

RECORRIDO EN POSTORDEN

RECORRIDO POR NIVELES

ARBOLES BINARIOS Los rboles binarios son estructuras matemticas que organizan un conjunto de elementos. Supondremos en este ejercicio que en un mismo rbol no puede haber elementos repetidos. Cada elemento se almacena en un nodo. Algunos de los nodos pueden estar relacionados, y son estas relaciones las que definen el rbol. Definimos un rbol binario de la manera siguiente: El rbol vaco es un rbol binario que no contiene ningn nodo. Dados dos rboles binarios y y dado un elemento x, se puede formar un tercer rbol binario enraizando y con un nodo que almacene x. Diremos que el nuevo nodo que almacena x es la raz de , es el subrbol izquierdo de , y el subrbol derecho. Diremos tambin que la raz de es el hijo izquierdo de la raz de , la raz de es el hijo derecho de la raz de y, por consiguiente, la raz de es el padre de las races de ambos subrboles. En la figura siguiente se muestra un ejemplo de rbol binario:

A: raz del rbol A: padre de C y de E C: hijo izquierdo de A E: hijo derecho de A

Notemos pues que los nodos de un rbol binario pueden tener 0, 1 2 hijos. Dado un rbol binario con letras maysculas almacenadas en los nodos (es decir, con un mximo de 26 nodos, pues excluimos la '' y la ''), se define su recorrido en preorden como un listado de los elementos contenidos en sus nodos segn la definicin siguiente: Si es un rbol vaco, se da por finalizado su recorrido. Si no, el primer elemento del listado es el contenido en la raz de . A continuacin, aparecen en preorden los elementos del subrbol izquierdo de . Por ltimo, aparecen en preorden los elementos del subrbol derecho de . El recorrido en preorden del rbol de la figura anterior es: A C B E F D. Nos proponemos construir un programa que calcule el recorrido en preorden de un rbol binario. El rbol residir en el fichero "ARB1.DAT", que consta de una serie de lneas que definen qu nodos son padres de cules otros. Cada lnea consta de exactamente de cinco caracteres: Una letra mayscula que identifica un nodo. Un carcter blanco. Una letra mayscula que identifica otro nodo. Un carcter blanco. Un smbolo que puede ser: o bien '<', que indica que el segundo nodo es hijo izquierdo del primero, o bien '>', que indica que el segundo nodo es hijo derecho del primero. Puede suponerse que la entrada permite construir un rbol binario correcto (es decir, donde todo nodo tenga un nico padre, excepto uno de ellos que es la raz; donde todo nodo tiene como mximo un hijo izquierdo y un hijo derecho; y donde no hay caracteres repetidos). El rbol de la figura anterior puede representarse con el fichero de entrada siguiente (o con cualquier otro que sea una simple permutacin de sus lneas):

ARB1.DAT CB> EF< AC< ED> AE>

La salida "ARB1.RES" ser una nica lnea que mostrar el listado resultante de recorrer el rbol en preorden, escribiendo un carcter blanco despus de cada contenido de nodo. 2.- Definimos el recorrido en inorden de un rbol binario A de manera similar al preorden: Si no, primero aparecen en inorden los elementos del subrbol izquierdo de . A continuacin, aparece el contenido en la raz de . Por ltimo, aparecen en inorden los elementos del subrbol derecho de . El recorrido en inorden del rbol de la figura anterior es: C B A F E D. Puede demostrarse que un rbol binario se puede reconstruir a partir de sus recorridos en preorden e inorden, y se pide un programa que efecte este proceso. El fichero de entrada, "ARB2.DAT", contendr dos lneas, la primera con el recorrido en preorden y la segunda con el recorrido en inorden. En cada una de estas lneas aparecer un carcter blanco despus de cada contenido de nodo. Puede suponerse la correccin de este juego de pruebas. El fichero de salida "ARB2.RES" contiene el rbol en el mismo formato que el fichero de entrada "ARB1.DAT" del apartado anterior, con la nica diferencia que se exige una ordenacin determinada en las lneas de salida: deben estar ordenadas alfabticamente segn el primer elemento y, si un nodo tiene los dos hijos, debe aparecer antes el contenido del hijo izquierdo que el del hijo derecho.

A continuacin se muestran los ficheros correspondientes al rbol ejemplo del apartado anterior:

ARB2.DAT S ACBEFD CBAFED

ARB2.RES

AC < AE > CB> EF< ED>

3.- Se pretende ahora obtener todos los rboles que tengan un mismo recorrido en preorden para un conjunto de elementos dado. El fichero de entrada "ARB3.DAT" estar formado por una nica lnea que contendr letras maysculas (sin repeticin) con un blanco a continuacin de cada una de ellas, representando un recorrido en preorden. El fichero de salida "ARB3.RES" tendr una lnea inicial que dir cuntos rboles pueden formarse que tengan ese recorrido en inorden (representacin del entero mediante dgitos caracteres entre el 0 y el 9) y, a continuacin, la representacin de todos esos rboles con el mismo formato que el fichero "ARB1.DAT" del primer apartado. Detrs de cada rbol habr una lnea que contendr un nico carcter '$'. Los rboles deben aparecer en la salida por orden alfabtico de su recorrido inorden. En cada rbol individual, se exige la misma ordenacin de sus lneas que en el apartado anterior: deben estar ordenadas alfabticamente por el contenido del primer nodo y, si un nodo tiene los dos hijos, debe aparecer antes el contenido del hijo izquierdo que el del hijo derecho.

APLICACION DE ARBOLES BINARIOS

Un rbol binario es una estructura de datos til cuando se trata de hacer modelos de procesos en donde se requiere tomar decisiones en uno de dos sentidos en cada parte del proceso. Por ejemplo, supongamos que tenemos un arreglo en donde queremos encontrar todos los duplicados. Esta situacin es bastante til en el manejo de las bases de datos, para evitar un problema que se llama redundancia. Una manera de encontrar los elementos duplicados en un arreglo es recorrer todo el arreglo y comparar con cada uno de los elementos del arreglo. Esto implica que si el arreglo tiene elementos, se deben hacer comparaciones, claro, no es mucho problema si es un nmero pequeo, pero el problema se va complicando ms a medida que aumenta.

Si usamos un rbol binario, el nmero de comparaciones se reduce bastante, veamos cmo. El primer nmero del arreglo se coloca en la raz del rbol (como en este ejemplo siempre vamos a trabajar con rboles binarios, simplemente diremos rbol, para referirnos a un rbol binario) con sus subrboles izquierdo y derecho vacos. Luego, cada elemento del arreglo se compara son la informacin del nodo raz y se crean los nuevos hijos con el siguiente criterio:

Si el elemento del arreglo es igual que la informacin del nodo raz, entonces notificar duplicidad. Si el elemento del arreglo es menor que la informacin del nodo raz, entonces se crea un hijo izquierdo. Si el elemento del arreglo es mayor que la informacin del nodo raz, entonces se crea un hijo derecho.

Una vez que ya est creado el rbol, se pueden buscar los elementos repetidos. Si x el elemento buscado, se debe recorrer el rbol del siguiente modo: Sea k la informacin del nodo actual p. Si entonces cambiar el nodo actual a right(p), en caso contrario, en caso de que informar una ocurrencia duplicada y en caso de que cambiar el nodo actual a left(p).

Figura 28: rbol binario para encontrar nmeros duplicados

Para saber el contenido de todos los nodos en un rbol es necesario recorrer el rbol. Esto es debido a que solo tenemos conocimiento del contenido de la direccin de un nodo a la vez. Al recorrer el rbol es necesario tener la direccin de cada nodo, no necesariamente todos al mismo tiempo, de hecho normalmente se tiene la direccin de uno o dos nodos a la vez; de manera que cuando se tiene la direccin de un nodo, se dice que se visita ese nodo.

Aunque hay un orden preestablecido (la enumeracin de los nodos) no siempre es bueno recorrer el rbol en ese orden, porque el manejo de los apuntadores se vuelve ms complejo. En su lugar se han adoptado tres criterios principales para recorrer un rbol binario, sin que se omita cualquier otro criterio diferente. Los tres criterios principales para recorrer un rbol binario y visitar todos sus nodos son, recorrer el rbol en: Preorden: Se ejecutan las operaciones: 1. Visitar la raz 2. recorrer el subrbol izquierdo en preorden 3. recorrer el subrbol derecho en preorden Entreorden: Se ejecutan las operaciones: 1. recorrer el subrbol izquierdo en entreorden 2. Visitar la raz 3. recorrer el subrbol derecho en entreorden Postorden: Se ejecutan las operaciones: 1. recorrer el subrbol izquierdo en postorden 2. recorrer el subrbol derecho en postorden 3. Visitar la raz Al considerar el rbol binario que se muestra en la figura 28 usando cada uno de los tres criterios para recorrer el rbol se tienen las siguientes secuencias de nodos:

En preorden:

En entreorden:

En postorden: Esto nos lleva a pensar en otra aplicacin, el ordenamiento de los elementos de un arreglo. Para ordenar los elementos de un arreglo en sentido ascendente, se debe construir un rbol similar al rbol binario de bsqueda, pero sin omitir las coincidencias. El arreglo usado para crear el rbol binario de bsqueda fue
<14,15,4,9,7,18,3,5,16,4,20,17,9,14,5>

El rbol de ordenamiento es el que se muestra en la figura 29

Figura 29: rbol binario para ordenar una secuencia de nmeros

Para ordenar los elementos de este arreglo basta recorrer el rbol en forma de entre orden. Cul sera el algoritmo para ordenarlo de manera descendente?

BIBLIOGRAFIA

http://computacion.cs.cinvestav.mx/~acaceres/courses/estDatosCPP/node53.html
http://matematicasparacomputadora.weebly.com/-645-recorrido-de-un-aacuterbolpreorden-inorden-postorden.html http://eisc.univalle.edu.co/materias/Matematicas_Discretas_2/pdf/recorrido_arbol_02.p df. http://computacion.cs.cinvestav.mx/~acaceres/courses/index.html Abdiel Cceres Gonzlez jun-02-2005.