Está en la página 1de 139

Grafos y Arboles

Motivacin

2
Motivacin

3
Definicin Grafo
Un grafo simple G = (V, A) consta de:
V ={v1,,vn} un conjunto de vrtices vi, i = 1,2, ,n ,

A = {e1,,em} es un conjunto de aristas ek ,

donde ek {vi, vj}, con vi, vj A, vi vj


Los vrtices se representan como puntos y las aristas como lneas
entre vrtices
Ejemplo:
G = (V,A)
V = {a,b,c,d }
A = {{a,b}, {b,c}, {a,c}, {a,d}, {d,b} }

4
Representaciones grficas
Es importante recordar que un mismo grafo puede tener
diferentes representaciones grficas
Ejemplo:

Dos representaciones del mismo grafo


G = ({a,b,c,d,e,f},{{a,b},{a,e},{a,f}{e,f},{b,c},{c,d},{e,d},{d,f}})

5
Tipos de Grafos
Si el orden influye en la aristas se habla de grafos
dirigidos:

En este caso a las aristas se les llama arcos y se


representan como pares para indicar el orden:
V = { a,b,c,d,e}
A ={(e,a), (a,b), (b,a), (d,a), (c,d), (d,c),(b,c),(c,b) }

6
Tipos de Grafos
Si se permite que exista ms de una arista para
un vrtice se tiene multigrafos:

7
Tipos de Grafos
Cuando las aristas tienen un valor numrico asociado se llama de
grafos valorados:

Al valor numrico asociado se le llama coste de la arista

8
Tipos de Grafos
Los tipos anteriores pueden combinarse, dando
lugar por ejemplo a multigrafos valorados, o
grafos dirigidos valorados, etc.

En el resto del tema cuando no se diga lo


contrario G representar un grafo o multigrafo
no dirigido

9
Conceptos Bsicos
Dos vrtices se dicen adyacentes si existe una
arista que los une
Los vrtices que forman una arista son los
extremos de la arista
Si v es un extremo de una arista a, se dice que a
es incidente con v
El grado de un vrtice v, gr(v) es el nmero de
aristas incidentes en v. Si hace falta indicar el
grafo en el que est v escribiremos gr(G,v)

10
Conceptos Bsicos
Ejemplo:

gr(6)= _______ gr(1) = ________

11
Conceptos Bsicos
Teorema (de los apretones de manos)
Sea G=(V,A) un grafo. Entonces: gr(v) = 2|A|
v V

Significado: la suma de los grados de todos los


vrtices es igual a 2 veces el nmero de aristas

12
Conceptos Bsicos
Ejemplo:

gr(a)+gr(b)+gr(c)+gr(d)+gr(e)+gr(f) =
3+4+5+2+4+4 = 22
2|A| = 2 ____ = _____

13
Conceptos Bsicos
Para cada n1 se llama grafo completo de orden n, y se
representa por Kn, al grafo de n vrtices conectados de todas
las formas posibles:

Pregunta: Cuntas aristas tiene en general Kn?

14
Conceptos Bsicos
Se llama ciclo de grado n, y se denota Cn, a
G=({v1,,vn},
{{v1, v2}, {v2, v3},, {vn-1, vn}, {vn, v1}} )

Nota: A menudo slo se consideran ciclos para n3

15
Representacin de Grafos
Para representar los grafos a menudo se utiliza la llamada matriz de
adyacencia
Se construye imaginando que en las filas y las columnas corresponden a los
vrtices. Se pone un 0 para indicar que 2 vrtices no son adyacentes, y un 1
para indicar que s lo son: 1 2 3 4 5 6
1
2
3
4
5
G 6

Matriz de Adyacencia de G
Para representarla en un ordenador se utilizan matriz de valores lgicos
(booleanos). True hay arista, False no hay arista

16
Representacin de Grafos
En el caso de un grafo no dirigido la matriz ser
simtrica. No ocurre lo mismo para grafos
dirigidos:

Se supone que la fila representa el vrtice


origen, y la columna el vrtice destino del arco
17
Representacin de Grafos
La matriz de adyacencia tambin permite representar
grafos valorados

El valor guardado es el coste de la arista/arco


En lugar de 0, a menudo se emplea un valor especial
para indicar que dos vrtices no estn conectados

18
Representacin de Grafos
En informtica a menudo en lugar de la matriz
se usa la lista de adyacencia
A cada vrtice le corresponde una lista con sus
adyacentes:

G
Lista de Adyacencia de G

19
Subgrafos
Sea G=(V,A). G=(V,A) se dice subgrafo
de G si:
1. V V
2. A A
3. (V,A) es un grafo
Resultado fcil de comprobar:
Si G=(V,A) es subgrafo de G, para todo v G
se cumple gr(G,v) gr(G,v)

20
Subgrafos
Ejemplo:

G1 y G2 son subgrafos de G

21
Subgrafos
Un grafo se dice cclico cuando contiene algn ciclo
como subgrafo
Ejemplo:

Contiene dos ciclos de long. 3: {a,e,f,a} y {_, _, _, _}


