Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Arboles y Grafos PDF
Arboles y Grafos PDF
INDICE
ARBOLES Y GRAFOS
1.-Introducción (arboles) ---------------------------------------------------------------------------------------------2
4.-Operaciones de arboles-------------------------------------------------------------------------------------------4
5.-Uso de arboles-------------------------------------------------------------------------------------------------------4
6.-Tipos de arboles-----------------------------------------------------------------------------------------------------4
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
3.-CARACTERÍSTICAS Y PROPIEDADES
Todo árbol que no es vacio, tiene un único nodo raíz.
Se dice que todos los nodos que son descendientes directos (hijos) de un mismo nodo (padre),
son hermanos.
Todo nodo que no tiene ramificaciones (hijos), se conoce con el nombre terminal u hoja.
Todo nodo que no es raíz, ni terminal u hoja, se conoce con el nombre de interior.
Nivel es el número de arcos que deben ser recorrido para llegar a un determinado nodo. Por
definición la raíz tiene nivel 1.
Altura del árbol es el máximo número de niveles de todos los nodos del árbol
3
4.-OPERACIONES DE ÁRBOLES
Enumerar todos los elementos.
Buscar un elemento.
Borrar un elemento.
5.-USO DE ARBOLES
Formulas matemáticas.
6.-TIPOS DE ARBOLES
Un árbol ordenado: Es aquel en el que las ramas de los nodos están ordenadas.
- ^
A B / 3.
C D
4
Árboles de expresión
+
*
* +
+ -
A B * E
7 12 9
C D
Árboles Equivalentes: Son los árboles similares y sus nodos contienen la misma información.
Árboles n-ario: Es un árbol ordenado cuyos nodos tiene N subárboles, y donde cualquier número de
subárboles puede ser árboles vacíos.
a
1
2 5 b e
c d f g
3 4 6 7
h i
8 9
Árbol binario completo:
Es un árbol en el que todos sus nodos, excepto los del ultimo nivel, tienen dos hijos.
5
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.
ARBOL GENERAL.
6
1._ Enlazar los hijos de cada
nodo en forma horizontal
(hermanos).
3._Rotar el diagrama
resultante, aproximadamente
45 grados hacia la izquierda y
así se obtendrá el árbol
binario.
7
8.-REPRESENTACIÓN DE UN BOSQUE COMO ÁRBOL BINARIO
Un bosque representa un conjunto normalmente ordenado de uno o más arboles
generales.
1._ Enlazar en forma horizontal las raíces de los distintos arboles generales.
8
En forma completa.
9
4._Rotar el diagrama resultante, aproximadamente 45 grados hacia la
izquierda y así se obtendrá el árbol binario.
1._Por medio de datos tipo puntero, también conocidos como variables dinámicas.
10
Ejemplo
Procedimiento crear(q:nodo)
inicio
mensaje("Rama izquierda?")
lee(respuesta)
new(p)
crear(p)
en caso contrario
11
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
Visitar la raíz
2.-Recorrido en inorden
Visitar la raíz
3. Recorrido en postorden
12
Recorrer el subárbol derecho
Visitar la raíz
Ventajas:
En un arreglo es posible localizar datos eficientemente si estos se encuentran ordenados, pero las
operaciones de inserción y eliminación resultan costosas.
En las listas, dichas operaciones se pueden llevar a cabo con facilidad, 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.
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. De forma similar, todos los valores de los nodos del subárbol derecho de T deben ser
mayores al valor del nodo T.”
EJEMPLO DE ARBOL
BINARIO DE BUSQUEDA
13
12.-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.
La estructura crece conforme se inserten elementos al árbol. Los pasos que deben realizarse para
insertar un elemento a un árbol binario de búsqueda son los siguientes:
1.-Debe compararse la clave a insertar con la raíz del árbol. Si es mayor, debe avanzarse hacia
el subárbol derecho. Si es menor, debe avanzarse hacia el subárbol izquierdo.
2.-Repetir sucesivamente el paso 1 hasta que se cumpla alguna de las siguientes condiciones:
2.1.-El subárbol derecho es igual a vacio, o el subárbol izquierdo es igual a vacio, en cuyo caso
procederá a insertar el elemento en lugar en el lugar que le corresponde.
2.2.-La clave que quiere insertarse es igual a un nodo del árbol, cuyo caso no se realiza la
inserción.
14
13.-BORRADO EN UN ÁRBOL BINARIO DE BÚSQUEDA
Para eliminar un nodo existen los siguientes casos:
1. Caso 1
Caso 2
Si el elemento a borrar tiene un solo hijo, entonces tiene que sustituirlo por el hijo
15
Caso 3
Si el elemento a borrar tiene dos hijos, entonces se tienen que sustituir por el nodo que se encuentra
más a la izquierda en el subárbol derecho, o por el nodo que se encuentra más a la derecha en el
subárbol izquierdo.
14.-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. Estos árboles también nombrados recientemente AVL en honor a sus inventores, dos
matemáticos rusos Adelson-Velskii y Landis.
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.
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. El Factor de Equilibrio de cada nodo en un árbol balanceado será –1, 1
ó 0. Si FE llegara a tomar los valores de –2 ó 2, entonces debería reestructurarse el árbol.
16
las ramas izquierdas (RII: Rotación Izquierda Izquierda). 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).
CASO 2. El SAI y el SAD del árbol balanceado tienen altura diferente (hSAD ≠ hSAI):
CASO 2.1. 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
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
1) Primero debe seguirse el camino de búsqueda del árbol, hasta localizar el lugar donde hay que
insertar el elemento.
2) Se calcula su FE, que será cero (pues el elemento recién insertado posee SAI y SAD vacíos).
Luego, se regresa por el camino de búsqueda calculando el FE de todos los demás nodos que
componen el árbol. 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, o cuando se realiza la
reestructuración del mismo, en cuyo caso no es necesario determinar el FE de los nodos
restantes.
18
19
17.-BORRADO EN ARBOLES BALANCEADOS
Consiste en quitar un nodo del árbol sin violar los principios que define justamente un
árbol balanceado.
2._Si el elemento a borrar tiene un solo descendiente, entonces tiene que sustituirse
por ese descendiente.
3._Si el elemento a borrar tiene los dos descendientes, 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.
20
Al eliminar la clave 39 se origina el caso más difícil de borrado en arboles. 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.-ARBOLES MULTICAMINOS
Es la generalización del Árbol Binario
Características
Posee un orden m.
Este define el máximo de claves e hijos que cada nodo puede tener,
21
Cada nodo se denomina página
Y la raíz
22
19.-GRAFOS
Graph es un T.D.A. que representa un conjunto finito N de nodos, llamados vértices,
relacionados entre sí por un conjunto R de arcos.
Permiten estudiar las interrelaciones entre unidades que interactúan unas con otras.
EJEMPLO
23
20.-REPRESENTACIÓN DE UN GRAFO
Existen dos maneras conocidas para representar un grafo
Representada con un arreglo de listas encadenadas con length igual al número de estados
Con casillas que representan las relaciones de todos los estados con todos los estados.
LISTA DE ADYACENCIA
una matriz
Pocos arcos
La Matriz de Adyacencia
Los vértices
Los arcos
24
EJEMPLO
Matriz de Adyacencia
Representa para cada nodo cuáles son sus vértices adyacentes.
Si el grafo es no orientado, si existe el arco del vértice i al vértice j existe el arco del vértice j
al vértice i.
25
ACLARACIONES
Si el conjunto N es vacío, el grafo será vacío.
Cada arco de un grafo establece una única relación entre dos nodos.
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.
Cada arco se representa a través de un par, donde cada elemento determina uno de los
nodos
26