INDICE INDICE ARBOLES Y GRAFOS

1.-Introducción (arboles) ---------------------------------------------------------------------------------------------2 2.-Arboles en general -------------------------------------------------------------------------------------------------2 3.-Características y propiedades de los arboles-----------------------------------------------------------------3 4.-Operaciones de arboles-------------------------------------------------------------------------------------------4 5.-Uso de arboles-------------------------------------------------------------------------------------------------------4 6.-Tipos de arboles-----------------------------------------------------------------------------------------------------4 7.-Representación de arboles generales como binarios ------------------------------------------------------6 8.-Representación de un bosque como árbol binario ---------------------------------------------------------8 9.-Representación de arboles binarios en memoria ----------------------------------------------------------10 10.-Recorrido en arboles binarios ---------------------------------------------------------------------------------12 11.-Arboles binarios de búsqueda ---------------------------------------------------------------------------------13 12.-Inserción en un árbol binario de búsqueda -----------------------------------------------------------------14 13.-Borrado en un árbol binario de búsqueda -------------------------------------------------------------------15 14.-Arboles balanceados ----------------------------------------------------------------------------------------------16 15.-Restructuración en árbol balanceado -------------------------------------------------------------------------16 16.-Inserción en arboles balanceados ------------------------------------------------------------------------------17 17.-Borrado en arboles balanceados -------------------------------------------------------------------------------20 18.-Arboles multicaminos ---------------------------------------------------------------------------------------------21 19.-Grafos------------------------------------------------------------------------------------------------------------------23 20.-Representación de un grafo--------------------------------------------------------------------------------------24

1

ARBOLES Y GRAFOS ESTRUCTURAS NO LINEALES ARBOLES
1.-INTRODUCCION
Al analizar la estructura árbol se introduce el concepto de estructura de ramificación entre nodos. Los arboles representan las estructuras no lineales y dinámicas de datos más importantes en computación. Dinámicas, puesto que la estructura árbol puede cambiar durante la ejecución de un programa. No lineales, puesto que a cada elemento del árbol pueden seguirle varios elementos.

REPRESENTACION DE ARBOLES
Diferentes formas de representar una estructura de árbol. A) diagramas de ven. B) anidación de paréntesis. c) notación decimal de Dewey. D) notación indentada. E) grafo

2.-ARBOLES EN GENERAL
Un árbol es una estructura jerárquica aplicada sobre una colección de elementos u objetos llamados nodos; uno de ellos cuales es conocido como raíz. Además se crea una relación o parentesco entre los nodos dando lugar a términos como padre, hijo, hermano, antecesor, sucesor, ancestro, etcétera. Se utiliza la recursión para definir un árbol porque representa la forma más apropiada y porque además en una característica inherente a los mismos.
2

En este caso es común utilizar la expresión X es padre de Y. si el nodo X apunta al nodo Y.  Altura del árbol es el máximo número de niveles de todos los nodos del árbol 3 . En este cado es común utilizar la expresión X es hijo de Y. se conoce con el nombre de interior.  Un nodo X es descendiente directo de un nodo Y.  Se dice que todos los nodos que son descendientes directos (hijos) de un mismo nodo (padre).  Todo nodo que no tiene ramificaciones (hijos). si el nodo X es apuntado por el nodo Y. se conoce con el nombre terminal u hoja. tiene un único nodo raíz. Grado del árbol es el máximo grado de todos los nodos del árbol.  Un nodo X es antecesor directo de un nodo Y. son hermanos.  Nivel es el número de arcos que deben ser recorrido para llegar a un determinado nodo.3.  Todo nodo que no es raíz.  Grado es el número de descendientes directos de un determinado nodo. ni terminal u hoja. Por definición la raíz tiene nivel 1.-CARACTERÍSTICAS Y PROPIEDADES  Todo árbol que no es vacio.

 Añadir un subárbol (algunas veces llamada injertar). 5. 4 .  Buscar un elemento.-USO DE ARBOLES  Formulas matemáticas. Cada árbol binario tiene un subárbol izquierda y subárbol derecha. 6.   Los de grado 2 se llaman árboles binarios.-OPERACIONES DE ÁRBOLES  Enumerar todos los elementos.  Encontrar la raíz de cualquier nodo. listar los hijos (si los hay).  Borrar un elemento. + A B C ^ / D 3.-TIPOS DE ARBOLES Un árbol ordenado: Es aquel en el que las ramas de los nodos están ordenadas.  Organizar adecuadamente la información.  Dado un nodo.  Construir un árbol genealógico.4.  Para numerar los capítulos y secciones de un libro.  Análisis de circuitos eléctricos.  Registrar la historia de un campeonato de tenis.  Eliminar un subárbol (algunas veces llamada podar).

