UNIVERSIDAD POLITÉCNICA DE

TULANCINGO
MATEMÁTICA DISCRETA
ARBOLES Y GRAFOS
ALUMNO
ERNESTO VARGAS CANALES
PROFESOR
GUSTAVO ARTURO MONTAÑO JIMÉNEZ


INTRODUCCIÓN
Los árboles corresponden a una de las subclases de grafos de uso más amplio,
particularmente en computación.
Los grafos se pueden clasificar en dos grupos: dirigidos y no dirigidos. Los arboles
forman parte de los no dirigidos.
Sirven para organizar y relacionar datos en una base de datos, por ejemplo. Esto
permite realizar operaciones de manera eficiente. Por ejemplo, un árbol de
definición jerárquica se utiliza para configurar una base de datos para los registros
de libros existentes en diversas bibliotecas.
Otro ejemplo de la utilización de árboles son los diccionarios. A partir de una
palabra, se realiza una búsqueda en el árbol para saber si está incluida en el
conjunto, y si existe, se obtienen sus datos asociados (por ejemplo, si es un verbo,
un sustantivo, un artículo, etc.)
Desafortunadamente no existe una terminología estandarizada en la teoría de los
grafos, por lo tanto es oportuno aclarar que las presentes definiciones pueden variar
ligeramente entre diferentes publicaciones de estructura de datos y de teoría de
grafos, pero en general se puede decir que un grafo como indica su nombre lo indica
es la representación (para nuestro caso) gráfica de los datos de una situación
particular, ejemplo:

Los datos contienen, en algunos casos, relaciones entre ellos que no es
necesariamente jerárquica. Por ejemplo, supongamos que unas líneas aéreas
realizan vuelos entre las ciudades conectadas por líneas como se ve en la figura
anterior (más adelante se presentaran grafos con estructuras de datos); la
estructura de datos que refleja esta relación recibe el nombre de grafo.
Se suelen usar muchos nombres al referirnos a los elementos de una estructura de
datos. Algunos de ellos son “elemento”, “ítem”, “asociación de ítems”, “registro”,
“nodo” y “objeto”. El nombre que se utiliza depende del tipo de estructura, el contexto
en que usamos esa estructura y quien la utiliza.
En la mayoría de los textos de estructura de datos se utiliza el termino “registro” al
hacer referencia a archivos y “nodo” cuando se usan listas enlazadas, arboles y
grafos.
También un grafo es una terna G = (V,A,j ), en donde V y A son conjuntos finitos, y
j es una aplicación que hace corresponder a cada elemento de A un par de
elementos de V. Los elementos de V y de A se llaman, respectivamente, "vértices"
y "aristas" de G, y j asocia entonces a cada arista con sus dos vértices.
Esta definición da lugar a una representación gráfica, en donde cada vértice es un
punto del plano, y cada arista es una línea que une a sus dos vértices.

Si el dibujo puede efectuarse sin que haya superposición de líneas, se dice que G
es un grafo plano. Por ejemplo, el siguiente es un grafo plano: puesto que es
equivalente a este otro:

Representación de un grafo
Existen dos formas de mantener un grafo “G” en la memoria de una computadora,
una se llama Representación secuencial de G, la cual se basa en la matriz de
adyacencia A; la otra forma, es la llamada Representación enlazada de G y se basa
en listas enlazadas de vecinos. Independientemente de la forma en que se
mantenga un grafo G en la memoria de una computadora, el grafo G normalmente
se introduce en la computadora por su definición formal: Un conjunto de nodos y un
conjunto de aristas
· Representación secuencial de un grafo


Arboles:

Un árbol es un grafo simple en el cual existe un único camino entre cada par de
vértices.

Sea G =(V,A) un grafo no dirigido. G se denomina ARBOL, si es conexo y no
contiene ciclos.

Un árbol con raíz, es un árbol que tiene un vértice particular designado como raíz.

Teorema:

Si a, b son vértices de un árbol R (V,A), entonces hay un camino único que conecta
estos vértices.

Teorema:

En cualquier árbol R= (V,A), |V| = |A| + 1.

Teorema:

Para cualquier árbol R = (V,A), si |A| >= 2, entonces R tiene al menos dos vértices
colgantes.

Teorema:

Sea G un grafo simple con v vértices, entonces se puede decir:

G es un árbol.

G es conexo y no contiene circuitos.