Contiene un ciclo de longitud 6: {_,_,_,_,_,_,_}
Contiene algn ciclo ms? ___

22
Ejercicio

23
Ejercicio

24
Grafo Complementario
El complementario G de un grafo G=(V,A)
tiene:
Los mismos vrtices que G
Si {u,v} G, entonces {u,v} G

Si {u,v} G, entonces {u,v} G

Una forma de construirlo:


Dibujar el corresp. grafo completo Kn, con n=|V|
Eliminar de Kn las aristas {u,v} G

25
Grafo complementario
Ejemplo : Complementario de

1 Representar K6 2 Marcar las 3 Eliminarlas


aristas de G

26
Caminos y conectividad
Un recorrido en un grafo G = (V,A) es una
sucesin de vrtices v0, v1, , vk tal que
{vi,vi+1} A para todo 0 i < k
La longitud de un recorrido v0, v1, , vk es k
Ejemplo:

f,b,c,f,e,d es un recorrido de
G longitud 5 sobre G
27
Caminos y conectividad
Observacin: Un recorrido puede repetir
vrtices, y puede comenzar y acabar en vrtices
diferentes
Un camino es un recorrido v0, v1, , vk en el
que vi vj para 0 i,j k, con i 0 o j k
Es decir en un camino todos los vrtices son
distintos entre s, excepto quizs el primero y el
ltimo

28
Caminos y conectividad
Ejemplo:

G
a,b,e,c,d es un camino

29
Caminos y conectividad
Si existe un camino entre dos vrtices se dice
que estn conectados
Sea G=(V,A) un grafo. La relacin
xRy x e y estn conectados
es de equivalencia (R ___)
Si para todo par de vrtices de un grafo estn
conectados se dice que el grafo es conexo g
Las componentes conexas de un grafo G son
los mayores subgrafos conexos de G
30
Caminos y conectividad
Ejemplo. Consideramos el grafo:

Se tiene que:
G no es conexo: no hay camino entre a y b, por ejemplo.
[a] = {a,c,e} [c] = {a,c,e} [e]={a,c,e} [b]={b,d} [d]={b,d}
G/R = {[a],[b]}
G tiene dos componentes conexas:

31
Caminos y conectividad
Un recorrido v0, v1, ,vk tal que v0 = vk es un circuito
Un camino v0, v1, , vk tal que v0 = vk es un ciclo

G a,b,f,c,e,f,a es un circuito f,c,b,e,f es un ciclo

32
Grafos Bipartitos
Un problema interesante en un grafo es
determinar su nmero cromtico:
Cuntos colores son necesarios para pintar los
vrtices de forma que cada arista una siempre
colores distintos?
Ejemplo: Grafo con nmero cromtico 4

33
Grafos Bipartitos
Aplicacin: coloreado de mapas
Cuntos colores se necesitan para colorear un
mapa de forma que no haya dos regiones con
frontera con el mismo color?

34
Grafos Bipartitos
Idea: Transformar el mapa en un grafo, donde
cada vrtice representa una regin y cada arista
un lmite entre regiones:

Cuntos colores se necesitan? nmero cromtico de este grafo?


35
Grafos Bipartitos
Resultado: Todos los mapas se pueden colorear con
un mximo de 4 colores
Solucin propuesta en 1879, probada en 1976 por K.
Appel y W. Haken con la ayuda de un ordenador.

36
Grafos Bipartitos
Nosotros vamos a interesarnos en un caso
particular: aquellos grafos que se pueden
colorear en dos colores grafos bipartitos
Definicin: Sea G=(V,A). Se dice que G es
bipartito si existen V1, V2 tales que:
1. V1 V2= V
2. V1 V2=
3. Para toda {vi,vj} A se cumple vi V1, vj V2

37
Grafos Bipartitos
Ejemplos:

Es bipartito ? S; V1 = {2,5}, V2={0,1,3,4,6,7}

38
Grafos Bipartitos
Idea de cmo pintarlo:
Empezar por un vrtice cualquiera, de color C1
Dibujar todos los adyacentes de color C2

Seguir este proceso hasta haber terminado

Parece que No es
bipartito, pero
cmo estar
seguros?

39
Grafos Bipartitos
Teorema: Una grafo es bipartito si y slo si no
tiene ciclos de longitud impar

Ejemplo anterior: No bipartito; contiene ciclos


de longitud impar (en la figura aparece marcado
uno de long. 3)

40
Recorridos eulerianos
Ciudad de Knisberg, en XVIII:

Pregunta: sera posible dar un paseo pasando por


cada uno de los siete puentes, sin repetir ninguno,
comenzando y acabando en el mismo punto?

41
Recorridos eulerianos
Representacin propuesta por Leonard Euler en
1736:

Existe un circuito que pase por todas las aristas


una sola vez?
42
Recorridos eulerianos
A estos circuitos se les llama circuitos eulerianos, y a
los grafos que los contienen grafos eulerianos
Grafo o multigrafo euleriano: admite un recorrido
que pasa por todas las aristas una sola vez, empezando
y terminando en el mismo vrtice. Los vrtices s se
pueden repetir
Ejemplo: Grafo euleriano.