y donde cualquier número de subárboles puede ser árboles vacíos. Árboles n-ario: Es un árbol ordenado cuyos nodos tiene N subárboles.Árboles de expresión  Representan un orden de ejecución + + * + 12 9 * A B C * E D 7    Árboles similares: Los que tienen la misma estructura (forma) Árboles Equivalentes: Son los árboles similares y sus nodos contienen la misma información. a 1 2 3 4 5 b 7 e d 6 8 9 c f h i g Árbol binario completo:  Es un árbol en el que todos sus nodos. excepto los del ultimo nivel. 5 . tienen dos hijos.

7. UN ÁRBOL BINARIO: Es una estructura de datos en la cual cada nodo siempre tiene un hijo izquierdo y un hijo derecho. Es una información ordenada de tal forma que todos los elementos a la izquierda de la raíz son menores a la raíz y todos lo elementos a la derecha de la raíz son mayores a la raíz. LOS PASOS A SEGUIR PARA CONVERSIÓN DE UN ARBOL GENERAL A UN ARBOL BINARIO: ARBOL GENERAL.-REPRESENTACION DE ARBOLES GENERALES COMO BINARIOS. 6 . Número de nodos en un árbol binario completo = 2h–1 (en el ejemplo h = 4.  15) esto nos ayuda a calcular el nivel de árbol necesario para almacenar los datos de una aplicación. no pueden tener más de dos hijos.

7 .1. 3._ Enlazar los hijos de cada nodo en forma horizontal (hermanos)._Rotar el diagrama resultante._ Enlazar en forma vertical el nodo padre con el hijo que se encuentra mas a la izquierda. aproximadamente 45 grados hacia la izquierda y así se obtendrá el árbol binario. se debe eliminar el vinculo del padre con el resto de sus hijos. Además. 2.

_ Enlazar los hijos de cada nodo en forma horizontal (hermanos) Antes del enlace Después del enlace 8 .  Los pasos a seguir para conversión del bosque a un árbol binario: 1.-REPRESENTACIÓN DE UN BOSQUE COMO ÁRBOL BINARIO  Un bosque representa un conjunto normalmente ordenado de uno o más arboles generales.8. 2._ Enlazar en forma horizontal las raíces de los distintos arboles generales.

9 .En forma completa.

-REPRESENTACIÓN DE ARBOLES BINARIOS EN MEMORIA  Existen dos formas tradicional es de representar un árbol binario en memoria: 1.4._Por medio de datos tipo puntero. también conocidos como variables dinámicas. aproximadamente 45 grados hacia la izquierda y así se obtendrá el árbol binario. 9. Campo donde se almacena la dirección del subárbol izquierdo del nodo t Campo donde se almacena la información de interés del nodo Campo donde se almacena la dirección del subárbol derecho del nodo t 10 ._Rotar el diagrama resultante.

nil 11 .nil crear(p) en caso contrario q(li) <-. Procedimiento crear(q:nodo) inicio mensaje("Rama izquierda?") lee(respuesta) si respuesta = "si" entonces new(p) q(li) <-.Ejemplo 2._por medio de arreglos.

mensaje("Rama derecha?") lee(respuesta) si respuesta="si" entonces new(p) q(ld)<--p crear(p) en caso contrario q(ld) <--nil fin INICIO new(p) raiz<--p crear(p) FIN 10.-RECORRIDO DE ARBOLES BINARIOS 1.-Recorrido en preorden  Visitar la raíz  Recorrer el subárbol izquierdo  Recorrer el subárbol derecho 2. Recorrido en postorden  Recorrer el subárbol izquierdo 12 .-Recorrido en inorden  Recorrer el subárbol izquierdo  Visitar la raíz  Recorrer el subárbol derecho 3.

Ventajas: En un arreglo es posible localizar datos eficientemente si estos se encuentran ordenados. Formalmente se define un árbol binario de búsqueda de las siguientes manera”Para todo nodo T del árbol debe cumplirse que todos los valores de los nodos del subárbol izquierdo de T serán menores al valor del nodo T. En las listas. De forma similar. todos los valores de los nodos del subárbol derecho de T deben ser mayores al valor del nodo T. dichas operaciones se pueden llevar a cabo con facilidad.-ARBOLES BINARIOS DE BÚSQUEDA El árbol binario de búsqueda es una estructura sobre la cual se pueden realizar eficientemente las operaciones de búsqueda.” EJEMPLO DE ARBOL BINARIO DE BUSQUEDA 13 . pero las operaciones de inserción y eliminación resultan costosas. inserción y eliminación. sin embargo la búsqueda es una operación bastante costosa que incluso nos puede llevar a recorrer todos los elementos de ella para localizar uno en particular. Recorrer el subárbol derecho  Visitar la raíz EJEMPLO DE RECORRIDO EN ARBOLES BINARIOS 11.

