Sunteți pe pagina 1din 58

Árboles

• Es un tipo especial de grafo.


• El primero en utilizarlo fue Gustavo Kirchhoff en sus
trabajos sobre redes eléctricas.
• En 1857 Arthur Cayley utilizo un tipo especial de
grafo para enumerar diversos isómeros de los
carburos saturados.

Árboles como Modelos


• Los árboles se utilizan como modelos en ciencias
tan diversas como la informática, la química, la
geología, la botánica y la psicología.
• En muchas aplicaciones es necesario distinguir un
nodo particular de un árbol, que es designado
como la raíz (los definimos recursivamente antes).
• Además, asumimos que los arcos pasan a ser
dirigidos, siempre alejándose de la raíz. Por
ejemplo,
Hidrocarburos Saturados y árboles.
 Los grafos pueden usarse para representar
moléculas, con los átomos representando vértices
y los enlaces entre ellos mediante aristas. El
matemático inglés Arthur Cayley descubrió los
árboles en 1857 cuando trataba de enumerar los
isómeros de los compuestos.

Butano
Representación de Organizaciones
• La estructura de una organización se puede
modelar utilizando un árbol con raíz. Cada
vértice de este árbol indica un puesto en la
organización.
Presidente

Vicepresidente Vicepresidente
de Investigacion Mercantil Vicepresidente
Y desarrollo Servicios

Director Director Director Adjunto Adjunto


Investiga Desarrollo Desarrollo Vicepresi Vicepresidente
ción Software Hardware dente Ventas
Mercanti
l

Organigrama
Sistemas de ficheros de ordenadores.
 En la memoria de un ordenador, los ficheros se
organizan en directorios. Un directorio puede
contener tanto ficheros como subdirectorios. La raíz
de un directorio contiene el sistema de ficheros
completo. Así, un sistema de ficheros puede
representarse mediante un árbol con raíz, donde la
raíz representa el directorio raíz, los vértices internos
representan los subdirectorios y las hojas
representan los ficheros ordinarios o subdirectorios
/
vacíos.
usr bin tmp

bin rje spool


junk

Sistema de ficheros de un ordenador ls mail who


khr
• Ejemplo: Una estructura de carpetas y ficheros es
un árbol
• Ejemplos:

Análisis de expresiones Árboles de búsqueda


Árbol de Decisión
• Se desean elegir los puestos de Director y Auxiliar de Director entre
Lucía, María, Tomás y Juan. Se tiene que ni Lucía ni María serán
elegidas para director. También se sabe que habiendo elegido a
Tomás como director Lucía no debería ser auxiliar suyo. Construir el
árbol de decisión.
• Solución

Elegir Director Elegir Auxiliar Selección


Tomás Director: Juan, Auxiliar: Tomás
Juan Lucía Director: Juan, Auxiliar: María
María Director: Juan, Auxiliar: María
Inicio María
Lucía
Juan Director: Tomás, Auxiliar: Juan
Tomás Lucía
María Director: Tomás, Auxiliar: María
 Uso típico de los arboles:
 representación de estructuras jerárquicas organizaciones
 árbol genealógico
 directorios
 acceso rápido a datos ordenados en número desconocido
 como vectores ordenados respecto a vectores normales
 sistemas de ficheros avanzados
 elementos de representación en juegos
 sistemas de compresión
 Los arboles son una clase particular de grafos que
aparecen muy usualmente en computación:
 Como herramienta para construir algoritmos eficientes;
 para construir códigos eficientes para la transmisión de datos;
 para estudiar juegos;
 como documentos XML entre otros.
Definición
• Un árbol es un grafo conexo y sin ciclos.
• En el mismo tono botánico, se define un bosque
como un grafo sin ciclos (si es conexo, será un
árbol; si no lo es, sus componentes conexas serán
arboles).
• Un bosque es un (multi)grafo acíclico. A cada
componente conexa de un bosque se le llama
árbol. En un árbol, a los vértices de grado uno se les
llama hojas.
• Existen varias formulaciones equivalentes. Por
ejemplo,
o Un grafo no dirigido es un árbol si y sólo si hay un único camino simple
entre cualquiera dos de sus vértices.
• Árbol: Grafo conexo y sin ciclos
• Ejemplo:

• A menudo se selecciona un nodo especial al que


se llama raíz, y se dibuja con la raíz en la parte
superior, sus adyacentes más abajo y así
sucesivamente:
o Puesto que un árbol no puede contener ciclos, es un grafo
acíclico, tampoco puede tener bucles o aristas múltiples. Por
tanto, un árbol es necesariamente un grafo simple.

a
a b
b

c d
c d

f
e
e f
G1 G2
Terminología
• Árbol libre: es un grafo no dirigido acíclico conexo.
• Foresta: es menos restrictivo, es un grafo no dirigido acíclico.
Es decir, da la posibilidad que sea no-conexo.

Árbol libre Foresta Ni árbol ni foresta, sólo un grafo

• Árbol con raíz: es un árbol libre en el cual un vértice se


distingue del resto. Este vértice es la raíz.
• Nodo: es el término usado para referirse a un vértice de un
árbol con raíz.
• Algunos ejemplos de grafos que no son árboles:

a b a b

bosque
c d c d

e G3 f e G4 f
• Otros ejemplos de grafos que no son árboles:

G1 G2 G3

G4
• Todo grafo conexo y acíclico es un árbol. ¿Qué
podemos decir de los grafos acíclicos, pero no
necesariamente conexos?
• Estos grafos se llaman bosques y tienen la propiedad
de que cada una de sus componentes conexas es un
árbol.
Un grafo con tres componentes conexas

Ejemplo de un bosque
RAIZ PRINCIPAL A PADRE DE
B,C,D

B C D

E F G H I J
NODOS
TERMINALES
U
SON
NODOS HOJAS
SON
K HIJOS DE A L
HERMANOS
TERMINALES
U
HOJAS
M
A

P
R C
L B D
O
O
F
N
U
G
N
I
D
T
NODOS
E F G H I J
I
U
D
D
INTERNOS
A
=
D
4
=
PROFUNDIDAD
LONGITUD ES EL
ES
5 K L
ELNUMERO
NUMERODE DE
ARISTAS
NODOS
NODOS
RECORRIDOS
RECORRIDAS EN
INTERNOS
EL CAMINO DEL
PRIMER AL
M
ULTIMO NODO
Terminología de grafos
• Sea T un grafo con raíz v.
• Si hay un camino de A hasta B, se dice que A es antecesor
de B, y que B es sucesor de A.
• El padre de un nodo u tal que u  v, es el nodo u′ tal que
existe un arco dirigido desde u′ a u en T. También decimos
que u es un hijo de u′.
• Dos nodos son hermanos si tienen el mismo padre.
• Los ancestros de u son todos los nodos u′  u en el camino
desde u hasta v. Los descendientes de u son todos los
vértices que tienen a u como ancestro.
• Generación, es un conjunto de nodos con la misma
profundidad
• Una hoja es un nodo sin hijos. Los nodos que no son hojas se
llaman internos.
• El subárbol de T con raíz es u es el subgrafo de T inducido
por u y todos sus descendientes.
• Raíz es el nodo que no tiene ningún predecesor (sin padre).
• Hoja es el nodo que no tiene sucesores (sin hijos) (Terminal).
Los que tienen predecesor y sucesor se llaman nodos
interiores.
• Rama es cualquier camino del árbol.
• Bosque es un conjunto de árboles desconectados.
• Nivel o profundidad de un nodo, es la longitud del camino
desde la raíz hasta ese nodo. El nivel puede definirse como
0 para la raíz y nivel (predecesor)+1 para los demás nodos.
• Los nodos de la misma generación tienen el mismo nivel.
• Grado de un nodo, es el número de flechas que salen de
ese nodo (hijos). El número de las que entran siempre es
uno.
• Grado de un árbol, es el mayor grado que puede hallarse
en sus nodos.
• Longitud del camino entre 2 nodos: es el número de arcos
que hay entre ellos.
0.
Raíz
hijo
Padre
Hermano Subárbol

