Sunteți pe pagina 1din 42

TEORA DE LOS GRAFOS

Un grafo G es un par ordenado G (V,E), donde:


V es un conjunto no vacio, cuyos elementos son
llamados vrtices.
E es un conjunto de pares de elementos de V, que
son llamados arcos
Ej.:
a

G1

G2
1
3

TEORA DE LOS GRAFOS


Un arco es (no) orientado o (no) dirigido si (no) hay
una direccin asignada a l.
Un grafo es (no) orientado si todos sus arcos son
(no) orientados
<i,j> denota el arco dirigido de i a j
(i,j) denota el arco no dirigido
Ej.:
G1 = (V1,E1) V1 = {1,2,3}
E1 = {(1,2),(2,3),(1,3)}
G2 = (v2,E2) V2 = {a,b,c}
E2 = {<a,b>,<a,c>}

GRAFOS NO ORIENTADOS: G = (V,E)


1. Los vrtices i y j son adyacentes si (i,j) E, y se
dice que (i,j) es incidente sobre i y j. Por lo tanto
es adyacente si existe un arco que los conecte.
1

G3

1 y 2 son adyacentes
41 y 3 son adyacentes

(1,4) es incidente sobre 1 y 4


3

2. El grado o valencia del vrtice i (di) es el nmero


de arcos incidentes sobre i.
Ej.: En G3.- d1 = 3, d2 = 2, d3 = 2, d4 = 1

GRAFO COMPLETO
G es completo si tiene n(n1)
2 arcos (Kn)
Donde Kn = el grafo
completo de n vrtices
Ej.:
1

K4

SUBGRAFO:
Dado un grafo G, el grafo
no orientado H = (V1,E1) es
un subgrafo de G = (V,E) si
V1 V, E1 E
Ej.: Un subgrafo de K4 es:
1

n=4
Kn = 6
3

K3
3

K3 es subgrafo de K4

CAMINO
CAMINO:
Un camino del vrtice i1 al vrtice ik es una secuencia
de vrtices P = i1 i2 i3 i4ik, tal que (ij, ij+1) E, j =
1,2, .. , k-1
Ej.: En K4, P = 1,2,4 es un camino de 1 a 4.
CAMINO SIMPLE:
El camino P es simple si ningn vrtice se repite,
exceptuando posiblemente el primero y el ltimo
vrtices, y los arcos son diferentes.
Ej.: en K4, P = 1,2,1 (no es camino simple)
P = 1,2,3,1 (si es simple y es un camino
cerrado)
P = 1,2,3,4 (es simple)

CICLO

Un ciclo es un camino simple y cerrado (los


vrtices extremos son idnticos)
Ej. En k4: P = 2,3,1,2 es ciclo
P = 2,3,1,4,2 es ciclo

GRAFO CONEXO
Un grafo G = (V,E) es conexo (conectado), si para cada
par de vrtices distintos i,j, existe un camino de i a j.
Ej.:
E

G8

NO ES CONEXO

D
A

D
F

G9

NO ES CONEXO

E
G
B

COMPONENTE CONEXO
El subgrafo G1 = (V1,E1) del grafo G = (V,E) es una
componente conexa, si G1 es un subgrafo conexo
maximal, esto es, no existe un subgrafo G2 = (V 2,E2)
conexo tal que V1 V2 y E1 E2.

G8

E
C

A
D

BICONEXIDAD
1. v es un punto de articulacin para un grafo G si
existen vrtices distintos x y w <> v, tal que v
est en todo camino de x a w.
2. G esAbiconexo si
B no tiene puntos de articulacin.
5

G10

4
6

G11

3
C

3. Una componente biconexa de un grafo G es un


5
subgrafo
de G
que es biconexo
maximal.
4
1
2
2

Componentes bsicas de G11

RBOLES
Un grafo es acclico, si no tiene ciclos.
D

B
A

Un rboles un grafo acclico y conexo


A

GRAFOS ORIENTADOS
El arco orientado <i,j> es incidente a j, incidente desde
i. El vrtice i es adyacente a j, y j es adyacente desde i.
2