2. o el subárbol izquierdo es igual a vacio.-El subárbol derecho es igual a vacio.  2.-Repetir sucesivamente el paso 1 hasta que se cumpla alguna de las siguientes condiciones:  2.12.-Debe compararse la clave a insertar con la raíz del árbol. Los pasos que deben realizarse para insertar un elemento a un árbol binario de búsqueda son los siguientes:  1.  2. La estructura crece conforme se inserten elementos al árbol. EJEMPLO DE INSERCIÓN EN UN ÁRBOL BINARIO DE BÚSQUEDA 14 . Si es menor.-La clave que quiere insertarse es igual a un nodo del árbol.-INSERCIÓN EN UN ÁRBOL BINARIO DE BÚSQUEDA La inserción es una operación que se puede realizar eficientemente en un árbol binario de búsqueda.1. debe avanzarse hacia el subárbol izquierdo. Si es mayor. debe avanzarse hacia el subárbol derecho. cuyo caso no se realiza la inserción. en cuyo caso procederá a insertar el elemento en lugar en el lugar que le corresponde.

izq = null  Caso 2 Si el elemento a borrar tiene un solo hijo. entonces tiene que sustituirlo por el hijo 15 . 2.-BORRADO EN UN ÁRBOL BINARIO DE BÚSQUEDA Para eliminar un nodo existen los siguientes casos: 1. Si el elemento a borrar tiene un solo hijo. 1. Si el elemento a borrar es Terminal (hoja). Si el elemento a borrar tiene los dos hijo. simplemente se elimina. 3. Caso 1 Si el elemento a borrar es terminal (hoja).13. aux = aux.

En el primer tipo de rotación se involucran dos nodos y en el segundo. o por el nodo que se encuentra más a la derecha en el subárbol izquierdo. Si la rotación es simple puede realizarse por las ramas derechas (RDD: Rotación Derecha Derecha) o por 16 .-ARBOLES BALANCEADOS Con el objeto de mejorar el rendimiento en la búsqueda surgen los árboles balanceados. La idea central de estos es la de realizar reacomodó o balanceos después de inserciones o eliminaciones de elementos. entonces debería reestructurarse el árbol. El Factor de Equilibrio de cada nodo en un árbol balanceado será –1. Si FE llegara a tomar los valores de –2 ó 2. Factor de Equilibrio El Factor de Equilibrio (FE) o de Balance (FB) de un nodo se define como la altura del SAD menos la altura del SAI correspondiente. La rotación puede ser simple o compuesta. Estos árboles también nombrados recientemente AVL en honor a sus inventores. Un árbol balanceado es un árbol binario en el cual las alturas de los dos subárboles para cada nodo nunca difieren en más de una unidad.-REESTRUCTURACIÓN DE ARBOLES AVL Reestructurar un árbol balanceado significa rotar los nodos del mismo. 14. 1 ó 0. dos matemáticos rusos Adelson-Velskii y Landis. se afectan tres. 15. entonces se tienen que sustituir por el nodo que se encuentra más a la izquierda en el subárbol derecho. Caso 3 Si el elemento a borrar tiene dos hijos.

no se viola el criterio de equilibrio o balance del árbol. Si la rotación es compuesta puede realizarse por las ramas derecha e izquierda (RDI: Rotación Derecha Izquierda) o por las ramas izquierda y derecha (RID: Rotación Izquierda Derecha). El SAI y el SAD del árbol balanceado tienen altura diferente (hSAD ≠ hSAI): CASO 2.-INSERCIÓN EN ÁRBOLES BALANCEADOS CASO 1. CASO 2. 16.1.las ramas izquierdas (RII: Rotación Izquierda Izquierda). El SAI y el SAD del árbol balanceado tienen la misma altura (hSAD = hSAI): a) Si se inserta un elemento en SAI entonces hSAD será menor que hSAI b) Si se inserta un elemento en SAD entonces hSAD será mayor que hSAI Ya sea para a) o para b). Si hSAD > hSAI a) Si se inserta un elemento en SAI entonces hSAD será igual a hSAI Las ramas tienen la misma altura por lo que se mejora el equilibrio 17 .

70.b) Si se inserta un elemento en SAD entonces el árbol debe ser reestructurado Las ramas están desequilibradas por lo que se requiere reestructuración CASO 2. 23. que será cero (pues el elemento recién insertado posee SAI y SAD vacíos). Si hSAD < hSAI a) Si se inserta un elemento en SAI entonces el árbol debe ser reestructurado Las ramas están desequilibradas por lo que se requiere reestructuración b) Si se inserta un elemento en SAD entonces hSAD será igual a hSAI Las ramas tienen la misma altura por lo que se mejora el equilibrio Para poder determinar si un árbol está balanceado debe calcularse el FE de cada nodo del árbol. El proceso de inserción en un árbol balanceado consta de los siguientes pasos: 1) Primero debe seguirse el camino de búsqueda del árbol. hasta localizar el lugar donde hay que insertar el elemento. en cuyo caso no es necesario determinar el FE de los nodos restantes. o cuando se realiza la reestructuración del mismo. 68 y 39 18 . Si en alguno de los nodos se viola el criterio de equilibrio entonces debe reestructurarse el árbol. El proceso termina al llegar a la raíz del árbol. 2) Se calcula su FE. Ejemplo de Inserción de Nodos con Árboles AVL Se insertara la siguiente secuencia: 65. se regresa por el camino de búsqueda calculando el FE de todos los demás nodos que componen el árbol.2. 50. 82. Luego.

