Está en la página 1de 22

Arboles

Matemticas Introduccin
Discretas  Definicin:
 Un rbol (libre) T es una grfica que satisface:
 Si v y w son vrtices en T, entonces existe un nico
camino simple de v a w .
Captulo 6:  Arbol con raiz es un rbol en el cual un vrtice
particular se designa como la raz.
Arboles

1 2

Arboles Arboles

Cont Cont
 Un rbol es un grafo conexo y sin ciclos.
Graf
Campeona de
Wimbledon  Propiedades:
Graf Seles  Si G = (V,A) es un rbol de n vrtices, entonces:
Sabatini Graf Seles Navratilova
a) Para todo par de vrtices x e y existe un nico camino de x a
y.
b) Todas las aristas de G son puentes.
V1 c) A = n - 1.
V2 V3 d) Todo rbol tiene al menos dos hojas (vrtices de grado uno).

V4 V5 V6 V7

3 4

1
Arboles Arboles

Cont Cont
 Uso tpico de los arboles:  La terminologa
 representacin de estructuras jerrquicas
 Hijo: X es hijo de Y, s y solo s el nodo X es apuntado por Y.
 organizaciones Tambin se dice que X es descendiente directo de Y.
 rbol genealgico
 directorios  Padre: X es padre de Y s y solo s el nodo X apunta a Y.
 acceso rpido a datos ordenados en nmero desconocido Tambin se dice que X es antecesor de Y.
 como vectores ordenados respecto a vectores normales  Hermano: Dos nodos sern hermanos si son descendientes
 sistemas de ficheros avanzados directos de un mismo nodo.
 elementos de representacin en juegos
 sistemas de compresin  Hoja: Se le llama hoja o terminal a aquellos nodos que no tienen
ramificaciones (hijos).

5 6

Arboles Arboles

Cont Cont

 Cont...  Cont...
 Nodo Interior: Es un nodo que no es raz ni terminal.  Altura: Es el nmero mximo de nivel, de todos los
nodos, que aparece en el rbol.
 Grado: Es el nmero de descendientes directos de un
determinado nodo.  Peso: Es el nmero de nodos del rbol sin contar la raz.

 Grado del Arbol: Es el mximo grado de todos los nodos  Longitud de Camino: Es el nmero de arcos que deben
ser recorridos para llegar desde la raz al nodo X. Por
del rbol. definicin la raz tiene longitud de camino 1, y sus
descendientes directos longitud de camino 2 y as
 Nivel de un vrtice: Es el nmero de arcos que deben
sucesivamente.
ser recorridos para llegar a un determinado nodo. Por
definicin la raz tiene nivel 1. Es la longitud del camino
simple de la raz al nodo.
7 8

2
Arboles Arboles

Cont... Cont...
 Cont...  Cont...
 Ejemplo 1:  Ejercicio en clases:
 Para el rbol dado los vrtices v1, v2, v3, v4, v5,v6, v7  Para el rbol T considere que la raz es e, g, d
tienen los niveles 0, 1, 1, 2, 2, 2, 2
 La altura del rbol es 2 d
i
a g
b
e
V1 j
h
V2 V3 c f

V4 V5 V6 V7

9 10

Arboles Arboles

Cont Cont...
 Terminologa y Caracterizaciones  Cont...
 Definicin:
 Sea T un rbol con raz v0. Suponga que x, y y z son
 Teorema:
vrtices en T y que (v0, v1, ..., vn) es un camino simple  Sea T una grfica con n vrtices. Las siguientes
en T. Entonces: afirmaciones son equivalentes:
a) Vn-1 es el padre de vn
a) T es un rbol
b) v0, v1, ..., vn-1 son ancestros de vn.
c) Vn es un hijo de vn-1. b) T es conexa y acclica
d) Si x es un ancestro de y, y es un descendiente de x. c) T es conexa y tiene n-1 aristas
e) Si x y y son hijos de z, x y y son hermanos.
d) T es acclica y tiene n-1 aristas
f) Si x no tiene hijos, x es vrtice terminal (o una hoja)
g) Si x no es un vrtice terminal, x es un vrtice interno (o
una rama).
h) El subrbol de T con raz en x es la grfica con
conjunto de vrtices V y conjunto de aristas E, donde V
es x junto con los descendientes de xy 11 12

3
Arboles Arboles

Arboles de expansin Arboles de expansin


 Definicin:  Teorema:
 Un rbol T es un rbol de expansin de una grfica G si T es una  Una grfica G tiene un rbol de expansin si y slo si G es