Circuito euleariano: a,b,c,d,b,f,d,e,a,c,e,f,a

43
Recorridos eulerianos
Ejemplo: Grafo euleriano.

Circuito euleariano: a,b,c,d,b,f,d,e,a,c,e,f,a


Ejemplo: El siguiente grafo es euleriano

Encuentra un circuito euleriano:

44
Recorridos eulerianos
Cmo saber si un grafo (o multigrafo) es
euleriano?
Teorema de Euler: Un grafo conexo es
euleriano no tiene vrtices de grado impar
Ejemplo:

A tiene grado 3el grafo de los puentes no es euleriano.

45
Recorridos eulerianos
Si el grafo/multigrafo tiene slo dos vrtices de
grado impar se llama semi-euleriano. Se puede
convertir en euleriano aadindole una arista:

Semi-euleriano Euleriano

(__,__ grado impar)

46
Recorridos hamiltonianos
Un grafo se dice hamiltoniano si existe un ciclo
que recorre todos sus vrtices. Al ciclo se le
llama ciclo hamiltoniano
Ejemplos:

47
Recorridos hamiltonianos
No existe un mtodo sencillo para saber si un
grafo es no hamiltoniano problema muy
complejo
Ejemplo: Este grafo es hamiltoniano

...pero este no difcil de probar!

48
Isomorfismo de grafos
Idea: En ocasiones dos grafos con diferentes vrtices presentan
la misma estructura:

Cmo probarlo? Buscando una funcin biyectiva que convierta


los vrtices de uno en otro, preservando la estructura de las
aristas
Definicin: Dos grafos G=(V,A), G=(V,A) son isomorfos si
existe una funcin biyectiva f:VV tal que {a,b}A
{f(a),f(b)}A

49
Isomorfismo de grafos
Ejemplo:

f(1) = a f(2) = f f(6) = b


f(4) = h f(5) = d f(3) = g
f(7) = e f(8) = c

Los dos grafos son isomorfos. Demostracin: Construimos f


como se indica al lado de la figura. Se tiene que:
{1,2}f{a,f} {6,8}f{b,c} {1,6}f{a,b}
{2,8}f{f,c} {4,3}f{h,g} {1,4}f{a,h}
{2,3}f{f,g} {5,7}f{d,e} {4,5}f{h,d}
{3,7}f{g,e} {6,5}f{b,d} {8,7}f{c,e}

50
Isomorfismo de grafos
Y como saber si dos grafos no son isomorfos?
Hay que buscar alguna caracterstica que
diferencie la estructura de los dos grafos, como
por ejemplo:
Distinto nmero de vrtices o de aristas
Distinto nmero de ciclos de una longitud dada
Distinto nmero de vrtices con un mismo grado n
Aristas conectando vrtices con dos grados tales que
no existan aristas de las mismas caractersticas en el
otro grafo

51
Isomorfismo de grafos
Ejemplo: son isomorfos estos dos grafos?

Respuesta: no; G tiene un ciclo de longitud 3


(b,d,c,b) y G no tiene ninguno de longitud 3

52
Isomorfismo de grafos
Son isomorfos? ___

por qu? _________________________-

53
rboles
rbol: Grafo conexo y sin ciclos
Ejemplo:

A menudo se selecciona un nodo especial al que se llama raz, y


se dibuja con la raz en la parte superior, sus adyacentes ms
abajo y as sucesivamente:

54
rboles
Ejemplo: rbol

55
rboles
Ejemplo: Una estructura de carpetas y ficheros
es un rbol

56
rboles
Ejemplos:

Anlisis de expresiones rboles de bsqueda

57
rboles
Un poco de terminologa
Los vrtices de un rbol se llaman nodos
Los nodos descendientes inmediatos de un nodo son
sus hijos, y el nodo superior es el padre
A una secuencia descendente de nodos se le llama
rama
Los nodos sin hijos se llaman hojas, y los que s
tienen hijos nodos internos
Un conjunto de rboles es un bosque

58
rboles
Algunas propiedades.
Sea G =(V,A) un rbol. Entonces:
Entre cada par de vrtices x,y hay un nico camino
Al quitar de A cualquier arista resulta un bosque con
2 rboles
Al aadir una arista nueva siempre se obtiene un
ciclo
|A| = |V| -1

59
rboles recubridores
Dado un grafo conexo G =(V,A) decimos que
un rbol T =(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 ms
pequea posible: rbol de recubrimiento
mnimo.

60
rbol de recubrimiento mnimo

61
Algoritmo de Prim
Se usa para construir rboles recubridores:
1. Se elige un vrtice cualquiera del grafo como vrtice inicial
y se marca.
2. Mientras que queden vrtices no marcados elegimos un
vrtice no marcado que est conectado con alguno
marcado. Marcamos tanto el vrtice como una de las aristas
que lo unen con los ya marcados
En el caso de grafos valorados en cada paso se toma
la arista de menor peso que cumpla 2) y se obtiene un
rbol de recubrimiento mnimo.

