You are on page 1of 17

TEORIA DE GRAFOS

Definicin:
Consideremos los siguientes conjuntos:
El conjunto de nodos

El conjunto de arcos

V v1, v2, ..., vn


A (v1 , v2), (v1 , v3),...., (vi, vj)

El conjunto:
A V *V

Definicin: Arista:
Es un arco sin orientacin

Definicin: Grafo
Un grafo es conjunto G(V, A) conjunto de nodos unidos por:
Arcos: grafo dirigido
Aristas: grafo no dirigido

V 1, 2, 3, 4, 5
A (1 , 2), (1 , 3), (1 , 4), (4 , 5), (3 , 5), (2,5), (2,4)

Definicin: Grafo orientado


Un grafo orientado es aquel donde un vrtice en el arco se considera como un
vrtice inicial y otro como extremo final:
2

a = (v1,v2) donde
v1: es el extremo inicial y
v2: es el extremo final

3
Consideremos ahora el siguiente grafo y
daremos las siguientes definiciones:

6
9

8
4

Camino:
Es una sucesin de arcos
L(1,9) = (1,3), (3,2), (2,5), (5,7), (7,9)

Camino Simple:
Es una sucesin de arcos, donde ningn arco se repite
L(1,8) = (1,3), (3,4), (4,8)
L(1,7) = (1,3), (3,6), (6,5), (5,3), (3,6), (6,7) No es un camino simple

Cadena:
Es una sucesin de arcos sin tener en cuenta el sentido de los arcos
K(2,7) = (2,3), (3,5), (5,7)

Circuito:
Es un camino donde el extremo final coincide con el extremo inicial
(4,8), (8,6), (6,5), (5,3), (3,4)

Ciclo:
Es una cadena donde el extremo final coincide con el extremo inicial
(2,5), (5,6), (6,3), (3,2)

Costo de un arco:
Es un nmero o peso que se asigna a un arco

Red:
Es un grafo donde se consideran costos
2

5
3

Conexidad de un grafo:
Consideremos el grafo G = (V,A) y sean dos vrtices:
vi y vj que pertenecen al conjunto V, entonces:
G es conexo (fuertemente conexo) existe un camino entre vi y vj
G es dbilmente conexo existe una cadena entre vi y vj

rbol:
Es una red conexa formada por un subconjunto de nodos de la red sin lazos o
ciclos.

rbol de expansin:
Es una red conexa formada por todos los nodos de la red sin lazos o ciclos.

RBOL DE EXPANSIN MNIMA

Dado un grafo G=(V, E) con pesos en las aristas, se pretende obtener un rbol
que conecte a todos los vrtices y la suma de los pesos sea mnima
Se basa en la forma como se construye un rbol uniendo de manera secuencial
los nodos de la red, utilizando la longitud ms corta de las ramas.

Aplicaciones:
Podemos tener los servidores de diversos edificios de la compaa o
corporacin y deseamos interconectarlos al mnimo costo.
O tenemos localidades que deseamos interconectarlas tambin al mnimo
costo, para obtener este tipo de soluciones usaremos el algoritmo de PRIM.

ALGORITMO DE PRIM
Sea:
N={1, 2, , n} los nodos de la red, usaremos la siguiente notacin:
Ak Conjunto de nodos conectados permanentemente en la iteracin k
Ak Conjunto de nodos no conectados

Paso 0:
Hacer A0= y 0 =N

Paso 1:
Empezar con cualquier nodo i de 0
Hacer A1={i} y 1= 0 - {i}
Hacer k=2

Paso k:
Seleccionar un nodo j* de k-1 que produzca la rama ms corta hacia un nodo
de Ak-1. Luego tenemos:
Ak=Ak-1+{j*}
k = k-1 - { j* }
Se finaliza cuando k es vaca, sino hacer k=k+1 y continuar