subgrafica de G que contiene a todos los vrtices de G. conexa .
 Observemos la definicin del siguiente modo: Sea una grafica G,
encontramos una sub. grafica de G del tal modo que esta sub.
grafica contenga todos los vrtices de la grafica original, sea de G,  Mtodos Para Identificar los rboles de expansin
a esto se le llama rbol de expansin.  Bsqueda a lo Ancho
 Bsqueda a Profundidad Retroceso

13 14

Arboles Arboles

Cont Cont
 Bsqueda a lo Ancho  Cont...
 La idea es procesar todos los vrtices de un nivel dado antes de pasar
al siguiente nivel superior.
 Tomemos la grafica G del ejemplo:
 Elegimos un orden (cualquiera) digamos abcdefgh, de los vrtices de G
 Elegimos el primer vrtice a y lo etiquetamos como la raz, siendo T la
grafica formada por el nico vrtice a sin aristas.
 Luego, agregamos a T todas las aristas (a,x) y los vrtices sobre los cuales
son incidentes, desde x = b hasta h, que no produzcan un ciclo al agregarse
a T.
 Repetimos este procedimiento con los vrtices del nivel 1, examinndolos
en orden.
 b: Incluir (b,d)
 c: Incluir (c,e)
 g: Ninguno
 Repetimos el procedimiento con los vrtices del nivel 2:
 d: Incluir (d,f)
 e: Ninguno
 Repetimos el procedimiento con los vrtices del nivel 3:
 f: Incluir (f,h)
15 16

4
Arboles Arboles

Cont Cont
 Bsqueda a Profundidad Retroceso  Cont...
 Este mtodo pasa a los niveles sucesivos de un rbol en la primera
oportunidad posible.
a) Elegimos el primer vrtice a y lo llamamos la raz
b) Agregamos a nuestro rbol la arista (a, x) con x mnimo. En
nuestro caso, agregamos la arista (a, b)
c) Repetimos este proceso. Agregamos las aristas (b, d) (d, c) (c, e)
(e, f) y (f, h)
d) Aqu nos damos cuenta que no podemos agregar (h, x), as que
retrocedemos al padre f de h e intentamos agregar una arista de la
forma (f, x)
e) Nuevamente, no podemos lograr esto, de modo que regresamos
al padre e de f.
f) Ahora podemos agregar la arista (e, g).
g) En este momento no se pueden agregar mas aristas, de modo que
finalmente retrocedemos hasta la raz y el procedimiento concluye

17 18

Arboles Arboles

Cont... Cont

 Ejemplo:  Algoritmo.
proceedure four_queens ( row )
 Problema de las cuatro reinas K := 1 // se comienza en la columna 1
 El problema consiste en colocar 4 fichas en // row (k) se incrementa antes de utilizarse, de modo que comenzamos en
el regln 1
cuadriculas 4*4 de modo que no haya 2 fichas en el row (1):= 0
mismo rengln, la misma columna o en diagonal. While k >0 do
 La idea es colocar las fichas de manera sucesiva en Begin
las columnas. Cuando no sea posible colocar las Row (k): = row (k) +1
fichas en la una columna, retrocedemos y ajustamos // se busca un movimiento vlido en la columna k
la ficha de la columna anterior. While row (k ) < 4 and hay conflicto en la columna k , rengln row (k) do
// se intenta con el siguiente rengln
 Entrada: Un arreglo row de tamao 4. row (k) := row (k) +1
 Salida: true, si existe una solucin
false, si no existe solucin
19 20

5
0 0 0 0
Arboles Arboles
0 0 0 0
0 0 0 0
Cont Cont... 0 0 0 0

1 0 0 0 0 0 0 0
 Cont... 1 5
0 0 0 0 1 0 0 0
If row (k) <4 then 0 0 0 0 0 0 0 0
//se ha determinado un movimiento vlido en la columna k
0 0 0 0 0 0 0 0
if k = 4 then //solucin concluida
return(true) 6 0 0 0 0
1 0 0 0 3 1 0 0 0
else //siguiente columna 2 1 0 0 0
0 0 0 0 0 0 0 0
begin 0 1 0 0 0 0 0 0
0 0 0 0
k : = k +1 0 1 0 0
0 0 0 0 0 1 0 0
row (k) : =0 7 0 0 1 0
end 4 1 0 0 0
1 0 0 0
else // se retrocede a la columna anterior 0 0 1 0
0 0 0 0
k:=k-1 0 0 0 0
0 1 0 0
End 0 1 0 0
return(false) // no existe solucin 8 0 0 1 0 soluci
solucin
End four_ queens 1 0 0 0
0 0 0 1
21 22
0 1 0 0

