Вы находитесь на странице: 1из 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.:
2

G1
1 3 b

G2
c

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> (i,j) Ej.: G1 = (V1,E1) V1 = {1,2,3} E1 = {(1,2),(2,3),(1,3)} V2 = {a,b,c} E2 = {<a,b>,<a,c>} denota el arco dirigido de i a j denota el arco no dirigido

G2 = (v2,E2)

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
4 2

1 y 2 son adyacentes 1 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(n-1) 2 arcos (Kn) Donde Kn = el grafo completo de n vrtices Ej.:
1

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

K4
3 4

n=4 Kn = 6
3

K3
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.:
B E

G8
A D A C

NO ES CONEXO
F

D F E G

G9
B

NO ES CONEXO
C

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 = (V2,E2) conexo tal que V1 V2 y E1 E2.

E C F

G8
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 es biconexo si no tiene puntos de articulacin.
A

B
1 3 2 4

G10
C D

G11

3. Una componente biconexa de un grafo G es un subgrafo de G que es biconexo maximal.


1 3 2 5 4 6 2 4

Componentes bsicas de G11

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

Un rboles un grafo acclico y conexo


A B

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

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

INVALENCIA: El grado de entrada del vrtice i (di ) es el nmero de arcos incidentes a i. EXVALENCIA: El grado de salida del vrtice i (di ) es el nmero de arcos incidentes desde i.
out

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 A
3 E D

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

Un grafo es fuertemente conexo si para cada par de vrtices distintos i j existe un circuito que los contiene. Ej.: 1 1
2 4 3 2 4 3

G20 Si es fuertemente conexo

G21 No es fuertemente conexo

Una componente fuertemente conexa es un subgrafo fuertemente conexo maximal. Ej.:


1 2 4 3 2 4 1 3

H2 H1

G22

H1 y H2 son comp. fuertemente conexas de G22

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 estn en E.
1 4 3 2

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.:
H1

2 4

H2

H1 y H2 son las componentes 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. Ej.: 1
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 2

A=
3 5 4

0 1 1 0 0

1 0 1 1 0

1 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 2

A=
4 3

0 0 0 0

1 0 0 1

0 1 0 0

0 0 0 0

En general, A no es simtrica

1. MATRIZ DE ADYACENCIA
C) GRAFO (ORIENTADO O NO) CON PESOS.-

W(i,j) :
aij = C Ej.:
1 25 2

si (i,j) E <i,j> E : de otro modo (C: Constante)

6 10 14 4 32 5

G26
3 16

A=

C C 5 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 pequeo

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 3 3 2 5 4
N I L N I L N I L N I L N I L

4 5

2. LISTAS ENLAZADAS DE ADYACENCIA


Ej.: Lista de adyacencia de G26:
1 2 3 4 5 2 4 1 2 4 25 14 5 6 32
N I L N I L N I L N I L N I L

3 5

10 16

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.:
1

2 1
2

Sus rboles Parciales 2 Mnimos:


2

1
1

El rbol parcial Mnimo no es nico

2
2

ALGORITMO DIJKSTRA / PRIM


1. 2. 3. Vrtice de rbol: es un vrtice que ya est en el rbol que se ha construido hasta ese momento. Vrtice vecino: es un vrtice que no es del rbol, pero que es adyacente a uno. 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.:
F A

2 3 1
G

6 3 4
H

4
C

5
I

2
A

B G A

3
7

G F

3 7

2
B

4
C

rbol

Vecinos

1
G

I G H

1
3
A

3
A

3 7
F

3 5

H F

2
B

2
C

4
B

1
G

5
F

3
A

2
C

2
B

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
F A

2 3 1
G

6 3 4 2
H

4
C

5
I

7
F

3 1
I G

6
3 4
H

4
C

ARCO IG HC AB AG GH BC IH FI GB FA

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

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:

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


i=1

k-1

PROBLEMA: 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

El 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 vecinos aadir y, (x,y) al rbol d (v,y) = d(v,x) + w(xy) x=y Fin Mientras Ejemplo:
A

2
5 2
G

9
F

6 5

4
C

1
I

5
H

Hallar un camino ms corto de A a F

SOLUCIN:
Iteracin 1: 2
A B F
G

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

Iteracin 3: 4
B C F I

9 5

2
A

rbol Iteracin 2: 9
A

Vecinos

5
G

2 5

dist (A,F) = 9 dist (A,C) = 6

5 6 4

2
B

dist (A,G) = 5

dist (A,F) = 9

dist (A,C) = 6

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

Vecinos

Iteracin 4: 9 2 dist (A,H) = 10


F I

4
B

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

2
A

5
G

4
B

Iteracin 5:

2
A

dist (A,F) = 8

1
G

5
2
I

dist (A,H) = 10

Hallar los caminos ms cortos entre todos los pares de vrtices i, j, tal que i j, utilizando el algoritmo de Warshall. Ck(i,j) = longitud de un camino ms corto de i a j que no pasa por vrtices intermedios con ndices mayor que k C0(i,j) = W(i,j) i=j (i,j) E (<i,j> E) (i,j) E (<i,j> E)

Supongamos que ya se gener Ck-1, para generar Ck se consideran dos casos: 1. 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 Ck-1(i,j) 2. 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 Ck-1(i,k) + Ck-1(k,j) Entonces: 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

C0 = 6 3

11 2 11 2 14

6
4 11 3

4 C1 = 6 10 3 7
V2 2

V1

10 4 C2 = 6 10 3 7
9 C3 = 5 3 4 9 7

6 2 9
6 2 9

V3

RECORRIDO DE GRAFOS
Recorrer significa visitar cada vrtice del grafo Esto implica examinar, visitar o procesar todos los vrtices y arcos del grafo A. BSQUEDA PRIMERO A LO ANCHO 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, y as, sucesivamente. Los vrtices son visitados en el orden de su distancia del vrtice de partida.
Procedure BFS (v) [Breadth First Search) {Q es una cola inicializada en 0} 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 Fin Mientras

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

Вам также может понравиться