G es conexo y tiene (n-1) lados.

G no contiene circuitos y tiene (n-1) lados.

Arboles con Raíz

Sea G un grafo dirigido, se denomina “árbol dirigido” si el grafo no dirigido asociado
con G es un árbol. Cuando G es un árbol dirigido, se denomina “árbol con raíz” si
hay un único vértice r, la raíz.

Sea G un grafo con raíz V0. Supóngase que x, y, z son vértices en G y que (v0, v1,
..., vn), es un camino en G.

V(n-1) es el padre de v(n).

V0, v1, ..., v(n-1) son los antepasados de v(n).

V(n) es el hijo de v(n-1).

Si x es un antepasado de y, entonces y es un descendiente de x.

Si x e y son hijos de z entonces x e y son hermanos.

Si x no tiene hijos entonces x es un vértice terminal.

Si x no es un vértice terminal, entonces x es un vértice interno.

El subgrafo de G que consiste en x y todos sus descendientes, con x como raíz,
es el subarbol de G que tiene a x como raíz.

Sea R= (V,A) un árbol con raíz r. Si R no tiene otros vértices, entonces la raíz misma
constituye el recorrido en orden previo, simétrico y posterior de R. Si |V| > 1, sean
R1, R2, R3, ...., Rk los subarboles de R según se va de izquierda a derecha.

El recorrido de orden previo de R comienza en r y después pasa por los vértices de
R1 en orden previo, a continuación por los vértices de R2 en orden previo, y así
sucesivamente hasta que se pasa por los vértices de Rk en orden previo.

El recorrido en orden simétrico de R primero, se pasa por los vértices de R1 en
orden simétrico, después por la raíz r y a continuación por los vértices de los
subarboles R2, R3,...., Rk en orden simétrico.

El recorrido en orden posterior de R pasa por los vértices de los subarboles R1,
R2,...., Rk en orden posterior y a continuación por la raíz.

Un árbol binario es uno con raíz en el cual cada vértice tiene un hijo a la derecha o
un hijo a la izquierda, o viceversa, o bien ningún hijo. Un árbol binario completo es
uno en el cual cada vértice tiene un hijo a la derecha y uno a la izquierda, o bien
ningún hijo.

Teorema:

Si T es un árbol binario completo con i vértices internos, entonces T tiene i + 1
vértices terminales y 2i + 1 vértices en total.

Un árbol binario de búsqueda es un árbol binario T donde se han asociado datos a
los vértices. Los datos se disponen de manera que para cualquier vértice v en T,
cada dato en el subarbol a la izquierda de v es menor que el dato correspondiente
a v.

Arboles generadores:

Un árbol T es un árbol generador de un grafo G si T es un subgrafo de G que
contiene todos los vértices de G.

A esta característica general es posible agregar ciertos teoremas de modo de
detallar aún más el alcance de la definición. Es así como el Grafo que contiene a T
debe ser conexo, pues de lo contrario no existiría un subgrafo que contuviera todos
sus vértices.

En general un grafo G tendrá varios árboles generadores ,como el del ejemplo 1 el
cual tiene a lo menos dos arboles generadores T1 yT2.

DEFINICIONES BÁSICAS
Un Grafo (o grafo no dirigido) es un conjunto V de vértices y un conjunto E de aristas
queda asociada a un par no ordenado de vértices. Si
existe una única arista e asociada con los vértices v y w, escribimos e = (v,w). En
este contexto (v,w) denota una arista en un grafo no dirigido y no un par ordenado.
Un grafo dirigido (o digrafo) consta de un conjunto finito de vértices V y un conjunto
de arcos E ⊂ V × V (obsérvese que cada arco es un par ordenado de vértices).
Grafo conexo: un grafo G es conexo si dados cualesquiera dos vértices v y w en G,
existe un camino de v a w.
Camino: sean v0 y vn vértices de un grafo. Un camino de v0 a vn de longitud n es
una sucesión alternante de n+1 vértices y n aristas que comienza con el vértice v0
y termina con el vértice vn.
Longitud del camino: es el número de aristas que contiene.
Ciclo: sean v y w vértices en un grafo G, un ciclo o circuito es un camino de longitud
distinta de 0 de v a w, sin aristas repetidas.
Subgrafo: sea G (V, E) un grafo. (V’, E’) es un subgrafo de G si
a) V’  V y E’ E.
b) Para cada arista e’  E’, si e’ es incidente en v’ y w’, entonces v’, w’  V.
Grafo con pesos (o poderado): es un grafo en el cual se le asignan valores a las
aristas y la longitud del camino de un grafo con pesos es la suma de todos los pesos
de las aristas en la ruta (camino).