Arboles Arboles

Arboles de Expansin Mnima Cont...


 Definicin:  Ejemplo:
 La grfica con pesos G muestra seis ciudades y los costos
 Sea G una grfica con pesos. Un rbol de de construccin de carreteras entre ciertos pares de ellas.
expansin mnima de G es un rbol de expansin Debemos construir el sistema de carreteras de menor
de G con peso mnimo. costo .
B
A 4

5
 Mtodos de Identificacin de rboles de 2
3 C 1
Expansin Mnima D
6
 Metodo de PRIM
E 3 6
 Metodo de Kruskal
2 F

23 24

6
Arboles Arboles

Cont... Cont...
 Solucin:  Algoritmo de Prim
 La solucin se puede representar por medio de una subgrafica
que debe ser un rbol de expansin, pues debe contener a todos  Es utilizado para determinar un rbol de expansin mnimo,
los vrtices, debe ser conexa para llegar a una ciudad desde agregando aristas de peso mnimo que no formen un ciclo
cualquier otra y debe tener un nico camino simple entre cada
par de vrtices. en el rbol en cuestin, esto se hace de manera iterativa.

B 4 B
A 4 A  Entrada: Una grafica conexa con pesos con vrtices 1,....n y
5
vrtice inicial s. Cada arista (i,j) tiene un peso w(i,j), si no
2 3 2 existe arista, entonces w(i,j) = inf.
C D C D
 Salida: Un conjunto de aristas E en un rbol de expansin
6 1
E 3 E mnimo.
F 2 F

Un rbol de expansin de Un rbol de expansin de


peso 20 para la grafica G peso 12 para la grafica G
25 26

Arboles Arboles

Cont Cont
 Algoritmo.  Algoritmo.
8. for j:=1 to n do
procedure prim (w,n,s)
9. if v(j)=1 then //j es un vertice en el a.e.m.
//v(i)=1 si el vrtice se agreg al rbol de expansin mnimo 10. for k=1 to n do
//v(i)=0 si el vrtice no se agreg 11. if v(k)=0 and w(j,k)<min then
1. for i:=1 to n do 12. begin
2. v(i)=0 //todos los vertices no han sido agregados 13. add_vertex:=k
14. e:=(j,k)
3. v(s):=1 //se agrega el vrtice inicial al rbol de exp. minim. 15. min:=w(j,k)
4. E:= //Se comienza con un conjunto de aristas vaco 16. end
//Se colocan n-1 aristas en el rbol de expansin mnimo. //se agregan el vertice y la arista al arbol de expansion minima
5. for i:=1 to n-1 do 17. v(add_vertex):=1
18. E:=E U {e}
6. begin
19. end
//se agrega la arista de peso mnimo que tenga un vrtice en el 20. return(E)
a.e.m. y otro vrtice que no este en el a.e.m 21. end prim
7. min:=inf

27 28

7
Arboles Arboles

Cont... Cont...
 Vrtice Inicial A  Ejecutamos nuevamente el ciclo for de las lneas 8-16, las
aristas con un vrtice en el rbol y otro fuera del rbol son:
 Las aristas con un vrtice en el rbol y otro fuera del rbol son:  (A,B) 4
 (A,B) 4  (A,E) 3 Escogemos la arista (C,D) y la
 (A,C) 2 Escogemos la arista A,C pues tiene el  (C,D) 1 agregamos a E
 (A,E) 3 menor peso y la agregamos a E.  (C,E) 6
 (C,F) 3
4
B A
A
A 2
5 C
3
2
C
2
1
D
6 1
E 3 6 C
2
D
F
29 30

Arboles Arboles

Cont... Cont...
 Ejecutamos el ciclo 8-16 y tenemos dos aristas con el  Ejecutamos el ciclo 8-16 para escoger otra arista con peso
mnimo y con un vrtice en el a.e.m. y otro fuera.
mismo peso, sin importar la arista elegida obtendremos
 (A,B) 4
el a.e.m.
 (D,B) 5
 (A,B) 4
 (C,F) 3
 (A,E) 3 Escogemos la arista (A,E) y la
 (D,F) 6