62
Aplicaciones de grafos
Flujo mximo
Introduccin
Los digrafos se pueden usar para representar flujo en
redes.
Permiten modelar todo tipo de red, en particular las de
transporte y distribucin:
flujo de fludos en tuberas, piezas en una lnea de ensamblaje,
corriente en circuitos elctricos, informacin en redes de
comunicacin, etc.
Problema: Maximizar la cantidad de flujo desde un vrtice
fuente a otro sumidero, sin superar las restricciones de
capacidad.
Mtodo de Ford-Fulkerson para resolver el problema de
mximo flujo.
65

Redes de flujo
Una red de flujo es un grafo dirigido G=(V,A) en donde
cada arco (u,v)A tiene una capacidad no negativa c(u,v)0.
Se distinguen dos vrtices: la fuente s y el resumidero t.
Se asume que cada vrtice se encuentra en alguna ruta de s a
t.
Un flujo en G es una funcin f: VxV----> R tal que
Restriccin de capacidad: u,v en V, f(u,v) c(u,v)
Simetra: f(u,v) = - f(v,u)
Conservacin: u en V-{s,t} v en Vf(u,v) = 0
El valor del flujo es |f| = v en Vf(s,v)
El problema del flujo mximo trata de maximizar este flujo.
66

Ejemplo: Grafo dirigido con sus


capacidades
12
v3
v1 20
16

t
s 10 4
7
9

4
13

v2 v4
14
67
Ejemplo: Grafo dirigido con sus
capacidades y flujos

12/12
v3
v1 15/20
11/16

t
s 10 1/4
7/7
4/9

4/4 f(u,v)/c(u,v)
8/13
si f(u,v) 0 no se anota
v2 v4
11/14
Mtodo de Ford-Fulkerson
El algoritmo de Ford-Fulkerson propone buscar
caminos en los que se pueda aumentar el flujo,
hasta que se alcance el flujo mximo. La idea es
encontrar una ruta de penetracin con un flujo
positivo neto que una los nodos origen y
destino.
Mtodo de Ford-Fulkerson
Consideraremos las capacidades iniciales del
arco que une el nodo i y el nodo j como Cij y Cji.
Estas capacidades iniciales irn variando a
medida que avanza el algoritmo.
Denominaremos capacidades residuales a las
capacidades restantes del arco una vez que pasa
algn flujo por l, las representaremos como cij y
cji.
Para un nodo j que recibe el flujo del nodo i,
definimos una clasificacin [aj,i] donde aj es el
flujo del nodo i al nodo j.
Mtodo de Ford-Fulkerson
1. Identificar los nodos origen s y destino t
2. Identificar la capacidad mas alta que sale del nodo origen
3. Identificar el nodo intermediario con [af,i] (af es el flujo
mximo de ingreso y i el nodo de donde proviene dicho
flujo mximo)
4. Repetir paso 3, como si el nodo intermediario fuera el nodo
origen
5. Actualizar los flujos: Cij , Cji = (Ci k, Cj + k) donde:
C = Capacidad, i , j = ndices de los nodos
K = flujo mnimo del camino seleccionado
6. Retornar al paso 2 si al menos hay una salida de flujo del
nodo fuente
7. La suma de los K corresponde al Flujo Mximo.
Mtodo de Ford-Fulkerson
Del nodo 4 al
nodo 1 no hay
Capacidad de flujo
flujo mximo del
nodo 1 al nodo 4 0 4 20

0
0
10 0 5 Sumidero

Fuente 1 30 0
[ ,-]
20

Por ser la fuente


se considera la 10
cantidad de flujo 0
30
mximo de 20
ingreso ()
0
2 0 3
40

[ ,-]
Por no tener
nodo conocido
como inicio se
considera (-)

PASO 1
Mtodo de Ford-Fulkerson
0 4 20

0
0
Iteracin 1
10 0 5 [ 20,3]

1 30 0
[ ,-]
20 Paso 2
30
0
10 Paso 3
20
0
2 0 3
40
[ 30,1]
Actualizando las capacidades
0 4 20

0
0
K = min (,30,20) = 20
[ 20,3]
10 0 5
1 30 10 0 i=1,j=3
[ ,-]
20 20 Cij , Cji = (30 20, 0 + 20) = (10,20)
i=3,j=5
20
0
10 Cij , Cji = (20 20, 0 + 20) = (0,20)
30
20
0
2 0 3 0
40
[ 30,1]
Mtodo de Ford-Fulkerson [ 10,3]
0 4 20

0
0
Iteracin 2
[ 20,4]
10 0 5
1 10 20 K = min (,20,40,10,20) = 10
[ ,-]
20
C12 , C21 = (20 10, 0 + 10) = (10,10)
20 10 C23 , C32 = (40 10, 0 + 10) = (30,10)
30
0 C34 , C43 = (10 10, 0 + 10) = ( 0,10)
0
2 3
40
0
C45 , C54 = (20 10, 0 + 10) = (10,10)
[ 20,1] [ 40,2]

0 4 10

10
10
10 0 5
1 10 20
[ ,-]
10