Árbol: es un grafo en el que cualesquiera dos vértices están conectados
por exactamente un camino.


Árboles de expansión
Definición: un árbol T es un árbol de expansión de un grafo G si T es un subgrafo
de G que contiene a todos los vértices de G.
Un grafo G tiene un árbol de expansión si y solo si G es conexo.

Arboles de expansión mínima

Definición: sea G un árbol con pesos. Un árbol de expansión mínimo de G es un
árbol de expansión de G con mínimo peso, es decir cuya suma de pesos sea
mínima.
Para calcular el árbol de peso mínimo existen 2 algoritmos:
 Prim: Consiste en ir borrando las aristas de mayor peso posible y que
no sean aristas de separación.
 Kruskal: Se van escogiendo las aristas de menor peso hasta conseguir
un árbol de peso mínimo
Algoritmo de Prim: Este algoritmo determina un árbol de expansión mínimo en un
grafo conexo con pesos.
El algoritmo encuentra un subconjunto de aristas que forman un árbol con todos
los vértices, donde el peso total de todas las aristas en el árbol es el mínimo posible.
Pasos para realizar el algoritmo:
1. Se marca un nodo cualquiera, será el nodo de partida.
2. Seleccionamos la arista de menos valor incidente en el nodo marcado
anteriormente, y marcamos el otro nodo en el que incide.
3. Repetir el paso 2 siempre que la arista elegida enlace un nodo y otro que
no lo esté.
4. El proceso termina cuando tenemos todos los nodos del grafo marcados.
Al concluir el algoritmo, T es un árbol de expansión mínimo.




Algoritmo de Kruskal: Se eligen aristas de la forma más económica. Inicialmente se
ordenan las aristas por su peso. A continuación se van eligiendo las aristas de
menor peso de modo tal, que no formen ciclo con las aristas anteriormente
seleccionadas. Para evitar que se formen ciclos se asignan etiquetas a los vértices
de modo que los vértices que formen parte de las aristas ya elegidas tengan todos
la misma etiqueta. Una etiqueta es una información asociada a un vértice que los
hace distinguibles entre sí.


1. T= {}
2. Asignar etiquetas a todos los vértices t(i)=i, i=1, 2, ..., n.
3. Mientras haya vértices con etiquetas diferentes repetir.
a) Escoger la arista (u, v) de menor peso tal que t(u) sea diferente de t(v).
Agregarla a T
b) Asignar a todos los vértices de una componente conexa de T la misma
etiqueta.










Árboles binarios
Definición: un árbol binario es un árbol con raíz en el cual cada vértice tiene cero,
uno o dos hijos. Si un vértice tiene un hijo, ese hijo se designa como un hijo izquierdo
o un hijo derecho (pero no ambos). Si un vértice tiene dos hijos, uno de ellos se
designa como un hijo izquierdo y el otro se designa como un hijo derecho.



Un árbol de búsqueda binaria es un árbol binario T en el cual se asocian ciertos
datos con los vértices. Los datos están ordenados de modo que, para cada vértice
v en T, cada elemento de dato en el subárbol izquierdo de v sea menor que el
elemento de dato en v y cada elemento de dato en el subárbol derecho de v es
mayor que el elemento de dato en v.
Los arboles de búsqueda binaria son útiles para localizar datos. Es decir, dado un
elemento D, podemos determinar con facilidad si D está en un árbol de búsqueda
binaria y, de estar presente, conocer su posición. Para determinar si un elemento
de dato D esta en un árbol de búsqueda binaria, comenzaríamos en la raíz. Luego
compararíamos de manera sucesiva D con el elemento de dato del vértice en
cuestión. Si D es igual al elemento de dato del vértice en cuestión, hemos
encontrado a D, por lo cual habremos concluido. Si D es menor que el elemento de
dato en el vértice en cuestión v, nos movemos al hijo izquierdo de v y repetimos el
proceso. Si D es mayor que el elemento de dato en el vértice en cuestión v, nos
movemos al hijo derecho de v y repetimos el proceso. Si en algún momento no
existe un hijo al cual moverse, podemos concluir que D no está en el árbol.