agregamos a E Escogemos la arista (E,F) y la
 (D,B) 5  (E,F) 2 agregamos a E
 (C,E) 6 A A
 (C,F) 3 3
2 3
2
C C E
 (D,F) 6 E

1 1 2

D 31 D F 32

8
Arboles Arboles

Cont... Cont...
 Ejecutamos el ciclo 8-16 para escoger otra arista con peso
mnimo y con un vrtice en el a.e.m. y otro fuera. A
B
 En las lneas 17 y 18 se agrega el vertice B al a.e.m y la arista A 4
2 3
(A,B) se agrega al conjunto E 5 4
 (A,B) 4 Escogemos la arista (A,B) 2 C
3 C 1
E
 (D,B) 5 D
6
A 1 B
E 3 6 2
2 3
C E 2 F D
4 F
GRFICA G(V,E) RBOL DE EXPANSIN
MINIMA DE G(V,E)
1 2
B
D F
33 34

Arboles Arboles

Cont... rboles Binarios


 Cont...
 Definicin:
 El Algoritmo de Prim es un algoritmo codicioso, pues, optimiza la
eleccin en cada iteracin sin considerar las elecciones anteriores.  Un rbol binario es un rbol con raz en el cual
 Un algoritmo codicioso no es necesariamente un algoritmo correcto cada vrtice tiene cero, uno o dos hijos.
(produce la solucin adecuada u optima).
 El algoritmo del camino mas corto es un algoritmo codicioso y no nos  Si un vrtice tiene un hijo, ese hijo se designa
da una solucin optima. como un hijo izquierdo o un hijo derecho (pero no
b ambos).Si un vrtice tiene dos hijos, uno de ellos
Ruta optima
2 4 se designa como un hijo izquierdo y el otro se
a Algoritmo ruta mas designa como un hijo derecho.
8 z corta de a hasta z.
1 6
Algoritmo
codicioso
c
35 36

9
Arboles Arboles

Cont... Cont

Ejemplo:  Arbol Binario Completo


 En el rbol binario de la figura, a

el vrtice b es el hijo izquierdo  Un rbol binario completo es un rbol binario en


del vrtice a y el vrtice c es el el cual cada vrtice tiene dos o cero hijos.
hijo derecho del vrtice a. b c

 El vrtice d es el hijo derecho


del vrtice b; el vrtice b no d e
tiene hijo izquierdo.
 Teorema:
 El vrtice e es el hijo izquierdo g
 Si T es un rbol binario completo con i vrtices
f
del vrtice c; el vrtice c no internos, entonces T tiene i+1 vrtices terminales y
tiene hijo derecho. 2i+1 vrtices en total.

37 38

Arboles Arboles

Cont Cont

 Demostracin:  Teorema:
 Existe un vrtice que no es hijo de nadie: la raz.  Si un rbol binario de altura h tiene t vrtices
 Existen i vrtices internos, cada uno de los cuales tienen terminales, entonces
lg2 t h
dos hijos, existen 2i hijos.
 As la cantidad total de vrtices de T es 2i+1 y el nmero
de vrtices terminales es  Ejemplo:
(2i+1) i = i + 1  El rbol binario de la siguiente figura tiene altura h = 3 y el
nmero de vrtices terminales es t = 8.
 Para este rbol, la desigualdad del teorema anterior se
convierte en una igualdad

39 40

10
Arboles Arboles

Cont Cont

 Cont...  Arbol de Bsqueda Binaria


lg2 t = h  Definicin:
 Un rbol de bsqueda binaria es un rbol binario T
en el cual se asocian ciertos datos con los vrtices.
 Los datos estn ordenados de modo que, para cada
vrtice v en T, cada elemento de dato en el subarbol
izquierdo de v sea menor que el elemento de dato en
v y cada elemento de dato en el subarbol derecho de
v es mayor que el elemento de dato en v.

41 42

Arboles Arboles

Cont... Cont...
if v no tiene hijo izquierdo then
 Construccin de un algoritmo de bsqueda binaria begin
 Este algoritmo construye un rbol de bsqueda binaria. La entrada se lee en el orden agregar un hijo izquierdo l a v HIJO
con el cual fue enviada. Despus de leer cada palabra, sta se inserta en el rbol. guardar wi en l IZQUIERDO
search:= false //fin de la bsqueda
 Entrada: Una sucesin w1,.,wn de palabras distintas y la longitud n de la sucesin.