20 0
30
0
10
2 10 3
30
Mtodo de Ford-Fulkerson
0 4 10

10 10
[ 30,2]
Iteracin 3
10 0 5
1 10 20 K = min (,10,30) = 10
[ ,-]
10
C12 , C21 = (10 10, 10 + 10) = (0,20)
20 0 C23 , C32 = (30 10, 0 + 10) = (20,10)
30
0
10
2 10 3
30
[ 10,1]

0 4 10

10
10
10 10 5
1 10 20
[ ,-]
0

20 0
20
0
20
2 10 3
30
Mtodo de Ford-Fulkerson
0 4 10

10 10
[ 20,2]
Iteracin 4
10 10 5
1 10 20 K = min (,10,10,20) = 10
[ ,-]
0
C13 , C31 = (10 10, 20 + 10) = (0,30)
20 0 C32 , C23 = (10 10, 30 + 10) = (0,40)
20
0 C25 , C52 = (20 10, 10 + 10) = (10,20)
20
2 10 3
30 [ 10,1]
[ 10,3]

0 4 10

10
10
10 20 5
1 0 20
[ ,-]
0

30 0
10
0
20
2 0 3
40
Mtodo de Ford-Fulkerson
[ 10,1]
0 4 10

10 10
[ 10,4]
Iteracin 5
10 20 5
1 0 20 K = min (,10,10) = 10
[ ,-]
0
C14 , C41 = (10 10, 0 + 10) = (0,10)
30 0 C45 , C54 = (10 10, 10 + 10) = (0,20)
10
0
20
2 0
3
40

10 4 0

10
20
0 20 5
1 0 20
[ ,-]
0

30 0
10
0
20
2 0 3
40
Mtodo de Ford-Fulkerson
10 4 0

10 20
0 20 5
1 0 20
[ ,-]
0

30 0
10
0
20
2 0
3
40

Flujo Mximo = k
= 20+10+10+10+10
= 60
rboles (continuacin)

78
Introduccin
Qu estructura de datos se debe utilizar para
representar estructuras jerrquicas o taxonmicas?
Ejemplo:

Director

SubDir1 SubDir2 SubDir3

JDpto1 JDpto2 JDpto3 JDpto4 JDpto5


Definicin de rbol
rbol: Grafo conexo y sin ciclos
Ejemplo:

A menudo se selecciona un nodo especial al que se llama raz, y


se dibuja con la raz en la parte superior, sus adyacentes ms
abajo y as sucesivamente:

80
rboles
Ejemplo: Una estructura de carpetas y archivos
es un rbol

81
rboles
Ejemplos:

Anlisis de expresiones rboles de bsqueda

82
Terminologa de rboles
Terminologa
Los vrtices de un rbol se llaman nodos
Los nodos descendientes inmediatos de un nodo son
sus hijos, y el nodo superior es el padre
A una secuencia descendente de nodos se le llama
rama
Los nodos sin hijos se llaman hojas, y los que s
tienen hijos nodos internos
Un conjunto de rboles es un bosque

83
Terminologa
Nodo: Cada elemento en un rbol.
Nodo Raz: Primer elemento agregado al rbol.

Nodo Raz
A

B C

D E F G

K
H
Ms terminologa
Nodo Padre: Se le llama as al nodo predecesor de un elemento.
Nodo Hijo: Es el nodo sucesor de un elemento.
Hermanos: Nodos que tienen el mismo nodo padre.

A
Nodo Padre
B C

F y G son Nodos Hijos de C


D E F G
F y G son hermanos
K
H
Ms terminologa

Nodo Hoja: Aquel nodo que no tiene hijos.

B C

D E F G
D, H, F y K son Nodos Hojas
K
H
Ms terminologa

Subrbol: Todos los nodos descendientes por la izquierda o


derecha de un nodo.

B C

D E F G
Subrbol derecho de C
K
H

Subrbol izquierdo de C
Altura y Niveles

A
Altura del Nivel 1
rbol = 4 C
B
Nivel 2
D E F G
Nivel 3
K
H
Nivel 4

La Altura es la cantidad de niveles.


Propiedades de rboles
Algunas propiedades.
Sea G =(V,A) un rbol.
Entonces:
Entre cada par de vrtices x,y
hay un nico camino
Al quitar de A cualquier arista
resulta un bosque con 2
rboles
Al aadir una arista nueva
siempre se obtiene un ciclo
|A| = |V| -1

89
rboles recubridores
Dado un grafo conexo G
=(V,A) decimos que un rbol T
=(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 ms
pequea posible: rbol
de
recubrimiento mnimo.
90
Ejercicio 1:
Determine un rbol de expansin o de recubrimiento

91
Ejemplo: rbol de recubrimiento
mnimo

92
Algoritmo de Prim
Se usa para construir rboles recubridores:
1. Se elige un vrtice cualquiera del grafo como vrtice inicial
y se marca.
2. Mientras que queden vrtices no marcados elegimos un
vrtice no marcado que est conectado con alguno
marcado. Marcamos tanto el vrtice como una de las aristas
que lo unen con los ya marcados
En el caso de grafos valorados en cada paso se toma
la arista de menor peso que cumpla 2) y se obtiene un
rbol de recubrimiento mnimo.

