Professional Documents
Culture Documents
ANZOATEGUI
rboles
INTEGRANTES: ARTEAGA, FREDDY PROFESOR: ASDRBAL RODRGUEZ ESTRUCTURAS DISCRETAS Y GRAFOS SECCIN SN C.I. 24.232.993 CENTENO, ANDREINA C.I 18.511.499 EMIR RODRIGUEZ C.I. 15.677.823 ULQUIORA, CRISMELIS 20.343.159 C.I
[Fecha]
INDICE
Pg. INTRODUCCION.3 DESARROLLO.4 RBOLES, DEFICIONES4 PROPIEDADES.....5-6 CARACTERISTICAS...6 TIPOS DE RBOLES.7-12 RBOL EN EXPANSION.7-8 RBOL DE EXPASION MINIMO..8 ARBOLES BINARIOS..9 ARBOLES 2-3-4..9-10 ARBOLES 2-3....10-11 ARBOLES ROJO-NEGRO....11-12 RECORRIDO DE RBOLES...12-15 ISOMORFISMO DE UN ARBOL..15 PROGRAMAS DE RBOLES..16-21 CONCLUSION...22 BIBLIOGRAFIA.....23
INTRODUCCION
En ciencias de la informtica, un rbol es una estructura de datos ampliamente usada que imita la forma de un rbol (un conjunto de nodos conectados). Un nodo es la unidad sobre la que se construye el rbol y puede tener cero o ms nodos hijos conectados a l. Se dice que un nodo es padre de un nodo si existe un enlace desde ). Slo puede haber un nico hasta (en ese caso, tambin decimos que es hijo de
nodo sin padres, que llamaremos raz. Un nodo que no tiene hijos se conoce como hoja. Los dems nodos (tienen padre y uno o varios hijos) se les conoce como rama. Una sucesin de nodos del rbol, de forma que entre cada dos nodos consecutivos de la sucesin haya una relacin de parentesco, decimos que es un recorrido rbol. Existen dos recorridos tpicos para listar los nodos de un rbol: primero en profundidad y primero en anchura. En el primer caso, se listan los nodos expandiendo el hijo actual de cada nodo hasta llegar a una hoja, donde se vuelve al nodo anterior probando por el siguiente hijo y as sucesivamente. En el segundo, por su parte, antes de listar los nodos de nivel haber listado todos los de nivel (a distancia aristas de la raz), se deben . Otros recorridos tpicos del rbol son preorden,
postorden e inorden. Finalmente, puede decirse que esta estructura es una representacin del concepto de rbol en teora de grafos. Un rbol es un grafo conexo y acclico.
rboles, definicin:
El concepto general 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. El rbol genealgico es el ejemplo tpico ms representativo del concepto de rbol general. Definicin 1: un rbol es un grafo no dirigido conexo sin ciclos. Un bosque es un grafo no dirigido sin ciclos pero no conexo. Una definicin equivalente es que un bosque es una unin disjunta de rboles (de aqu el nombre). Un rbol sueles recibir el nombre de rbol libre.
Figura 1. Ejemplos de grafo, rbol, bosque, ntese que el rbol no presenta ciclos Definicin 2 un rbol consta de un conjunto finito de elementos, llamados nodos y un conjunto finito de lneas dirigidas llamadas ramas que conectan los nodos. Definicin 3: Un rbol es una estructura no lineal en la que cada nodo puede apuntar a uno o varios nodos.
Figura 2. rbol con nodos y ramas Demostracin: Sea G un rbol. Como, por definicin, G es conexo, entonces existe un camino elemental entre todo par de vrtices de G. Ahora bien, este camino es nico: si u y v son dos vrtices cualesquiera de G y suponemos que existen dos caminos
4
distintos de u a v, al unir dichos caminos se formara un subgrafo de G que contendra un ciclo, debido a que existen dos caminos diferentes, hecho que nos lleva a una contradiccin. Recprocamente, si todo par de vrtices de G est a unido por un solo camino elemental. Obviamente G es un grafo conexo y, adems, G no contiene ciclos porque si existiera un ciclo todos los pares de vrtices en l se podran unir con dos caminos distintos.
Definiciones Complementarias
-Un nodo es hoja si no es padre de ningn nodo (vrtice de grado 1). -Un rbol que no tenga ningn nodo es un rbol nulo. -Un rbol es ordenado si existe una relacin de orden entre los hijos de un nodo. -Un rbol binario es un rbol donde cada nodo tiene como mximo dos hijos. De igual forma podemos definir un rbol k-ario, donde cada nodo tiene a lo sumo k hijos. -Un rbol binario ordenado es un rbol donde cada nodo tiene un hijo izquierdo y un hijo derecho.
Un rbol T (libre) es una grfica simple que satisface lo siguiente; si v y w son vrtices en T, existe una trayectoria simple nica de v a w. Se muestra un ejemplo: Un rbol con raz es un rbol en el que un vrtice especfico se designa como raz, se presenta un ejemplo: Como la trayectoria simple de la raz a cualquier vrtice dado es nica, cada vrtice est en un nivel determinado de manera nica. As, el nivel de la raz es el nivel 0, los vrtices que estn debajo de la raz estn en el nivel 1, y as sucesivamente. Por lo tanto podemos decir que: el nivel de un vrtice v es la longitud de la trayectoria simple de la raz a v. La altura de un rbol con raz es el nmero mximo de nivel que ocurre.
Teorema:
Si G = (V, A) es un rbol de n vrtices y q aristas, entonces: Para todo par de vrtices x e y existe un nico camino de x a y. Todas las aristas de G son puentes.
6
q=n-1. Todo rbol (con ms de un vrtice) tiene al menos dos hojas (vrtices de grado uno).
Un rbol con raz es un rbol en el que un vrtice especfico se designa como raz, se presenta un ejemplo: Como la trayectoria simple de la raz a cualquier vrtice dado es nica, cada vrtice est en un nivel determinado de manera nica. As, el nivel de la raz es el nivel 0, los vrtices que estn debajo de la raz estn en el nivel 1, y as sucesivamente. Por lo tanto podemos decir que: el nivel de un vrtice v es la longitud de la trayectoria simple de la raz a v. La altura de un rbol con raz es el nmero mximo de nivel que ocurre. Ejemplo: Tomando como referencia el grfico del rbol con raz determine el nivel del vrtice a, b, g y determine tambin la altura del rbol. Para el vrtice a su nivel es 0 Para el vrtice b su nivel es 1 Para el vrtice g su nivel es 2 La altura del rbol es de 2.
rboles Binarios
Estn entre los tipos de rboles binarios especiales con raz, su caracterstica es que todo vrtice tiene cuando mucho dos hijos. Donde cada hijo se designa como un hijo izquierdo o un hijo derecho, adems, su posicin en el rbol los identifica. Formalizando se dice que un rbol binario es un rbol con raz en el que cada vrtice tiene ningn hijo, un hijo o dos hijos. Si el vrtice tiene un hijo se designa como un hijo izquierdo o como derecho (pero no ambos). Si un vrtice tiene dos hijos, un hijo se designa como hijo izquierdo y el otro como hijo derecho. Un rbol binario completo es un rbol binario en el que cada vrtice tiene dos o cero hijos.
rboles 2-3-4
Como una forma de eliminarlas bsquedas exhaustivas de los rboles binarios existen los rboles 2-3-4. Estos son rboles en cuyos nodos se permite tener ms de una clave al mismo tiempo. Los rboles binarios tienen mximo 2 hijos (derecho e izquierdo). Si se le permite al nodo tener 2 valores, este podr tener 3 ligas a subrboles uno con 3 valores podr tener 4 ligas. Un rbol con estas caractersticas puede contener entonces nodos con 2, 3 o 4 ligas, de ah que se les llama rboles 2-3-4. En los rboles 2-3-4 todos los subrboles tienen la misma altura y estn siempre balanceados. Estos rboles son muy atractivos para el almacenamiento y recuperacin de claves, sin embargo son un tanto complicados de implementar.
9
Figura 7. rbol 2-3-4, entre ms aumenta si nivel se ramifica en cada vez ms ej.
rboles 2-3:
No confundirlos con los rboles2-3-4. Son un tipo de rbol balanceado por altura (height balanced).Se define como un rbol en dnde todos los nodos no-terminales tienen 2 3 descendientes y todos los nodos hoja tienen la misma longitud (path length) o distancia desde la raz. En estos rboles slo las hojas contienen la informacin (valores). Los nodos noterminales contienen indicadores: estos constan de 2 valores de los cuales el izquierdo es el mximo del subrbol izquierdo y el segundo valor es el valor mximo del subrbol central. Un rbol 2-3 permite que un nodo tenga dos o tres hijos. Esta caracterstica le permite conservar el balanceo tras insertar o borrar elementos, por lo que el algoritmo de bsqueda es casi tan rpido como en un rbol de bsqueda de altura mnima. Por otro lado, es mucho ms fcil de mantenerlo. En un rbol 2-3, los nodos internos han de tener 2 3 hijos y todas las hojas han de estar al mismo nivel. De forma recursiva se pueden definir como: A es un rbol 2-3 de altura h si: A es un rbol vaco (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 rboles 2-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 h1.
10
Para usar estos rboles de forma eficiente en las bsquedas, hay que introducir un orden entre los elementos por lo que un rbol A es un rbol 2-3 de bsqueda de altura h si:
Todos los elementos de I son menores que r y todos los elementos 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 bsqueda de altura h-1 y todos los elementos de I son menores que r1, todos los elementos de C son mayores que r1 y menores que r2 y todos los elementos de D son mayores que r2.
Esta definicin implica que el nmero de hijos de un nodo es siempre uno ms que el nmero de elementos que contiene ese nodo. En el caso de las hojas se permiten uno o dos elementos en el nodo. Desde ahora nos referiremos a los rboles 2-3 de bsqueda simplemente como rboles 2-3.
RBOLES ROJO-NEGROS Los rboles rojo-negro son rboles binarios en dnde cada nodo tiene un color ya sea rojo o negro. Estos rboles representan una manera de transformar un rbol 2-3-4 en uno binario. Esto se puede lograr utilizando los siguientes lineamientos: 1. Todo nodo '2' es transformado a un nodo negro con descendientes negros 2. Todo nodo '3' es transformado en un nodo negro con un hijo rojo y uno negro 3. Un nodo '4' es transformado a un nodo negro con dos hijos rojos.
11
Figura 9. Ejemplo rbol Rojo-Negro Esto satisface las siguientes propiedades: a) Todos los nodos tienen un color, ya sea rojo o negro. b) Toda hoja es negra. c) Ambos descendientes de un nodo rojo son siempre nodos negros d) Cada camino desde cualquier nodo hasta una hoja descendiente contiene el mismo nmero de nodos negros e) No hay dos nodos rojos adyacentes en un camino. Al nmero de nodos negros en el camino de un nodo a una hoja descendiente se le conoce como la altura-negra del nodo. Por consiguiente la altura-negra de un rbol rojonegro es la altura-negra de su raz.
Recorrido De Un rbol
Existen tres mtodos extras que permiten recorrer un rbol, ellos son: Recorrido pre orden: considera para el recorrido del rbol el siguiente orden (raz - izquierda - derecha) Recorrido entre-orden: considera para el recorrido del rbol el siguiente orden (izquierda -raz - derecha) Recorrido post-orden: considera para el recorrido del rbol el siguiente orden (izquierda derecha - raz) El recorrido de rboles refiere al proceso de visitar de una manera sistemtica, exactamente una vez, cada nodo en una estructura de datos de rbol. Tales recorridos estn clasificados por el orden en el cual son visitados los nodos. Los siguientes
12
algoritmos son descritos para un rbol binario, pero tambin pueden ser generalizados a otros rboles. Comparado a las estructuras de datos lineales como las listas enlazadas y arreglos unidimensionales, que tienen un mtodo cannico de recorrido, las estructuras arborescentes pueden ser recorridas de muchas maneras diferentes. Comenzando en la raz de un rbol binario, hay tres pasos principales que pueden ser realizados y el orden en la cual son realizados define el tipo de recorrido. Estos pasos (en ningn orden particular) son: ejecucin de una accin en el nodo actual (referido como visitando el nodo), recorriendo al nodo hijo de la izquierda, y recorriendo al nodo hijo de la derecha. As el proceso ms fcilmente descrito a travs de la recursin. Los nombres dados para un estilo particular de recorrido vienen de la posicin del elemento de raz con respecto a los nodos izquierdo y derecho. Imagine que los nodos izquierdo y derecho son constantes en espacio, entonces el nodo raz pudiera colocarse a la izquierda del nodo izquierdo (pre-orden), entre el nodo izquierdo y derecho (in-orden), o a la derecha del nodo derecho (post-orden). Con el fin de ilustrar, se asume que los nodos izquierdos tienen siempre prioridad sobre los nodos derechos. Este ordenamiento puede ser invertido mientras el mismo orden sea asumido para todos los mtodos de recorrido.
Recorrido Profundidad-Primero
rbol binario
Preorden: (raz, izquierdo, derecho). Para recorrer un rbol binario no vaco en preorden, hay que realizar las siguientes operaciones recursivamente en cada nodo, comenzando con el nodo de raz: 1. Visite la raz 2. Atraviese el sub-rbol izquierdo 3. Atraviese el sub-rbol derecho
Inorden: (izquierdo, raz, derecho). Para recorrer un rbol binario no vaco en inorden (simtrico), hay que realizar las siguientes operaciones recursivamente en cada nodo: 1. Atraviese el sub-rbol izquierdo
13
Postorden: (izquierdo, derecho, raz). Para recorrer un rbol binario no vaco en postorden, hay que realizar las siguientes operaciones recursivamente en cada nodo: 1. Atraviese el sub-rbol izquierdo - 2.Atraviese el sub-rbol derecho -3.Visite la raz En general, la diferencia entre preorden, inorden y postorden es cundo se
recorre la raz. En los tres, se recorre primero el sub-rbol izquierdo y luego el derecho.
En preorden (antes), la raz se recorre antes que los recorridos de los subrboles izquierdo y derecho
En inorden (en medio), la raz se recorre entre los recorridos de los rboles izquierdo y derecho.
En postorden (despus), la raz se recorre despus de los recorridos por el subrbol izquierdo y el derecho
Recorrido En Anchura-Primero
Los rboles tambin pueden ser recorridos en orden por nivel (de nivel en nivel), donde visitamos cada nodo en un nivel antes de ir a un nivel inferior. Esto tambin es llamado recorrido en anchura-primero o recorrido en anchura. Se selecciona un vrtice inicial s de G, al que se fija inicialmente un extremo de la cuerda y se marca s con el nivel 0. Se ajusta la longitud de la cuerda igual al de una arista. Se visitan y marcan con 1 todos los vrtices adyacentes a s que se alcanzan con esa longitud. Se repite el proceso anterior con una longitud de cuerda igual al de dos aristas. Todos los vrtices adyacentes al nivel 1 se marcan con el nivel 2. El recorrido termina cuando todos los vrtices tienen asignado un nivel.
El recorrido anchura-primero es una generalizacin del recorrido por niveles de un rbol. Se pueden identificar dos tipos de aristas durante el recorrido:
14
Aristas de descubrimiento: son aquellas aristas que conducen al descubrimiento de nuevos vrtices.
Las aristas de descubrimiento forman un rbol de cubrimiento de los componentes conectados del vrtice inicial s. ISOMORFISMO DE ARBOLES: En ocasiones 2 rboles, o en general, 2 grafos pueden tener representaciones graficas muy diferentes y sin embargo tener las mismas caractersticas, como muestra el siguiente ejemplo: Se han dado instrucciones que a 2 personas encontradas en lugares diferentes y que por tanto no pueden ver lo que hace la otra, diseen un grafo. Dibujar un grafo con 5 vrtices a, b, c, d, e cuyas aristas unan los verticales a y b, b y c, c y d, d y e, e y a.
Figura 10. 2 grafos de distinta apariencia pero conectados del mismo modo Aunque en apariencia los grafos son diferentes ambas figuras definen el mismo grafo, entendido como una entidad matemtica abstracta. Lo esencial de un grafo no son los nombres de sus vrtices, ni su representacin grfica, sino la forma en que sus aristas conectan los vrtices. Esto sugiere: 2 grafos G1 = (V1, A1) y G2 = (V2, A2), son isomorfos si tienen aplicaciones biyectivas f: V1 V2 y g: A1 A2 de forma que si a es una arista entre los vrtices u y v de G1 entonces g(a) es una arista entre los vrtices f (u) y f(v) de G2.
4- Recorridos en amplitud (Lenguaje C) En este caso el recorrido se realiza en orden por los distintos niveles del rbol. As, se comenzara tratando el nivel 1, que slo contiene el nodo raz, seguidamente el nivel 2, el 3 y as sucesivamente. En el rbol de la figura el recorrido en amplitud sera: 2, 7, 5, 2, 6, 9, 5, 11 y 4. Implementacin en C: void arbol_recorrido_anch (tipo_Arbol* A) { tipo_Cola cola_nodos; // esta cola esta implementada previamente, almacena punteros (posiciones de nodos de rbol)
16
tipo_Pos nodo_actual; // este es un puntero llevara el recorrido if (vacio(A)) // si el rbol esta vacio, salimos return; cola_inicializa(&cola_nodos); // obvio, y necesario cola_enqueue(A, &cola_nodos); // se encola la raiz while (!vacia(&cola_nodos)) { // mientras la cola no se vacie se realizara el recorrido nodo_actual = cola_dequeue(&cola_nodos) // de la cola saldran los nodos ordenados por nivel printf("%c,", nodo_actual->info); // se "procesa" el nodo donde va el recorrido, en este caso se imprime if (nodo_actual->izq != null) // si existe, ponemos el hijo izquierdo en la cola cola_enqueue(nodo_actual->izq, &cola_nodos); if (nodo_actual->der != null) // si existe, ponemos el hijo derecho en la cola cola_enqueue(nodo_actual->der, &cola_nodos); } // Al vaciarse la cola se han visitado todos los nodos del rbol 5- rbol Binario (java) Un rbol binario es una estructura de datos en la cual cada nodo siempre tiene un hijo izquierdo y un hijo derecho. No pueden tener ms de dos hijos (de ah el nombre "binario"). Si algn hijo tiene como referencia a null, es decir que no almacena ningn dato, entonces este es llamado un nodo externo. En el caso contrario el hijo es llamado un nodo interno. Usos comunes de los rboles binarios son los rboles binarios de bsqueda, los montculos binarios y Codificacin de Huffman. El programa est construido de la siguiente manera: consta de 3 clases, una llamada nodo donde alojamos la estructura de nuestro rbol, otra llamada rbol donde escribimos los mtodos que manipulan a este, y una ltima llamada Main que alojara al mtodo principal de nuestro programa que se encargara de controlar todo el programa.
{ int dato; nodo der; nodo izq; nodo(int dat) { this.dato=dat ; this.der=null ; this.izq=null ; } }
CLASE ARBOL
public class arbol { nodo raiz=null; public boolean tieneraiz() { if(raiz==null) return false; else return true; } public arbol alta(int dat) { if(!tieneraiz()) { nodo nuevo=new nodo(dat); raiz=nuevo; } else { boolean izq; nodo actual=raiz; while(true) { if(actual.dato<dat) izq=false; else izq=true; if(!izq) { if(actual.der==null) { nodo nuevo=new nodo(dat); actual.der=nuevo; break;
18
} else actual=actual.der; } else { if(actual.izq==null) { nodo nuevo=new nodo(dat); actual.izq=nuevo; break; } else actual=actual.izq; } } }return this; } public boolean baja(int dat) { nodo actual=raiz, anterior=raiz, temp; while(true) { if(actual==null) break; if(actual.dato==dat) break; anterior=actual; if(actual.dato<dat) actual=actual.der; else actual=actual.der; } if(actual==null) return false; else { if(actual==raiz) { temp=actual.izq; raiz=raiz.der; anterior=raiz; } else if (anterior.der == actual) { temp=actual.izq; anterior=actual.der; } else { temp=actual.izq; anterior.der=actual.izq; } actual=new nodo(); while(actual.izq!=null)
19
actual=actual.izq; actual.izq=temp; return true; } } public void imprimirpreorden() { ayudantePreorden(raiz); } public void ayudantePreorden(nodo dat) { if(dat==null) return; System.out.printf("%d ",dat.dato); ayudantePreorden(dat.der); ayudantePreorden(dat.izq); } public void impririnorden(nodo dat) { if(dat!=null) { impririnorden(dat.izq); System.out.println(" "+dat.dato); impririnorden(dat.der); } } }
CLASE MAIN
public class Main { public static void main(String[] args) { java.util.Scanner leer=new java.util.Scanner(System.in); arbol x=new arbol(); int z; System.out.print("Ingrese el numero de Datos a capturar: "); z=leer.nextInt(); for(int i=1; i<=z;i++){ int m; System.out.println("Ingrese Dato "+i+":
20
");m=leer.nextInt(); x.alta(m); } System.out.println("Valores Capturados en PreOrden:"); x.imprimirpreorden(); int q; System.out.print("\nIngrese dato a borrar: ");q=leer.nextInt(); x.baja(q); System.out.println("\nDespues de borrar el dato "+q+" :"); x.imprimir(); }
}
21
CONCLUSION
Gracias a la teora de grafos y rboles se pueden resolver diversos problemas como por ejemplo la sntesis de circuitos secuenciales, contadores o sistemas de apertura. Se utiliza para diferentes reas por ejemplo, Dibujo computacional, en todas las reas de Ingeniera. Se utilizan tambin para modelar trayectos como el de una lnea de autobs a travs de las calles de una ciudad, en el que podemos obtener caminos ptimos para el trayecto aplicando diversos algoritmos como puede ser el algoritmo de Floyd. Para la administracin de proyectos, utilizamos tcnicas como PERT en las que se modelan los mismos utilizando grafos y optimizando los tiempos para concretar los mismos. La teora de grafos tambin ha servido de inspiracin para las ciencias sociales, en especial para desarrollar un concepto no metafrico de red social que sustituye los nodos por los actores sociales y verifica la posicin, centralidad e importancia de cada actor dentro de la red. Esta medida permite cuantificar y abstraer relaciones complejas, de manera que la estructura social puede representarse grficamente. Por ejemplo, una red social puede representar la estructura de poder dentro de una sociedad al identificar los vnculos (aristas), su direccin e intensidad y da idea de la manera en que el poder se transmite y a quines. Son tambin importantes en el estudio de la biologa y hbitat. El vrtice representa un hbitat y las aristas representan los senderos de los animales o las migraciones. Con esta informacin, los cientficos pueden entender cmo esto puede cambiar o afectar a las especies en su hbitat. Por ejemplo, supongamos que unas lneas areas realizan vuelos entre las ciudades conectadas por lneas como se ve en la figura anterior (ms adelante se presentaran grafos con estructuras de datos); la estructura de datos que refleja esta relacin recibe el nombre de grafo.
22
BIBLIOGRFIA
-WIKIPEDIA.COM http://es.wikipedia.org/wiki/rbol_(teora_de_grafos) -MATEMATICASPARACOMPUTADORAS.COM matematicasparacomputadora.weebly.com/ -SCRIBD.COM http://es.scribd.com/doc/45162353/RECORRIDO-EN-UN-ARBOL -MONOGRAFIAS.COM http://www.monografias.com/trabajos92/arbolesBinario/arboles-binario.shtml -PUNTOPEEK.COM http://www.puntopeek.com/codigos-c/la-clase-arbol-en-c/ -RINCONDELVAGO.COM http://html.rincondelvago.com/grafos.html - ALGORITMIA.NET http://www.algoritmia.net/articles.php?id=18
23