hoja
Nivel de profundidad = 6
Grado de un nodo = 3
Grado del árbol = 3
Considere el árbol con raíz v0

v0

v1 v2 v3

v4 v5 v6

v8 v9 v10
v7

a. Nivel de v5: 2 b. Nivel de v0: 0


c. Altura del árbol: 3 d. Hijos de v3: v5 y v6
e. Padre de v2: v0 f. Hermanos de v8: v7 y v9
g. Descendientes de v3: v5, v6 y v10 h. Ancestros de v5: v0 y v3
Ejemplo
• Un grupo de ajedrecistas que luchan por un
campeonato. Cada ajedrecista tiene una única
oportunidad para enfrentar al campeón vigente, y
que el perdedor de cualquier encuentro será
eliminado de la contienda.
o Sea A = (V, E) un grafo no dirigido donde los vértices de V
representan los ajedrecistas y las aristas de E representan los
encuentros.
o Sea V = { v1, v2, v3, v4, v5, v6, v7, v8, v9 }.
o Al inicio, v1 es el campeón vigente y que se dan los siguientes
encuentros:
• v1 venció a v2, v3 y v4 y pierde con v5.
• v5 venció a v6 y v7 y pierde con v8.
• v8 pierde con v9.
• El árbol que detalla esta situación, es el
siguiente:

 Los vértices v2, v3, v4, v6, v7, v9 son


hojas.
 Los vértices v1, v5, v8 son ramas.
• Algunas propiedades.
Sea G =(V,A) un árbol. Entonces:
o Entre cada par de vértices x,y hay un único camino
o Al quitar de A cualquier arista resulta un bosque con 2
árboles
o Al añadir una arista nueva siempre se obtiene un ciclo
o |A| = |V| -1
Arbol m-ario
T1 T2 T3

T1 es un Arbol T2 es un Arbol Ternario T3 es un Arbol 5-ario


binario completo completo completo
T4

T4 no es un Arbol completo para m, ya que algunos vértices internos


tienen dos hijos, y otros tres.
Ejemplos

3-ario 2-ario o binario binario completo


Los árboles binarios son muy importantes, ya que existen métodos eficientes
para implementarlos y hacer búsquedas en ellos.
Además es posible reorganizar cualquier árbol con raíz como un árbol
binario
Tipos de árboles
Un árbol ordenado: Es aquel en el que las ramas de los
nodos están ordenadas.
• Los de grado 2 se llaman árboles binarios.
• Cada árbol binario tiene un subárbol izquierda y
subárbol derecha.

- ^

A B / 3.5

C D
Árboles de expresión
• Representan un orden de ejecución

+
*
* +
+ -
A B * E

7 12 9
C D

(A* B) + C * D + E (7 + 12) * (-9)  -171


• Árboles similares: Los que tienen la misma estructura
(forma)
1 a

5
b e
2
d
c f g
3 4 6 7
9 h i
8

• Á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
Árbol binario completo:
• Es un árbol en el que todos sus nodos, excepto los
del ultimo nivel, tienen dos hijos.