93
Ejercicio
Determine el rbol de expansin mnima

94
Solucin

95
Formalizando el algoritmo
Propiedad: Sea G = (V, E) un grafo conectado con pesos.
Sea U un subconjunto del conjunto de vrtices V.
Si e=(u, v) es la arista de menor costo considerando que u U
y v V-U, entonces hay un rbol de cubrimiento mnimo que
incluye (u, v) como arista.

V-U

U
e
Algoritmo de Prim
1 1 1
6 5 6 5 6 5
1 1 1
2 5 5 4 2 5 5 4 2 5 5 4
3 3 3
3 6 4 2 3 6 4 2 3 6 4 2

5 6 5 6 5 6
6 6 6

1 1 1
6 5 6 5 6 5
1 1 1
2 5 5 4 2 5 5 4 2 5 5 4
3 3 3
3 6 4 2 3 6 4 2 3 6 4 2

5 6 5 6 5 6
6 6 6
Costo Total = 15
Algoritmo de Kruskal
Aade una arista cada vez por orden de peso.
Acepta una arista si no produce un ciclo.
Se implementa usando una cola de prioridad.
Algoritmo de Kruskal
1 1 1
6 5 6 5 6 5
1 1 1
2 5 5 4 2 5 5 4 2 5 5 4
3 3 3
3 6 4 2 3 6 4 2 3 6 4 2

5 6 5 6 5 6
6 6 6

1 1 1
6 5 6 5 6 5
1 1 1
2 5 5 4 2 5 5 4 2 5 5 4
3 3 3
3 6 4 2 3 6 4 2 3 6 4 2

5 6 5 6 5 6
6 6 6
Costo Total = 15
Ejercicio
Ejemplo: Determine rbol de expansin mnima
Por el mtodo de PRIM
Por el mtodo de KRUSKAL
1 2
3
2
3 6 2
1

5 3
4
5 5

6
4
6
Ejercicio. Aplicar el Algoritmo de
Kruskal

101
rboles Binarios
rbol Binario
rbol donde ningn nodo puede tener mas de 2
subrboles.
En cualquier nivel n, solo puede contener de 1 a 2n-1 nodos

20
10 32
4 15 31 45

1 6
rbol Binario
rbol Completo: de Altura n es un rbol en el que para c/nivel, del
1 al n, est lleno de nodos. Todos los nodos hoja a nivel n ocupan
posiciones a la izquierda.

20

10 32

4 15 31 45

1 6
rbol Binario
rbol Lleno: tiene el mximo nmero de entradas para su altura:
2n. A Nivel k, tendr 2k1 nodos. (Nivel = Profundidad)
Lleno de Profundidad 3 = Nivel 2 => 22+11 nodos= 231= 7
nodos
rbol Degenerado: hay un solo nodo hoja (el 18) y cada nodo no
hoja tiene solo un hijo. Equivalente a una lista enlazada.

15 5
9

6 20
12
18
4 10 17 22

Lleno de profundidad 3 Degenerado de profundidad 4


CONVERSION DE UN ARBOL GENERAL A
ARBOL BINARIO
1.-La raz del rbol general es la raz del rbol binario.
2.-Para cada nodo se forma una lista encadenada simple con
todas las ramificaciones del nodo, constituyendo los sub arboles
derecho y los subrbol izquierdos lo constituyen el primer nodo
izquierdo que se ramifica. T

F A Z

X H

B Q M D
ARBOL BINARIO RESULTANTE

F A Z

X
H

B
Q
M D
OPERACIONES BASICAS EN UN ARBOL BINARIO

CREACION
RECORRIDO.
CREACION DEL ARBOL BINARIO.

El arbol se crea con una estructura y una cantidad de nodos definido.

raiz

A F

Z B Q

H
Recorrido del rbol
Recorrer el rbol significa que cada nodo sea procesado una vez
y solo una en un secuencia determinada. Existen 2 enfoques
generales
Recorrido en Profundidad: el proceso exige alcanzar las profundidades
de un camino desde la raz hacia el descendiente mas lejano del primer
hijo, antes de proseguir con el segundo.
Recorrido en Amplitud: el proceso se realiza horizontalmente desde la
raz a todos su hijos antes de pasar con la descendencia de alguno de ellos.

1 2 3

2 3 1 3 1 2
Preorden RID EnOrden IRD PostOrden IDR
RaizIZQDER IZQRaizDER IZQDERRaiz
Recorrido PreOrden (RID)

15

6 20

4 10 17 22

El recorrido en PreOrden del rbol es


el siguiente:
15, 6, 4, 10, 20, 17, 22
Recorrido EnOrden (IRD)
15

6 20

4 10 17 22

El recorrido en EnOrden del rbol es


el siguiente:
4, 6, 10, 15, 17, 20, 22
Recorrido PostOrden (IDR)
15

6 20

4 10 17 22