end
 Salida: Un rbol de bsqueda binaria T
else
v:= hijo izquierdo de v
procedure make_bin_search_tree(w,n) else //wi > s
Sea T el rbol con un vrtice, root if v no tiene hijo derecho then
Guardar w1 en root begin
agregar un hijo derecho r a v HIJO
For i := 2 to n do
guardar wi en r DERECHO
begin search:= false //fin de bsqueda
v:= root end
search:= true //encontrar un lugar para w1 else
while search do v:= hijo derecho de v
begin end //mientras
end // para
s:= palabra en v
return (T)
if wi < s then end make_bin_ search_ tree

43 44

11
Arboles Arboles

Cont... Cont...

FOUR
 Ejercicio:
 Coloque las palabras FOUR SCORE AND
SEVEN YEARS AGO OUR FOREFATHERS
AND SCORE
BROUGHT FORTH, en orden de aparicin, en un
rbol de busca binaria.
AGO FOREFATHERS OUR SEVEN

BROUGTH FORTH YEARS

45 46

Arboles Arboles

Cont... Cont...

 Solucin:  Root = FOUR


Root = FOUR for i: = 3 to n do
for i: = 2 to n do
FOUR v: = root =FOUR
v: = root =FOUR search: = true FOUR
search: = true while search do
While search do SCORE begin
begin s: =palabra en v
AND SCORE
s: =palabra en v s : =FOUR =ROOT=V
s : =FOUR =ROOT=V W 3 = AND
W 2 = SCORE if W i < s (AND < FOUR) verdadero
if W i < s (Score < FOUR) falso si no tiene hijo izquierdo
else // W i > s W 3 =hijo izquierdo
si no tiene hijo derecho entonces
W2 =Hijo derecho
47 48

12
Arboles Arboles

Cont... Cont...
else
 Root = FOUR s: =palabra en v  Root = FOUR
v: = hijo derecho
for i: = 4 to n do s : = SCORE =ROOT=V for i: = 5 to n do
v: = SEVEN ( Return to while )
v: = root =FOUR W 4 = SEVEN v: = root =FOUR
while search do
search: = true
search: = true if W i < s (SEVEN < SCORE ) falso while search do
begin
while search do else // W i > s s: =palabra en v
begin
begin si no tiene hijo derecho entonces s : = SEVEN =ROOT=V
s: =palabra en v
W5 =YEARS
s: =palabra en v W 4 = hijo derecho s : =FOUR =ROOT=V
if Wi < s (YEARS < SEVEN ) falso
s : =FOUR =ROOT=V W5 = YEARS
else // Wi > s
if Wi < s (YEARS < FOUR) falso
W 4 = SEVEN si no tiene hijo derecho entonces
if W i < s (SEVEN < FOUR) falso
else // Wi > s
si no tiene hijo derecho agregamos
FOUR W5 = hijo derecho
else // W i > s
si no tiene hijo derecho agregamos
FOUR pero como v si tiene hijo derecho entonces
end
pero como v si tiene hijo derecho entonces else
end v: = hijo derecho AND SCORE
v: = SCORE ( Return to while )
else
v: = hijo derecho
AND SCORE while search do
begin
v: = SCORE ( Return to while )
while search do
s: =palabra en v
s : = SCORE =ROOT=V
SEVEN
W5 =YEARS
begin SEVEN if Wi < s (YEARS < SCORE ) falso
else // Wi > s
si no tiene hijo derecho agregamos, pero
como v si tiene hijo derecho entonces:
YEARS
end
49 50

Arboles Arboles

Cont... Cont...
 Root = FOUR  Root = FOUR
for i: = 6 to n do for i: = 7 to n do
v: = root =FOUR v: = root =FOUR
search: = true search: = true
while search do while search do
begin FOUR begin
s: =palabra en v
FOUR
s: =palabra en v s : =FOUR =ROOT=V
s : =FOUR =ROOT=V W2 = OUR
W5 = AGO if Wi < s (OUR < FOUR) falso
if Wi < s (AGO < FOUR) verdadero
AND SCORE else // W7 > s AND SCORE
si no tiene hijo izquierdo agregamos si no tiene hijo derecho agregamos
pero como v si tiene hijo izquierdo pero como v si tiene hijo derecho
entonces
entonces end
end
AGO SEVEN else AGO OUR SEVEN
else v: = hijo derecho
v: = hijo izquierdo v: = SCORE ( Return to while )
while search do
v: = AND ( Return to while )
while search do YEARS
begin
s: =palabra en v YEARS
begin s : = SCORE =ROOT=V
s: =palabra en v W7 = OUR
s : = AND =ROOT=V if Wi < s (OUR < SCORE ) verdadero
W 6 =AGO si no tiene hijo izquierdo entonces
W7 = hijo izquierdo
if W i < s (AGO < AND ) verdadero
Si v no tiene hijo izquierdo entonces
51 52
W 6 = hijo izquierdo