<1,2> es incidente a 2
es incidente desde 1

1
3
in

INVALENCIA: El grado de entrada del vrtice i (d i ) es el


nmero de arcos incidentes a i.
out

EXVALENCIA: El grado de salida del vrtice i (d i


nmero de arcos incidentes desde i.

) es el

G es completo, si tiene n(n-1) arcos K0n


Un Subgrafo es otro grafo con un subconjunto de
vrtices del conjunto de vrtices.
Un camino orientado es una secuencia de vrtices
Un ciclo orientado es un camino orientado, donde
el vrtice inicial es a su vez el vrtice final. El ciclo
orientado a su vez se conoce como Circuito.
2

CDE
no es un camino
C
ABCD
es un camino simple
ABCEA es un ciclo orientado

1
3

E
D

Un grafo es fuertemente conexo si para cada par de


vrtices distintos i j existe un circuito que los
contiene.
1
1
Ej.:
3

G20
G21
Si es fuertemente conexo No es fuertemente
conexo

Una componente fuertemente conexa es un subgrafo


fuertemente conexo
maximal. 1
1
H2
Ej.:
3

H1

G2 H1 y H2 son comp. fuertemente conexas de

Una secuencia de vrtices P = i1, i2, , ik, es un


semicamino o cadena en G si <ij, ij+1> E <ij+1,
ij> E, ambos
1 estn en E.
4

G23

P = 1,2,3,4 es un semicamino
Semicamino simple: es un camino en el cual,
ningn vrtice o arco se repite.
Semiciclo: es un semicamino simple cerrado

Un grafo orientado G = (V,E) es dbilmente


conexo si para cada par de vrtices distintos i j
existe un semicamino en G de i a j.
Ej.:
1

H1

2
4

H1 y H2 son las componentes


H2
dbilmente conexas de G24

G24
G23 s es dbilmente conexo
G24 no es dbilmente conexo

RBOL ORIENTADO
Un rbol orientado es un grafo orientado que es
dbilmente conexo y que no posee semiciclos.
Ej.: G23
RBOL CON RAIZ: Un rbol con raiz o enraizado
es un rbol orientado en la que un solo vrtice
tiene grado de entrada 0 y los otros tienen grado
de entrada 1.
1
Ej.:
Raz

2
4
3

REPRESENTACIN DE
GRAFOS

1. MATRIZ DE ADYACENCIA
A = [aij] ; A : n * n
A) CASO NO ORIENTADO.1: si existe el arco (i,j) E
aij =
0: de otro modo
Ej.:
1

0 1 1 0 0
1 0 1 1 0
A1= 1 0 0 1
0 1 0 0 1
0 0 1 1 0

En general, A es simtrica, la diagonal principal es nula

1. MATRIZ DE ADYACENCIA
B) CASO ORIENTADO.1: si <i,j> E
aij =
0: de otro modo
Ej.:
1

0
A0=
0
0

1
0
0
1

0
1
0
0

En general, A no es simtrica

0
0
0
0

1. MATRIZ DE ADYACENCIA
C) GRAFO (ORIENTADO O NO) CON PESOS.W(i,j) : si (i,j) E
aij =
<i,j> E
C
: de otro modo
Ej.:
1

25

10

G26

2
6

14

3
16

(C: Constante)

4
32

C
C
A5 =
C
C

25
C
C
6
C

C
10
C
C
C

C
14
C
C
32

C
C
16
C
C

C: Valor muy grande si es utilidad (M). Si W es costo, M es peque

2. LISTAS ENLAZADAS DE ADYACENCIA


N
I
L

Vrtice

Ej.: Lista de adyacencia de G25:


1
2
3
4
5

2
1
1
2
3

N
I
L

3
2
5

N
I
L

N
I
L

N
I
L

N
I
L

2. LISTAS ENLAZADAS DE ADYACENCIA


Ej.: Lista de adyacencia de G26:
1
2
3
4
5

2
4
1
2
4

25

N
I
L

14

N
I
L

32

N
I
L

10
16

N
I
L
N
I
L