19 .

_Si el elemento a borrar es terminal u hoja.17.-BORRADO EN ARBOLES BALANCEADOS  Consiste en quitar un nodo del árbol sin violar los principios que define justamente un árbol balanceado._Si el elemento a borrar tiene un solo descendiente. La eliminación de la clave 10 es un proceso sencillo por que no contiene hijos 2._Si el elemento a borrar tiene los dos descendientes. 20 . simplemente se suprime. 1. entonces tiene que sustituirse por el nodo que se encuentra más ala izquierda en el subárbol derecho o por el nodo que se encuentra más ala derecha en el subárbol izquierdo. 3. entonces tiene que sustituirse por ese descendiente.

La eliminación de clave con dos descendientes. Se opta por sustituir dicha clave por el nodo que se encuentra más ala derecha en el subárbol izquierdo 18. Este define el máximo de claves e hijos que cada nodo puede tener. 21 .Al eliminar la clave 39 se origina el caso más difícil de borrado en arboles.-ARBOLES MULTICAMINOS Es la generalización del Árbol Binario Cada nodo puede almacenar (n) claves y tener n+1 hijos El árbol B es un tipo especial de árbol multicamino Es útil en sistemas de Archivos y para manejar Sistemas de Bases de Datos Permiten almacenar grandes cantidades de datos Que no entran en memoria secundaria Se aplica para la organización de índices o claves De tal forma que el acceso a esos datos Usando dispositivos externos (no en memoria principal) Tengan un costo relativamente bajo Características Posee un orden m.

o 0 si solo existe el nodo raíz 22 . puede almacenar hasta n-1 claves Y la raíz Tiene máximo: m ramas Y mínimo: 2 ramas.Cada nodo se denomina página Es un árbol lleno (y balanceado). Todas sus hojas están en el mismo nivel Cada página interna Posee máximo: m ramas Y Mínimo: m/2 ramas. redondeado Si posee un número n de ramas.

(C. a su vez. Grafo con 5 vértices y 6 arcos. (A. relacionados entre sí por un conjunto R de arcos. C). A). (A. B).D. E)} Permiten estudiar las interrelaciones entre unidades que interactúan unas con otras. EJEMPLO Una red de computadoras puede representarse y estudiarse mediante un grafo.A. B. en el cual los vértices representan terminales y las aristas representan conexiones (las cuales.19. que representa un conjunto finito N de nodos. Vértices del Grafo N ={ A. 23 . (D. D).-GRAFOS Graph es un T. E } Arcos del Grafo R={(A. C). D. (A. pueden ser cables o conexiones inalámbricas). llamados vértices. C.

-REPRESENTACIÓN DE UN GRAFO Existen dos maneras conocidas para representar un grafo Una colección de listas de adyacencia Representada con un arreglo de listas encadenadas con length igual al número de estados Una matriz de adyacencia Con casillas que representan las relaciones de todos los estados con todos los estados. LISTA DE ADYACENCIA  una matriz  Tiene muchos vértices y  Pocos arcos  La Matriz de Adyacencia ○ Tendrá demasiados ceros ○ Ocupara mucho espacio  Los vértices  Pueden formar una lista. no un vector  Los arcos  Son relaciones entre vértices  Se pueden representar con una lista x cada vértice 24 .20.

Si el grafo es no orientado. no existe arco del vértice i al vértice j. si el elemento (i. j) es verdadero.EJEMPLO Matriz de Adyacencia Representa para cada nodo cuáles son sus vértices adyacentes. Cada fila y cada columna de la matriz corresponden con un vértice en particular. 25 . Los elementos de la matriz son booleanos Si el elemento (i. si existe el arco del vértice i al vértice j existe el arco del vértice j al vértice i. j) es falso. existe un arco que va del vértice i al vértice j y.

Cada arco de un grafo establece una única relación entre dos nodos. Cada arco se representa a través de un par. No existe restricción en la relación que establece un arco. o sea. un nodo puede estar relacionado consigo mismo o con otro nodo. el grafo será vacío. donde cada elemento determina uno de los nodos 26 .ACLARACIONES Si el conjunto N es vacío.

Sign up to vote on this title
UsefulNot useful