13
Arboles Arboles

Cont... Cont...
 Root = FOUR
for i: = 8 to n do  Root = FOUR s: =palabra en v
v: = root =FOUR for i: = 9 to n do s : = AND =ROOT=V
search: = true
while search do
v: = root =FOUR W 9 = BROUGHT
begin search: = true if W i < s (BROUGHT < AND) falso
s: =palabra en v while search do else // W i > s
s : =FOUR =ROOT=V
W8 = FOREFATHERS
FOUR begin si no tiene hijo derecho agregamos
pero como v si tiene hijo derecho entonces
s: =palabra en v
if Wi < s (FOREFATHERS < FOUR) verdadero end
si no tiene hijo izquierdo agregamos
s : =FOUR =ROOT=V
pero como v si tiene hijo izquierdo W 9 = BROUGHT else
entonces AND SCORE if W i < s (BROUGHT < FOUR) verdadero v: = hijo derecho
end si no tiene hijo izquierdo agregamos v: = FOREFATHERS ( Return to while )
else pero como v si tiene hijo izquierdo entonces while search do
v: = hijo izquierdo end begin
v: = AND ( Return to while )
while search do AGO FOREFATHERS OUR SEVEN else
v: = hijo izquierdo
s: =palabra en v
begin s : = FOREFATHERS =ROOT=V
s: =palabra en v v: = AND ( Return to while ) W 9 = BROUGHT
s : = AND =ROOT=V while search do if W i < s (BROUGHT <
W8 = FOREFATHERS
if Wi < s (FOREFATHERS < AND) falso
YEARS begin FOREFATHERS) verdadero
si no tiene hijo izquierdo entonces
else // W i > s
W 9 = hijo izquierdo
si no tiene hijo derecho entonces
W8 =Hijo derecho

53 54

Arboles Arboles

Cont...
 Root = FOUR s: =palabra en v
for i: = 10 to n do s : = AND =ROOT=V
v: = root =FOUR W 10 = FORTH
search: = true if W i < s (FORTH < AND) falso
FOUR while search do
begin
else // W i > s
si no tiene hijo derecho agregamos
s: =palabra en v pero como v si tiene hijo derecho entonces
s : =FOUR =ROOT=V end
AND SCORE W 10 = FORTH
if W i < s (FORTH < FOUR) verdadero
else
v: = hijo derecho
si no tiene hijo izquierdo agregamos v: = FOREFATHERS ( Return to while )
pero como v si tiene hijo izquierdo entonces while search do
end
AGO FOREFATHERS OUR SEVEN else
begin
s: =palabra en v
v: = hijo izquierdo s : = FOREFATHERS =ROOT=V
v: = AND ( Return to while ) W 10 = FORTH
BROUGHT YEARS while search do
begin
if W i < s (FORTH < FOREFATHERS) falso
else // W i > s
si no tiene hijo derecho entonces
W 10= hijo derecho
END

55 56

14
Arboles rboles
Algoritmo para la Conversin de un rbol
General a un rbol Binario

 Siendo A un rbol general y B el rbol binario, el


algoritmo de conversin es el siguiente:
FOUR 1. La raz de B es la raz de A.
2. Seguimos el siguiente proceso para la creacin:
a) Enlazar al nodo raz con el hijo ms izquierdo.
AND SCORE b) Enlazar este nodo con los restantes descendientes del
nodo raz en un camino, con lo que se forma el nivel 1.
SEVEN c) A continuacin, repetir los pasos a) y b) con los nodos del
AGO FOREFATHERS OUR nivel 2, enlazando siempre en un mismo camino todos los
hermanos descendientes del mismo nodo . Repetir
BROUGHT FORTH YEARS estos pasos hasta llegar al nivel ms alto.
3. Girar el diagrama resultante 45 grados, para diferenciar
entre los subrboles izquierdo y derecho.

57 58

rboles Arboles

Cont Recorrido de un Arbol


 La bsqueda a lo ancho y a profundidad proporcionan formas