RBOLES PARCIALES MNIMOS


Un rbol parcial para un grafo G = (V,E) es un subgrafo
que es rbol y contiene a todos los vrtices de G.
Sea G = (V,E,W) un grafo con pesos, el peso de un
subgrafo es la suma de los pesos de los arcos del
subgrafo.
Un rbol parcial mnimo es un rbol parcial de peso
mnimo o de costo mnimo.
Ej.:
Sus
1
1
rboles
2
2
Parciales 2
El rbol parcial
Mnimos: 2 1
Mnimo no es
3
1

nico

2
2

ALGORITMO DIJKSTRA / PRIM


1. Vrtice de rbol: es un vrtice que ya est en el rbol que se
ha construido hasta ese momento.
2. Vrtice vecino: es un vrtice que no es del rbol, pero que es
adyacente a uno.
3. Vrtice no visto: es un vrtice que no es del rbol y tampoco
es vecino.
Un arco candidato del vrtice vecino y, es el arco (x,y) con x
vrtice del rbol que es de peso mnimo.

El algoritmo sera:
Seleccionar un vrtice vecino
Mientras hay vrtices vecinos hacer:
Seleccionar un arco de peso mnimo entre un
vrtice de rbol y un vrtice vecino.
Aadir tal arco y vrtice vecino al rbol
Fin Mientras

ALGORITMO DIJKSTRA / PRIM


Ej.:

3
7

G
F

4
C

3
H

2
B

7
F

4
C

rbol

Vecinos

1
3

3
3

2
B

5
F

4
B

1
3

2
C

WT = 16

ALGORITMO VORAZ
Un algoritmo voraz es un algoritmo para
problemas de optimizacin en la que se hacen
elecciones ptimas localmente en cada paso.
El resultado final no es necesariamente ptimo.
El algoritmo de Dijkstra / Prim es voraz.
La solucin del algoritmo de Dijkstra / Prim s es
ptima.

RBOLES PARCIALES DE
COSTO MNIMO
1. ALGORITMO DE DIJKSTRA / PRIM
Seleccionar un vrtice vecino
Mientras hay vrtices vecinos hacer:
Seleccionar un arco de peso mnimo entre un vrtice
de rbol y un vrtice vecino.
Aadir tal arco y vrtice vecino al rbol
Fin Mientras

RBOLES PARCIALES DE COSTO MNIMO


2. ALGORITMO DE KRUSKAL
Procedimiento Kruskal (G,T,n)
{G = (V,E), N = |V|}
ET = 0 ; E = E ; i = 0
Mientras E 0 AND i n-1 hacer
Sea (u,w) un arco de costo mnimo de E
E = E- {(u,w)}
Si (u,w) no crea un ciclo en T
entonces ET = ET U {(u,w)}
i=i+1
Fin Si
Fin Mientras
Fin Procedimiento Kruskal

ALGORITMO KRUSKAL
Ej.:
7

1
I

1
I

4
C

2
3

4
C

3
H

ARCO
IG
HC
AB
AG
GH
BC
IH
FI
GB
FA

COSTO
1
2
2
3
3
4X
4X
5
6X
7X

WT = 16 (1+2+2+3+3+5)

El algoritmo Kruskal es voraz


La solucin que proporciona s es ptima

PROBLEMA DE CAMINOS MS CORTOS


Sea G = (V,E,W) grafo orientado o no con pesos.
Sea P = u1, u2, ., uk un camino de u1 al uk. El peso o longitud
de P se define:
k-1

PROBLEMA: W(P) = W (ui, ui+1)


i=1
Sea G = (V,E,W) un grafo
con pesos, y sean v, w V. Hallar
un camino ms corto de v a w.
SOLUCIN:
Utilizando el siguiente algoritmo de Dijkstra: Sea z un vrtice
vecino, tal que z es adyacente a por lo menos un vrtice del
rbol Vk, entonces existe un camino ms corto de v a vk.
Sea P = v, v1, v2, , vk un camino
=> P= v, v1, v2, , vk, Z es un camino de v a z
dist (v,z) = d (v,vk) + w(vkz)
distancia
temporal