• 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 Y NOTACIÓN
(CADENA) POLACAS
Notación polaca
• La evaluación se realiza de derecha a izquierda y
de abajo hacia arriba
Árboles recubridores
• Dado un grafo conexo G =(V,A) decimos que un
T
árbol =(V’,A’) es un árbol recubridor de G si V=V’, y
A A’.
• En el caso de grafos valorados interesa que la suma
de pesos de las aristas del árbol sea lo más pequeña
árbol de recubrimiento
posible:
mínimo.
es aquel que obtenemos en un grafo conexo y sin
ciclos. Árbol de máximo alcance cuyo valor es
mínimo, es decir, la suma de sus aristas es mínima.
ROBERT PRIM
• Nació en 1921, Sweetwater, (Estados Unidos) es
un matemático e ingeniero informático.
• Robert Prim en 1957 descubrió un algoritmo para la
resolución del problema del Árbol de coste total
mínimo(minimum spanning tree - MST). Este
problema es un problema típico de optimización
combinatoria, que fue considerado originalmente
por Otakar Boruvka en 1926 mientras estudiaba la
necesidad de electrificación rural en el sur de
Moravia en Checoslovaquia. Este problema
también fue resuelto por Joseph B. Kruskal en 1956.
Joseph KRUSKAL
• Joseph B. Kruskal investigador del Math Center (Bell-
Labs), que en 1956 descubrió su algoritmo para la
resolución del problema del Árbol de coste total
mínimo (minimum spanning tree - MST) también
llamado árbol recubridor euclídeo mínimo.
• El objetivo del algoritmo de Kruskal es construir un
árbol (subgrafo sin ciclos) formado por arcos
sucesivamente seleccionados de mínimo peso a
partir de un grafo con pesos en los arcos.
• El Algoritmo de Kruskal que resuelve la
misma clase de problema que el de Prim,
salvo que en esta ocasión no partimos
desde ningún nodo elegido al azar. Para
resolver el mismo problema lo que
hacemos es pasarle a la función una lista
con las aristas ordenada de menor a
mayor, e iremos tomando una para
formar el ARM.
ALGORITMO DE PRIM
• El algoritmo incrementa continuamente el tamaño
de un árbol, comenzando por un vértice inicial al
que se le van agregando sucesivamente vértices
cuya distancia a los anteriores es mínima. Esto
significa que en cada paso, las aristas a considerar
son aquellas que inciden en vértices que ya
pertenecen al árbol.

• El árbol recubridor mínimo está completamente


construido cuando no quedan más vértices por
agregar.
• La idea básica consiste en añadir, en cada paso, una
arista de peso mínimo a un árbol previamente
construido. Más explícitamente:
• Paso 1. Se elige un vértice u de G y se considera el
árbol S={u}
• Paso 2. Se considera la arista e de mínimo peso que
une un vértice de S y un vértice que no es de S, y se
hace S=S+e
• Paso 3. Si el nº de aristas de T es n-1 el algoritmo
termina. En caso contrario se vuelve al paso 2
ALGORITMO DE
KRUSKAL
• El algoritmo de Kruskal permite hallar el árbol minimal
de cualquier grafo valorado (con capacidades). Hay
que seguir los siguientes pasos:
1. Se marca la arista con menor valor. Si hay más de
una, se elige cualquiera de ellas.
2. De las aristas restantes, se marca la que tenga
menor valor, si hay más de una, se elige cualquiera
de ellas.
3. Repetir el paso 2 siempre que la arista elegida no
forme un ciclo con las ya marcadas.
4. El proceso termina cuando tenemos todos los
nodos del grafo en alguna de las aristas marcadas,
es decir, cuando tenemos marcados n-1 arcos,
siendo n el número de nodos del grafo
Ejemplo
• Determinar el árbol de mínima expansión
para el siguiente grafo:
o Elegimos, por ejemplo, la arista (5, 6) = 1 (menor valor) y la marcamos.
o Elegimos la siguiente arista con menor valor (1, 3) = 1 y la marcamos.
o Elegimos la siguiente arista con menor valor (5, 7) = 2 y la marcamos, ya
que no forma ciclos con ninguna arista de las marcadas anteriormente.
o Elegimos la siguiente arista con menor valor (1, 2) = 3 y la marcamos, ya
que no forma ciclos con ninguna arista de las marcadas anteriormente.
o Elegimos la siguiente arista con menor valor (6, 7) = 4 y la desechamos, ya
que forma ciclos con las aristas (5, 7) y (5, 6) marcadas anteriormente.
o Elegimos la siguiente arista con menor valor (2, 5) = 5 y la marcamos, ya
que no forma ciclos con ninguna arista de las marcadas anteriormente.
o Elegimos la siguiente arista con menor valor (4, 5) = 6 y la marcamos, ya
que no forma ciclos con ninguna arista de las marcadas anteriormente.
o FIN. Finalizamos dado que los 7 nodos del grafo están en alguna de las
aristas, o también ya que tenemos marcadas 6 aristas (n-1).
Por tanto el árbol de mínima expansión
resultante sería:
Ejercicio
Árbol de recubrimiento
mínimo

S-ar putea să vă placă și