de recorrer un rbol, recorrerlo de forma sistemtica de
modo que cada vrtice sea visitado exactamente una vez.

 Otros mtodos para recorrer un rbol son:


 Preorden
 Entreorden
 Posorden

59 60

15
Arboles Arboles

Cont... Cont...
 Cont...
 Recorrido en Preorden  Examinaremos el algoritmo para este caso sencillo:
 Este algoritmo procesa los vrtices de un rbol binario utilizando  Si el rbol binario es vaco (no tiene hijos ) el algoritmo no procesa nada.
el recorrido en preorden.
 Decimos que PT es igual a la raz (A) procesamos la raz en la lnea 3.
procedure preorden(PT)
1. if PT es vaco then  En la lnea 5 llamamos a preorden con PT igual al hijo Izquierdo de la
2. return raz. Vimos que si la entrada de preorden consta de un nico vrtice
preoden procesa ese vrtice, as a continuacin procesamos el vrtice B
3. procesar PT y luego en la lnea 7 procesamos el vrtice C.
4. l:=hijo izquierdo de PT
5. preorden(l)
6. r:=hijo derecho de PT A
7. preorden(r)
end preorden
B C

61 62
7.6.1

Arboles Arboles

Cont... Cont...

 Cont...  Recorrido en Entreorden


A  Este algoritmo procesa los vrtices de un rbol binario
 Ejemplo: utilizando el recorrido en entreorden
 El preorden para B F
procedure entreorden(PT)
este rbol es:
C D G 1. if PT es vaco then
ABCDEFGHIJ 2. return
3. l:=hijo izquierdo de PT
E
H 4. entreorden(l)
5. procesar PT
I J 6. r:=hijo derecho de PT
7. entreorden(r)
end entreorden

63 64

16
Arboles Arboles

Cont... Cont...
 Cont...  Cont...
 Examinaremos el algoritmo para este caso sencillo:
 Si el rbol binario es vaco (no tiene hijos ) el algoritmo no  Ejemplo: A
procesa nada.  El entreorden
 Decimos que PT es igual a la raz (B) procesamos la raz en la B F
lnea 3. para este rbol
 En la lnea 4 llamamos a entreorden con PT igual al hijo es: C D G
Izquierdo de la raz. Vimos que si la entrada de entreorden CBDEAFIHJG
consta de un nico vrtice entreorden procesa ese vrtice, as a
continuacin procesamos el vrtice A y luego en la lnea 7 E H
procesamos el vrtice C.

A I J

B C
65 66

7.6.1

Arboles Arboles

Cont... Cont...

 Recorrido en Posorden  Cont...


 Este algoritmo procesa los vrtices de un rbol binario
utilizando el recorrido en posorden  Ejemplo: A

 El posorden para B F
procedure posorden(PT) este rbol es:
1. if PT es vaco then
2. return CEDBIJHGFA C D G
3. l:=hijo izquierdo de PT
4. posorden(l) E
H
5. r:=hijo derecho de PT
6. posorden(r)
7. procesar PT I J
end posorden

67 68

17
Arboles Arboles

Cont... Cont...

 Representacin de Expresiones Aritmticas  Cont...


 Consideraremos la representacin de Expresiones  Una expresin se puede representar como un rbol
aritmticas mediante rboles. binario.
 Restringiremos nuestros operadores a -

+,-,*,/ Ej.: (A+B)*C-D/E Esta seria la


representacin * /
mediante un rbol
 Las variables A,B,C,D,E se conocen como operandos binario de la expresin C D E
+
y los operadores trabajan sobre pares de operandos o (A+B)*C-D/E
expresiones
A B

69 70

Arboles Arboles

Cont... Cont...

 Cont...  Cont...
 En el subrbol raz el operador de -  Si recorremos el rbol en entreorden, obtenemos (e
divisin opera sobre los operandos insertamos un par de parntesis para cada operacin)
D y E. * / (((A + B) * C ) (D / E ))
 Esta es la forma con todos los parntesis de la expresin.
 En el subrbol cuya raz es * el + CD E
 No es necesario especificar cuales operaciones deben
operador de la multiplicacin opera
A B
realizarse antes que las dems, pues los parntesis indican
sobre el subrbol encabezado por + el orden.
que a su vez representa una
expresin y C. -

* /

+ CD E
71 72
A B

18
Arboles Arboles