Ejemplo de aplicacin:
Una empresa de tecnologa est tendiendo cable entre seis torres de radar
para que se puedan comunicar entre ellas. En la siguiente matriz se dan las
distancias entre las torres. Qu conexiones se deben hacer para minimizar la
longitud total de cable?

De la Torre

1
6
8
4
9
5

1
2
3
4
5
6
Iteracin 0
C0 = 0

A la Torre
2 3 4 5
7 8 4 9
- 10 7 6
10 - 4 5
7 4 - 3
6 5 3 8 2 8 7

6
5
8
2
8
7
-

(k=0)
__
y
C0 = { 1,2,3,4,5,6 }
7
8

2
7
4

10

8
3

5
5

Iteracin 1

(k=1)
__
C1 = C 0 + 1
y

__
C1 = C 0 - 1

7
8

2
7
4
1

10

8
3

5
5

Iteracin 2

(k=2)
__ __
C2 = C 1 + 4
y
C2 = C 1 - 4
7
8

2
7

10

4
8
3

5
5

Iteracin 3

(k=3)
__
C3 = C 2 + 5
y

__
C3 = C 2 - 5
7
8

2
7

10

4
8
3

5
5

Iteracin 4

(k=4)
__
C4 = C 3 + 3
y

__
C4 = C 3 - 3

7
4
1

10

8
3

5
5

Iteracin 5

(k=5)
__
C5 = C 4 + 6
y

__
C5 = C 4 - 6
7
8

2
6
4
1

10

8
3

5
5

Los cables se deben de conectar de la siguiente manera:


1-4/1-2/4-3/4-5/3-6
Consiguiendo un total de 19.

EL PROBLEMA DE LA RUTA MS CORTA

El problema de la ruta ms corta determina la ruta ms corta entre un punto de


origen y un punto de destino en una red.
Aplicaciones:
Este tipo de problemas generalmente esta asociado a determinar la ruta mas
corta entre un par de ubicaciones geogrficas, pero las principales aplicaciones
consideran diversas etapas en un proceso de decisiones o proyecto y la
determinacin del mejor curso de accin.

ALGORITMO DE LA RUTA MS CORTA


Algoritmo de Dijkstra
Los clculos del algoritmo avanzan de un nodo i a un nodo inmediatamente
siguiente j, utilizando un procedimiento especial de clasificacin. Digamos que
Ui es la distancia ms corta del nodo 1 del punto de origen al nodo i y defina dij
(>=0) como la longitud del arco ( i, j ). Entonces la clasificacin para el nodo j
se define como
[ Uj, i ] = [Ui + dij, i ] , dij >= 0

Las clasificaciones de nodos en el algoritmo de Dijkstra son de dos tipos:


Temporales y permanentes. Una clasificacin temporal puede ser reemplazada
con otra clasificacin si se puede encontrar una ruta ms corta al mismo nodo.
El punto en el cual es evidente que no se puede encontrar una ruta mejor, el
estado de la clasificacin temporal cambia a permanente.
Los pasos del algoritmo se resumen como sigue:

Paso 0: Clasifique el nodo del punto de origen (nodo 1) con la clasificacin


permanente [ 0,- ]. Determine i =1.

Paso i:
(a) Calcule las clasificaciones temporales [ Ui + dij, i ] para c/nodo j al
que se puede llegar desde el nodo i, siempre y cuando j no este
clasificado permanentemente. Si el nodo j ya esta clasificado con [
Uj,k ] a travs de otro nodo k y si Ui + dij < Uj, reemplace [ Uj,k ] con
[ Ui + dij, i ].

(b) Si todos los nodos tienen clasificaciones permanentes detngase. De


lo contrario, seleccione la clasificacin [ Ur,s ] con la distancia mas
corta (=Ur) entre todas las clasificaciones temporales (rompa los
empates arbitrariamente).Sea i = r y repita el paso i.

Ejemplo: El siguiente grafo proporciona las rutas posibles y sus longitudes en