El recorrido en PostOrden del rbol es


el siguiente:
4, 10, 6, 17, 22, 20, 15
Comparacion de Recorridos

18
PreOrden RID
18, 12, 5, 9, 28, 20, 35 12 28
EnOrden IRD
5, 9, 12, 18, 20, 28, 35 5 20 35
PostOrden IDR
9
9, 5, 12, 20, 35, 28, 18
RECORRIDO EN AMPLITUD.
En el recorrido por amplitud se visitan los nodos por niveles. Para ello se utiliza
una estructura auxiliar tipo "cola" en la que despus de mostrar el contenido del
nodo, empezando por el nodo raz, se almacenan los punteros correspondientes a
sus hijos izquierdo y derecho.

Resultado:
20, 10, 30, 5, 15, 25
rbol Binario de Bsqueda (ABB)
Este tipo de rbol permite almacenar
informacin ordenada.
Reglas a cumplir:
Cada nodo del rbol puede tener 0, 1 2 hijos.
Los descendientes izquierdos deben tener un valor
menor al padre.
Los descendientes derechos deben tener un valor
mayor al padre.
Ejemplos de ABB

21
30

33 33
13 21

5 25 36 41
18 32

40 43
15
Por qu no son ABB?

21
5

33 6
13 1

17 18 22 4
25 2

15 40
Ejercicio
Almacenar los siguientes datos en un ABB
a) 2,6,8,9,15,25,34,45,78,99,126,332, 506

b) 5,7,2,9,1,16,,35,13,42,89,75,23,78,12

118
Proceso para buscar un nodo...
Buscar el 25
El
25 es mayor o
Paso Paso
21 menor que el 21?
1 2 21
El 25 es
13 33 33 mayor o menor
13
que el 33?

10 40 40
18 25 10 18 25

Paso
3 21

13 33

10 18 40
25
Encontrado
Proceso para agregar nodos...
Reglas:
El valor a insertar no existe en el rbol.
El nuevo nodo ser un Nodo Hoja del rbol.
Procedimiento
1. Buscar el Nodo Padre del nodo a agregar.
2. Agregar el nodo hoja.
Ejemplo
Agregar el valor 26

Paso El 26 es mayor o
menor que el 21?
Paso
21
1 2 21
El 26 es mayor
13 33 33 o menor que el
13 33?

10 40 40
18 25 10 18 25

Paso Paso
3 21 4 21

33 13 33
13

18 40 10 18 40
10 25 25
Se encontr el Nodo
Padre Agregar el nodo
26
Comentarios importantes....
El orden de insercin de los datos, determina la forma del
ABB.
Qu pasar si se insertan los datos en forma ordenada?
La forma del ABB determina la eficiencia del proceso de
bsqueda.
Entre menos altura tenga el ABB, ms balanceado estar, y
ms eficiente ser.
10

13

Este rbol est desbalanceado 18


porque los valores se agregaron
en el siguiente orden:
10, 13, 18, 21, 25, 33, 40 21

25
Proceso para eliminar un nodo
Si el nodo a eliminar es un:
Nodo hoja
Buscar el Nodo Padre del nodo a borrar.
Desconectarlo.
Liberar el nodo.
Nodo con un hijo
Buscar el Nodo Padre del nodo a borrar.
Conectar el hijo con el padre del nodo a borrar.
Liberar el nodo.
Nodo con dos hijos
Localizar el nodo predecesor o sucesor del nodo a borrar.
Copiar la informacin.
Eliminar el predecesor o sucesor segn sea el caso.
Caso: Eliminar Nodo hoja
Eliminar el valor 25

Paso 21
1
Nodo Padre
33 localizado
13

Paso
10 18 25 40 21
2

13 33

10 18 40
25
Desconectarlo y
liberar el nodo
Caso: Eliminar Nodo con un hijo
Eliminar el valor 25

Paso 21
1
Nodo Padre
33 localizado
13

Paso
10 18 25 40 21
2

29 13 33
25
27 30 40
10 18
29
Conectar el Nodo
Padre con el Nodo
27 30 Hijo y liberar el nodo.
Caso: Eliminar nodo con dos hijos

1. Localizar el nodo predecesor o sucesor del nodo


a borrar.
El PREDECESOR es el Mayor de los Menores.
El SUCESOR es el Menor de los Mayores.
Para la implementacin es igual de eficiente programar
la bsqueda del predecesor que del sucesor.
2. El valor del Predecedor (o sucesor) se copia al
nodo a borrar.
3. Eliminar el nodo del predecesor (o sucesor segn
sea el caso).
Predecesor

Uno a la IZQUIERDA y todo a la DERECHA

21

33 El predecesor de: Es:


13
33 30

10 25 40 21 13

29 29 27

27 30
Sucesor
Uno a la DERECHA y todo a la IZQUIERDA

21
El sucesor de: Es:
33 21 25
13

40
33 40
10 18 25
29 30
29

27 30
Caso: Eliminar Nodo con dos hijos
Eliminar el valor 21
utilizando el predecesor

Paso Localizar el valor a Paso 21