Cont... Cont...

 Cont...  Cont...
 Si recorremos el rbol en posorden (notacin polaca inversa),  Se puede obtener una tercera forma de representacin
obtenemos aplicando el recorrido en forma prefija (notacin polaca).
AB + C * DE / - - * + ABC / DE
 Esta es la forma posfija de la expresin, aqu el operador se coloca
despus de los operandos.  Esta forma al igual que la anterior no necesita de parntesis
 La ventaja de la forma posfija es que no se necesitan parntesis en acerca del orden de las operaciones
relacin con el orden de las operaciones.

- -

* / * /

+ CD E + CD E
73 74
A B A B

Arboles Arboles

Isomorfismo de Arboles Cont...


 Dos grficas ( G1 y G2 ) son isomorfas si y slo si existen una  Ejemplo:
funcin, f, uno a uno y sobre el conjunto de vrtices de G1 al
 La funcin f del conjunto de vrtices del rbol T1
conjunto de vrtices de G2 que preserva la relacin de
adyacencia en los sentidos de los vrtices vi y vj son del ejemplo anterior al conjunto de vrtices del
adyacentes en G1si y slo si los vrtices f(vi) y f(vj) son rbol T2 est definido por la relacin.
adyacentes en G2. f(a)=1 ; f(b)=3 ; f(c)=2 ; f(d)=4 ; f(e)=5
c 1 2
a b 3
d
4 5
e
75 76

19
Arboles Arboles

Cont... Cont...

 Ejemplo:  Cont...
 Los rboles T1 y T2 de la siguiente figura no son  Existen rboles no isomorfos con cinco vrtices.
isomorfos, pues T2 tiene un vrtice (X) de grado 3, pero T1  El rbol tiene cuatro aristas.
no tien un vrtice de grado 3.  Si tuviera un vrtice v mayor que 4, v incidira en ms de
cuatro aristas.
 Cada vrtice en el rbol tiene 4 aristas como mximo.
v w x y  Determinaremos todos los rboles no isomorfos con cinco
a b c d e
vrtices, en que el grado mximo de los vrtices sea 4.
T1 T2  Luego determinaremos todos los rboles no isomorfos
z con cinco vrtices en los cuales el grado mximo de los
vrtice sea tres.

77 78

Arboles Arboles

Cont... Cont...

 rboles con Raz.


 Sea T1 un rbol con raz r1 y T2 con raz r2.
V2 V3  Los rboles de races r1 y r2 son isomorfos si existe una
V1 V V2 funcin, f, uno a uno y sobre el conjunto de vrtices de T1
V en el conjunto de vrtices T2.
 Siempre y cuando se cumplan las siguientes
V1 condiciones.
 a) Los vrtices v1 y v2 son adyacentes en T1 si y slo
si los vrtices f(vi) y f(vj) son adyacentes en T2
W1 W2  b) f(r1) = r2

79 80

20
Arboles Arboles

Cont... Cont...

 Ejemplo:  Ejemplo:
 rboles con raz T1y T2, son isomorfos.
 rboles con raz T1y T2, NO son isomorfos.
V1 W1
V1 W1
V2 V4 W2 W4 V2 V4 W2
W3 W3
V3
V3

V5 V7 W7
V6 W5 W6
V5 W4 W5

81 82

Arboles Arboles

Cont... Cont...

 Arboles Binarios Isomorfos  Ejemplo:


 Sea T1 un rbol binario de raz r1y sea T2 un rbol binario
con raz r, los rboles binarios T1 y T2 son isomorfos si V1
W1
tienen una funcin uno a uno y sobre el conjunto de
vrtices T1 al conjunto de vrtices T2. V2 W2

V3 V4
W3 W4
 a) Los vrtices v1 y v2 son adyacentes en T1 si y slo si
los vrtices f(vi) y f(vj) son adyacentes en T2. T1 T2
 b) f(r1) = r2
 c) v es un hijo izquierdo de w en T1, si y solo si f(v) es un
hijo izquierdo de f(w) en T2.
 d) v es un hijo derecho de w en T1, si y solo si f(v) es un
hijo derecho de f(w) en T2.
83 84

21
Arboles

Cont...

 Cont...
 Ejemplo:
 Los rboles binarios T1 y T2 no son isomorfos. La raz de v1 de
T1 tiene un hijo izquierdo pero la raz w1 de T1 no tiene un hijo
derecho.

W1
V1

V2 W2

V3 V4
W3 W4

T1 T2
85

22

También podría gustarte