millas entre la ciudad 1(nodo 1) y otras cuatro ciudades (nodos 2 al 5).
Queremos determinar las rutas ms cortas de la ciudad 1 a cada una de las
cuatro ciudades restantes.

15
2

4
20

100

10

30
1

50
60

Iteracin 0. Asigne la clasificacin permanente [0,-] al nodo 1


Iteracin 1.
[100, 1]
15

4
50

100

10

20

60

30

[0, -] ( 0 )

[ 30, 1 ]

Es posible llegar a los nodos 2 y 3 desde el nodo 1(el ltimo clasificado permanente)
Nodo

Clasificacin

Status

[ 0, - ]

Permanente

[ 0+100, 1 ] = [ 100,1 ]

Temporal

[ 0+30, 1 ] = [ 30,1 ]

Temporal

El nodo 3, da la distancia menor (U3 = 30). Por consiguiente, el estado del nodo 3 se
cambia a permanente.
Iteracin 2
[ 100, 1 ]
[ 40, 3 ]

15
2

100

20

30

60

[ 0, - ] (0)

50

10

[ 90, 3 ]

[ 30, 1 ] (1)
Nodo

Clasificacin

Status

[0,-]

Permanente

[100,1]

[30,1]

[30+10,3]=[40,3]

Temporal

[30+60,3]=[90,3]

Temporal

Temporal
Permanente

La clasificacin temporal del nodo 4 se cambia a permanente (U4 = 40)

Iteracin 3
Se puede llegar a los nodos 2 y 5 desde el nodo 4.

[ 100, 1 ]
[ 40, 3 ] (2)

15
2

100

20

50

10

30

60

[ 0, - ] (0)

[ 90, 3 ]

[ 30, 1 ] (1)
Nodo

Clasificacin

Status

[0,-]

Permanente

40+15,4]=[55,4]

[30,1]

Permanente

[40,3]

Permanente

[90,3]
[40+50,4]=[90,4]

Temporal

Temporal

Iteracin 4
[ 100, 1 ] (1)
[ 55, 4 ] (3)

[ 40, 3 ] (2)

15

2
20

100

1
[ 0, - ] (0)

4
50

10

30
3
[ 30, 1 ] (1)

60

[ 90, 3 ] (2)
[ 90, 4 ] (3)

El nodo 5 queda como la nica clasificacin temporal debido a que el nodo 5 no


lleva a otros nodos, su estatus se convierte a permanente y el proceso termina.

La ruta ms corta entre los nodos 1 y cualquier otro nodo en la red se


determina empezando en el nodo del punto de destino deseado y
retrocediendo a travs de los nodos, utilizando la informacin proporcionada
por las clasificaciones permanentes.
En el ejm, la ruta ms corta de 1 a 5 cuesta 90 y la etiqueta nos indica que para
llegar al nodo 5 debemos pasar por el nodo 4.
La etiqueta en el nodo 4 nos indica que para llegar al nodo 4 debemos pasar
primero por el nodo 3.
La etiqueta en el nodo 3 nos indica que para pasar por el nodo 3 debemos
partir del nodo 1, por lo tanto, la ruta mas corta para ir del nodo 1 al 5 es: 1, 3,
4, 5

Para determinar la ruta ms corta entre el origen y cualquier nodo, proceda de


la siguiente manera:
Empezar en el nodo final, identificando la iteracin respectiva de la clasificacin
permanente.
Retroceda a travs de los nodos permanentes segn las iteraciones, hasta
llegar al nodo origen.

ALGORITMO DE FLOYD

Recordemos que el algoritmo de Dijkstra nos permite determinar la ruta mas


corta desde un nodo hacia los otros, ahora veremos que el algoritmo de Floyd
determina la ruta mas corta entre cualquier par de puntos.

La Idea del algoritmo de Floyd es:


Dados tres nodos i,j,k con distancias de conexin en sus arcos, es mas corto
llegar a k desde i a travs de j si:

dij + djk < dik

En este caso es mas barato reemplazar la ruta i k con i j k, este cambio


es llamado: la operacin triple y es aplicado sistemticamente a toda la red
siguiendo los siguientes pasos:

Paso 0:
Defina la matriz de distancia inicial D0 y la matriz de secuencia S0, las
diagonales estn marcadas con - para indicar que estn bloqueados, si no
existe una conexin entre nodos, colocar

Matriz Distancias (D)

d12

d13

d14

d21

d23

d31

d32

d41

d42

Matriz Secuencia (S)

d24

d34

d43

Paso general k
Defina el rengln k y la columna k como el rengln y la columna pivote. Aplique
la operacin triple a cada elemento dij en Dk-1 para todas las i y j. Si satisface la
condicin:
dik + dkj < dij , (i k, j k, i j)

Realice los siguientes cambios:


Cree Dk reemplazando dij en Dk-1 con dik + dkj
Cree Sk reemplazando sij en Sk-1 con k. Determine k = k + 1 y repita el paso k
hasta que k = numero de nodos - 1
Ejemplo:
5

4
3

4
6

5
10

15
3

D0

S0

---

10

---

---

---

10

---

15

---

---

---

---

---

D1

S1

---

10

---

---

13

---

10

13

---

15

---

---

---

---

---

D2

S2

---

10

---

---

13

---

10

13

---

15

---

---

---

---

---

D3

S3

---

10

25

---

---

13

28

---

10

13

---

15

---

---

---

---

---

D4

S4

---

10

12

---

---

11

---

10

11

---

10

---

---

---

12

10

---

---

D5

S5

---

10

12

---

---

11

---

10

11

---

10

---

---

---

12

10

---

---

Estas dos matrices contienen la informacin necesaria para hallar la ruta ms


corta entre dos nodos cualesquiera

Por ejemplo la distancia ms corta entre los nodos (1) y (5) es d1 5=12
Para determinar la ruta tener en cuenta el siguiente hecho: Un segmento (i , j)
es un eslabn directo slo si si j=j de lo contrario estn unidos a travs de otro
nodo intermedio.
Resulta 1, 2, 4, 5

FLUJO MAXIMO

Dado el arco (i , j) i<j, notacin ( Ci j , Cj i ) representa las capacidades de flujo


en las dos direcciones i j y j i respectivamente, en forma grfica
ponemos:

Ci j
i

Cj i
j

Paso 1:
Hacer capacidad residual igual a capacidad inicial, clasificar el nodo origen con
[, -1]. Determine i=1 e ir al paso 2.

Paso 2:
j Si nodos no clasificados a los que se llega del nodo i con arco residual
positivo (Ci j>0), si Si=, ir al paso 3 de lo contrario ir al paso 4.

Paso 3:
Determinar k Si de manera que Ci k=max{ Ci j} j Si, se determina ak = Ci k y
clasificar el nodo k con [ak , i]. Si k=n se tiene la ruta de penetracin, ir al paso
5 de lo contrario, haga i=k y continuar paso 2.

Paso 4(retroceso):
Si i=1, no son posibles otras penetraciones adicionales ir al paso 6. De lo
contrario deje que r sea el nodo que se ha clasificado inmediatamente antes del
nodo actual I, elimine I del conjunto de nodos adyacentes a r. Determine i=r y
vaya al paso 2.

Paso 5 (red residual):


Np={1, q,.., n} nodos de la ruta de penetracin luego el flujo mximo en esa
ruta es fp=min{a1, aq,..,an}, luego el flujo residual cambia: (Ci j -fp , Cj i+fp)si el
flujo es de i a j, (Ci j + fp , Cj i - fp) si va de j a i.

Paso 6: (Solucin)
El flujo mximo es la suma de los flujos de penetracin

You might also like