distancia
permanente

algoritmo:
x=v
Mientras x w hacer
Seleccionar un arco candidato xy tal que
dist (v,y) = d (v,x) + w(xy) es mnimo entre todos los vrtices veci
aadir y, (x,y) al rbol
d (v,y) = d(v,x) + w(xy)
x=y
Fin Mientras

mplo:

2
I

4
C

5
H

Hallar un camino ms corto de A a F

SOLUCIN:
Iteracin 1:

5
G

rbol

dist (A,B) = 2
dist (A,F) = 9
dist (A,G) = 5

Iteracin 3:
4
B

9
2
G

Iteracin 2:
9
A

2
B

5
6
4

dist (A,F) = 9

Vecinos

dist (A,C) = 6
G

Vecinos

dist (A,G) = 5
dist (A,C) = 6

dist (A,F) = 9
dist (A,I) = 7
dist (A,H) = 10

Iteracin 4:

4
9

dist (A,F) = 9

dist (A,I) = 7

dist (A,H) = 10

Iteracin 5:

1
5

dist (A,F) = 8
dist (A,H) = 10

allar los caminos ms cortos entre todos los pares de vrtices i, j,


l que i j, utilizando el algoritmo de Warshall.
(i,j) = longitud de un camino ms corto de i a j que no pasa por
vrtices intermedios con ndices mayor que k

i=j
0
(i,j) =
(i,j) E (<i,j> E)
W(i,j)
(i,j) E (<i,j> E)

upongamos que ya se gener Ck-1, para generar Ck se consideran dos cas


El camino ms corto de i a j que no pasa por ningn vrtice intermedio
mayor a k, tampoco pasa por k, entonces su costo es C k-1(i,j)
El camino ms corto de i a j que no pasa por ningn vrtice intermedio
mayor a k, s pasa por k, entonces su costo es C k-1(i,k) + Ck-1(k,j)

ntonces:
Ck(i,j) = min (Ck-1(i,j), Ck-1(i,k) + Ck-1(k,j) k >= 1

ALGORITMO DE WARSHALL:
FOR K = 1, N
FOR I = 1, N
FOR J = 1, N
C (i,j) = min {C(i,j), C(i,k) + C(k,j)}
END
END
END
6
4

V1
11

V2
2

4
C06 =
3

11
2

4
C16 =10
3
7

11
2
14

10 4
C2 6= 10
3
7

6
2
9

9
4
3
C5
= 9
3
7

6
2
9

3
V3

RECORRIDO DE GRAFOS
Recorrer significa visitar cada vrtice del grafo
Esto implica examinar, visitar o procesar todos los vrtices y
arcos
del grafo PRIMERO A LO ANCHO
A.BSQUEDA
Se realiza una bsqueda por niveles. Se visitan los vrtices
que estn ms
cerca al vrtice de partida, luego, los vrtices que estn a
continuacin
del vrtice
de partida,
as, sucesivamente.
Procedure
BFS (v)y [Breadth
First Search)
Los vrtices
soncola
visitados
en el orden
{Q es una
inicializada
en 0}de su distancia del
vrtice
de partida.
Visitar,
marcar v
Insertar v en Q
Mientras Q 0 hacer
x = valor en el frente de la cola
eliminar x de Q
Para cada vrtice w adyacente a x no
marcado hacer
visitar y marcar w
insertar w en Q
Fin Para

BFS (A)
Q:

A F B I G C H

X= A F B I G C H
(H: Vrtice ms alejado del origen A)

B. BSQUEDA PRIMERO EN PROFUNDIDAD


PROCEDURE DFS (v) [Depth First Search]
Visitar y marcar v
Mientras hay un vrtice w no marcado adyacente a v hacer
DFS (w)
Fin Mientras

N
I
L

N
I
L

DFS (A)
v, mA
DFS (B)
v, mB
DFS (C)
v, mC
DFS (H)
v, mH
DFS (I)
v, mI
DFS (G)
v,mG
Fin
Fin
Fin
Fin
Fin
DFS (F)
v, mF

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