1 21 borrar 2

13 33
13 33

10 40
40 18 25
10 18 25
Localizar el Predecesor

Copiar el valor del Predecesor Paso


Paso al nodo que contena el valor 4 18
3 18 a borrar

13 33

13 33

10 25 40
18
10 18 40
25 Desconectar y liberar el nodo
del Predecesor
Caso: Eliminar Nodo con dos hijos
Eliminar el valor 21
utilizando el Sucesor
Paso Localizar el valor a Paso 21
1 21 borrar 2

13 33
13 33

10 40
40 18 25
10 18 25
Localizar el Sucesor

Copiar el valor del Sucesor al Paso


Paso nodo que contena el valor a 4 25
3 25 borrar

13 33

13 33

10 18 25 40
10 18 40
25 Desconectar y liberar el nodo
del Sucesor
Caminos ms cortos
En muchas aplicaciones (p.e. redes de
transporte) las aristas tienen peso
diferentes.
Problema: Hallar los caminos de peso total
mnimo desde un vrtice determinado
(fuente) a todos los dems vrtices.
Algoritmo de Dijkstra
La idea principal es realizar una bsqueda a lo ancho
ponderada empezando por el vrtice inicial f.
De manera iterativa se construye un conjunto de vrtices
seleccionados S que se toman del conjunto de vrtices
candidatos C segn el menor peso (distancia) desde f.
El algoritmo termina cuando no hay ms vrtices de G
fuera del conjunto formado.
El paradigma usado corresponde al mtodo voraz, en el
que se trata de optimizar una funcin sobre una coleccin
de objetos (menor peso).
Se usa un vector d[v] para almacenar la distancia de v a f.
Algoritmo de Dijkstra
Cuando se aade un vrtice al conjunto S, el valor de d[v]
contiene la distancia de f a v.
Cuando se aade un nuevo vrtice u al conjunto S, es
necesario comprobar si u es una mejor ruta para sus
vrtices adyacentes z que estn en el conjunto C.
Para ello se actualiza d con la relajacin de la arista (u, z):
d[z] = min( d[z], d[u] + w[u, z] )
30 60 90
30 u z 100
f
f 100

S
Algoritmo de Dijkstra
1 10 1 6 8 1 14
10 10 10
f f f
0 2 3 9 4 6 0 2 3 9 4 0 2 3 9 4 6
5 7 5 7 5 7
5 5 7
2 2 2

1 1 8 1 9
8 13 8 9
10 10 10
f f f
0 2 3 9 0 2 3 9 0 2 3 9 4 6
4 6 4 6
5 7 5 7 5 7
5 7 5 7 5 7
2 2 2
Caminos ms cortos
Problema: Hallar los caminos mnimos entre cualquier
par de nodos de un grafo.
Se puede usar el algoritmo de Dijkstra tomando cada
vrtice como fuente.
Existe una manera ms directa: algoritmo de Floyd.
Algoritmo de Floyd
Utiliza una matriz Ak[i][j], que contiene el camino ms corto
que pasa por los primeros k primeros vrtices.
Inicialmente Ak[i][j] = C[i][j] i j. Si no hay arista de i a j
C[i][j] = y los elementos diagonales se ponen a 0.
En la iteracin k (nodo k como pivote) se calcula, para cada
camino de v a w, si es ms corto pasando por k aplicando:
Ak[i][j] = min (Ak-1[i][j] , Ak-1[i][k] + Ak-1[k][j] ), i j.
Como no vara la fila y la columna k en la iteracin k, slo es
necesario una matriz A.
Algoritmo de Floyd
2
8
3
1
2
5
3
C[i][j] 1 2 3 A1[i][j] 1 2 3
1 0 8 5 1 0 8 5
2 3 0 2 3 0 8
3 2 0 3 2 0

A2[i][j] 1 2 3 A3[i][j] 1 2 3
1 0 8 5 1 0 7 5
2 3 0 8 2 3 0 8
3 5 2 0 3 5 2 0
Algoritmo de Floyd
Para obtener los caminos se procede como en Dijkstra. Se usa
una matriz P[i][j] para almacenar el camino:
P[i][j] = 0 si el camino es directo.
En otro caso, si
if ( A[i][k] + A[k][j] < A[i][j] )
P[i][j] = k
La complejidad del algoritmo es:
Con matriz de adyacencia: O(n3).
Para grafos dispersos es mejor usar la versin Dijkstra con
lista de adyacencia que toma
O(ne log n).
Cierre transitivo
Hay situaciones en las que slo se desea determinar si existe
un camino entre dos vrtices.
El algoritmo de Floyd se puede adaptar para resolver este
problema; el algoritmo resultante se llama algoritmo de Warshall.
Se usa la matriz de adyacencia A[i][j] = 1, si existe una arista
entre los vrtices i y j, sino se asigna el valor 0.
La matriz resultante se calcula aplicando la siguiente frmula
en la k-sima iteracin sobre la matriz A que almacenar el
resultado:
Ak[i][j] = Ak-1[i][j] or (Ak-1[i][k] and Ak-1[k][j])