Vous êtes sur la page 1sur 66

Capitulo 14 (Continuacion)

Introduccion a la teoria de
Grafos y Caminos de Menor
Costo
High-Speed Networks and Internets, Second Edition
William Stallings
Traduccin Libre y comentarios de WYF
En lugar de Costo, el profesor prefiere mtrica.
1
Chapter 14 Overview of Graph Theory and Least-Cost Paths

Las siguientes lminas, y la clase


asociada, son material de apoyo para el
estudio de la materia. No son un
contenido exhaustivo del material.
Por lo tanto se les emplaza a
suplementar el estudio mediante el uso
de la bibliografa recomendada.

Que recuerdan de la clase


anterior? Que no
entendieron?

Grafos

Vertices
Aristas
Cual es el grafo que realmente sirve?

Arboles
Pesos | Metricas | Longitud | Distancia

Breadth First Search (BFS) para


encontrar el Spanning Tree

Particiona los verticies del grafo en varios niveles


Procesa todos los vertices de un nivel dado antes de
empezar con el siguiente nivel.
Comenzamos con cualquier vertice, x y le asignamos nivel 0
Ponemos todos los vertices adyacentes a el en el nivel 1
Sean Vi1, Vi2, Vi3, Vij, vertices en el nivel i
Considere todos los vertices adjacentes a Vi1 que no esten al nivel
1,2,,i
Asigne a estos el nivel (i+1)
Considere todos los vertices adjacentes a Vi2 que no esten al nivel
1,2,3,,i, (i+1)
Asigen estos tambien al nivel (i+1)
Hasta que todos los vertices hayan sido procesados

Chapter 14 Overview of Graph Theory and Least-C

Por ejemplo, usando el grafo


de ejemplo de la clase anterior

Elija un orden
El mas sencillo es V1,V2,V3,V4,V5,V6

Seleccionar la raiz
De nuevo, la mas sencilla es V1

El rbol T consiste ahora en un solo vertice V1 sin aristas


Aadamos a T cada arista (V1,x) y vertice x
De forma que no se produzcan ciclos
Lo que nos da las aristas (V1,V2), (V1,V3), (V1,V4) y los vertices V1,V2, V3
Este es el primer nivel

Repita para todos los vertices de nivel 1 para obtener el nivel 2


Ya se Aadieron todos los vertices?
De no ser asi, repita con los vertices del nivel 2 para obtener el nivel 3...

Chapter 14 Overview of Graph Theory and Least-C

Ejemplo de BFS

Chapter 14 Overview of Graph Theory and Least-C

Distancia de camino mas corto


BFS encuentra el camino de distancia mas
corta (medida en nmero de saltos) desde
un vertice fuente a todos los demas
vertices
Y el minimo numero de aristas en
cualquier camino desde s a v, (s,v)

Chapter 14 Overview of Graph Theory and Least-C

Tiempo estimado de corrida

Despues de la inicializacion, cada vertice es usado


exactamente una vez como punto de partida para
generar el siguiente nivel
El tiempo que esto toma esta en el orden de |V|

Cada arista que ya este en el arbol es rechazada si se


la examina otra vez
Cada arista que no este en el arbol es examinada
para ver si produce un ciclo. De no ser asi, se la incluye
El grueso del procesamiento de las aristas es una vez por
arista.
Por ende, el tiempo que toma es de orden |E|

El tiempo total que toma el algoritmo escala


linealmente con |V| y |E|
Chapter 14 Overview of Graph Theory and Least-C

Algoritmo de Bellman-Ford (1)


Definiciones (vers. Matematica)
s = vertice fuente (nuestro punto de partida)
w(i,j) = costo del enlace desde el vertice i al vertice j
w(i,i) = 0
w(i,j) = infinito si i & j no estan directamente
conectados por una arista.
w(i,j) 0 si i,j estan directamente conectados por una
arista
H = maximo numero de aristas en un camino en la etapa
actual del algoritmo
Lh(n) = costo del camino de menor costo desde s a n tal
que no hayan mas de H aristas
9
Chapter 14 Overview of Graph Theory and Least-C

El Algoritmo de Bellman-Ford
(2) Pasos (Vers. Matematica)
1.

Inicializacion
a.
b.

2.

L0(n) = Infinito para todo n <> s


Lh(s) = 0 para todo H

Cambio
a.

Para cada H subsiguiente mayor que 0


Para cada n distinto de s, calcule:
Lh+1(n) = min[Lh(j)+ w(j,n)]
ii.
Conecte a n con el vertice predecesor j que logre el
minimo
iii.
Elimine cualquier conexion de n con un vertice predecesor
j de la iteracion anterior
iv.
El camino desde s a n termina con un enlace desde j a n
i.

Chapter 14 Overview of Graph Theory and Least-C

10

El Algoritmo de Bellman-Ford
(Version Programatica)

Fuente: https://en.wikipedia.org/wiki/Bellman%E2%80%93Ford_algorithm Tomada: Feb 01, 2014. Para sus Referencias

procedure BellmanFord(list vertices, list edges, vertex source)

// This implementation takes in a graph, represented as lists of vertices and edges,

// and fills two arrays (distance and predecessor) with shortest-path information
// Step 1: initialize graph

for each vertex v in vertices:

if v is source then distance[v] := 0

else distance[v] := infinity

predecessor[v] := null

// Step 2: relax edges repeatedly

for i from 1 to size(vertices)-1:

for each edge (u, v) with weight w in edges:

if distance[u] + w < distance[v]:

distance[v] := distance[u] + w

predecessor[v] := u

// Step 3: check for negative-weight cycles

for each edge (u, v) with weight w in edges:

if distance[u] + w < distance[v]:


error "Graph contains a negative-weight cycle"
return distance[],predecessor[];

Chapter 14 Overview of Graph Theory and Least-C

11

El Algoritmo de Bellman-Ford
(Version Programatica)

procedure BellmanFord(list vertices, list edges, vertex


source)
// This implementation takes in a graph, represented as
lists of vertices and edges,
// and fills two arrays (distance and predecessor) with
shortest-path information

// Step 1: initialize graph

for each vertex v in vertices:

if v is source then distance[v] := 0

else distance[v] := infinity

predecessor[v] := null
Chapter 14 Overview of Graph Theory and Least-C

12

El Algoritmo de Bellman-Ford
(Version Programatica)

// Step 2: relax edges repeatedly


for i from 1 to size(vertices)-1:
for each edge (u, v) with weight w in edges:
if distance[u] + w < distance[v]:
distance[v] := distance[u] + w
predecessor[v] := u
return distance[],predecessor[]

Chapter 14 Overview of Graph Theory and Least-C

13

El algoritmo de Bellman-Ford
(3) en nuestro grafo de ejemplo

Chapter 14 Overview of Graph Theory and Least-C

14

El Algoritmo de Bellman-Ford
(4) Paso a Paso

Chapter 14 Overview of Graph Theory and Least-C

15

El Algoritmo de Bellman-Ford
(5) Notas

El tiempo de corrida es de orden |V| x |E|

Chapter 14 Overview of Graph Theory and Least-C

16

El algoritmo de Dijkstra (1)


Definiciones (Vers. Matematica)

N = El conjunto de Vertices en el Grafo


s = El vertice de arranque
T = El conjunto de los vertices incorporados hasta ahora.
Tree = el spanning tree para los vertices de T incluyendo
las aristas en el camino de menor costo desde s a cada
vertice en T
w(i,j) = el costo de la arista que va del vertice i a j
w(i,i) = 0
w(i,j) = Infinito si i, j no estan diractamente conectados por una
arista.
w(i,j) mayor que cero si i,j estan directamente conectados por
una arista.

L(n) = costo del camino de menor costo desde s hasta n


conocido hasta ahora
Al final del algoritmo, es efectivamente el menor costo de s a n

Chapter 14 Overview of Graph Theory and Least-C

17

El algoritmo de Dijkstra (2)


Pasos (Vers Matematica)
1.) Inicio
a.
b.

T = Tree = {s} hasta ahora solo el nodo de inicio ha sido


incorporado
L(n) = w(s,n) for n <> s el costo del camino hacia los
vecinos es el costo de las aristas

2.) Obtenga el siguiente vertice


a.
b.
c.

Buscar x que NO pertenezca a T tal que L(x) = min L(j), j NO


pertenece a T
Aada x a T y a Tree
Aada a T la arista incidente en x que tenga el menor costo

3.) Actualice los caminos de menor costo


a.

L(n) = min[L(n), L(x) + w(x,n)] para todo n que NO


pertenezca a T

Chapter 14 Overview of Graph Theory and Least-C

18

El Algoritmo de Dijstra (Vers


Programatica)

function Dijkstra(Graph, source):


for each vertex v in Graph:

dist[v]

:= infinity ;

previous[v]

:= undefined ;

end for

dist[source]

Q := the set of all nodes in Graph ;

while Q is not empty:

:= 0 ;

// Initializations
// Unknown distance function from source to v
// Previous node in optimal path from source

// Distance from source to source


// All nodes in the graph are unoptimized thus are in Q
// The main loop

u := vertex in Q with smallest distance in dist[] ;

remove u from Q ;

if dist[u] = infinity:
break ;

// all remaining vertices are

end if

for each neighbor v of u:

// inaccessible from source

alt := dist[u] + dist_between(u, v) ;

if alt < dist[v]:

dist[v]

previous[v]

decrease-key v in Q;

// Relax (u,v,a)

:= u ;
// Reorder v in the Queue

end if
end for

end while

return dist, previous;

// where v has not yet been removed from Q.

:= alt ;

// Source node in first case

end function
Tomado de https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm el 01 de Feb de 2014, con ligeras adaptaciones.

Chapter 14 Overview of Graph Theory and Least-C

19

El Algoritmo de Dijstra (Vers


Programatica)

function Dijkstra(Graph, source):


for each vertex v in Graph:

dist[v]

:= infinity ;

previous[v]

// Initializations
// Unknown distance function from source to v

:= undefined ; // Previous node in optimal path from source

end for

dist[source]

Q := the set of all nodes in Graph ; // All nodes in the graph are

:= 0 ;

// Distance from source to source


// unoptimized thus are in Q

Chapter 14 Overview of Graph Theory and Least-C

20

El Algoritmo de Dijstra (Vers


Programatica)

while Q is not empty: // The main loop Source node is first case

u := vertex in Q with smallest distance in dist[] ;

remove u from Q ;

if dist[u] = infinity:

break ;

// all remaining vertices are

end if

// inaccessible from source

for each neighbor v of u: // where v has not yet been removed from Q.

alt := dist[u] + dist_between(u, v) ;

if alt < dist[v]:

// Relax (u,v,a)

dist[v]

previous[v]

decrease-key v in Q; // Reorder v in the Queue

:= alt ;

end if

end for

end while

return dist, previous;

:= u ;

end function

Chapter 14 Overview of Graph Theory and Least-C

21

El algoritmo de Dijkstra (3)


nuestro grafo ejemplo

Chapter 14 Overview of Graph Theory and Least-C

22

El Algoritmo de Dijktra (4) Paso


a paso

Chapter 14 Overview of Graph Theory and Least-C

23

El algoritmo de Dijkstra (5)

Concluye cuando todos los vertices se aaden a


T
Requiere |V| iteraciones
Al terminar:
La L(x) que se asocia con cada vertice es el camino de
menor peso de s a x
El rbol resultante es un spanning tree

Define el camino de menor metrica desde s a todos los demas


vertices

Chapter 14 Overview of Graph Theory and Least-C

24

El algoritmo de Dijkstra (6)


Notas

Un paso aade un nodo al rbol, y aade la arista


de menor costo
El tiempo de corrida es del orden |V|2
Los resultados concuerdan con los de BellmanFord

Chapter 14 Overview of Graph Theory and Least-C

25

Results of Dijkstra and


Bellman-Ford

Chapter 14 Overview of Graph Theory and Least-C

26

Enrutamiento por Bellman-Ford


Distribuido (AST)

(a) Una subred. (b) las entradas desde A, I, H, K, y


la nueva tabla de enrutamiento para J

Enrutamiento por Bellman-Ford


Distribuido (2) (AST)

El problema del Conteo al Infinito.

Comparacion de la informacion
requerida (en redes) B-F

Funciona para pesos negativos. No muy util en


telecom, pero si en otros campos.
Los calculos para el vertice n requieren el
conocimiento del costo de todos los enlaces
hacia los vecinos de n ademas del costo total del
camino desde s hacia cada vecino en cuestion.
Cada vertice puede tener un conjunto de costos y
caminos hacia cada otro vertice del grafo.
Intercambia informacion con los vecinos directos
Cada vertice puede usar el paso 2 de BellmanFord basandose en la informacion de los vecinos
y en su conocimiento del costo de sus enlaces
para calcular las rutas (B-F distribuido)
29

Chapter 14 Overview of Graph Theory and Least-C

Comparacion de la informacion
requerida (en redes) Dijkstra
Requiere que todos los pesos sean
positivos
El paso 3 requiere que cada vertice tenga la
informacion completa de la topologia

Debe conocer el costo de cada arista del grafo.


Por ende, TODOS los vertices deben
intercambiar informacion.

Chapter 14 Overview of Graph Theory and Least-C

30

Otras notas
Ambos algoritmos convergen bajo
condiciones estaticas de topologia y peso.
Producen la misma solucion
Si los costos de los enlaces cambian, los
algoritmos se adaptaran, pero el B-F
distribuido tiene el problema de la cuenta
al infinito.
Si el costo de los enlaces dependen del
trafico, el cual a su vez depende de la ruta
seleccionada:

Esto genera condiciones de feedback


Esto puede causar inestabilidad
Chapter 14 Overview of Graph Theory and Least-C

31

PCCS

Chapter 14 Overview of Graph Theory and Least-C

32

Ejercicio para hacer juntos en clase

Chapter 14 Overview of Graph Theory and Least-C

33

TCP Traffic and Congestion Control in ATM Networks

Capitulo 14 (Continuacion)
Introduccion a la teoria de
Grafos y Caminos de Menor
Costo
High-Speed Networks and Internets, Second Edition
William Stallings
Traduccin Libre y comentarios de WYF
En lugar de Costo, el profesor prefiere mtrica.
1
Chapter 14 Overview of Graph Theory and Least-Cost Paths

Chapter 13

Las siguientes lminas, y la clase


asociada, son material de apoyo para el
estudio de la materia. No son un
contenido exhaustivo del material.
Por lo tanto se les emplaza a
suplementar el estudio mediante el uso
de la bibliografa recomendada.

Que recuerdan de la clase


anterior? Que no
entendieron?

Grafos

Vertices
Aristas
Cual es el grafo que realmente sirve?

Arboles
Pesos | Metricas | Longitud | Distancia

Breadth First Search (BFS) para


encontrar el Spanning Tree

Particiona los verticies del grafo en varios niveles


Procesa todos los vertices de un nivel dado antes de
empezar con el siguiente nivel.
Comenzamos con cualquier vertice, x y le asignamos nivel 0
Ponemos todos los vertices adyacentes a el en el nivel 1
Sean Vi1, Vi2, Vi3, Vij, vertices en el nivel i
Considere todos los vertices adjacentes a Vi1 que no esten al nivel
1,2,,i
Asigne a estos el nivel (i+1)
Considere
todos los vertices adjacentes a Vi2 que no esten al nivel

1,2,3,,i, (i+1)
Asigen estos tambien al nivel (i+1)
Hasta que todos los vertices hayan sido procesados

Chapter 14 Overview of Graph Theory and Least-C


ost Paths

Por ejemplo, usando el grafo


de ejemplo de la clase anterior

Elija un orden
El mas sencillo es V1,V2,V3,V4,V5,V6

Seleccionar la raiz
De nuevo, la mas sencilla es V1

El rbol T consiste ahora en un solo vertice V1 sin aristas


Aadamos a T cada arista (V1,x) y vertice x
De forma que no se produzcan ciclos
Lo que nos da las aristas (V1,V2), (V1,V3), (V1,V4) y los vertices V1,V2, V3
Este es el primer nivel

Repita para todos los vertices de nivel 1 para obtener el nivel 2


Ya se Aadieron todos los vertices?
De no ser asi, repita con los vertices del nivel 2 para obtener el nivel 3...

Chapter 14 Overview of Graph Theory and Least-C


ost Paths

Ejemplo de BFS

Chapter 14 Overview of Graph Theory and Least-C


ost Paths

Distancia de camino mas corto


BFS encuentra el camino de distancia mas
corta (medida en nmero de saltos) desde
un vertice fuente a todos los demas
vertices
Y el minimo numero de aristas en
cualquier camino desde s a v, (s,v)

Chapter 14 Overview of Graph Theory and Least-C


ost Paths

Tiempo estimado de corrida

Despues de la inicializacion, cada vertice es usado


exactamente una vez como punto de partida para
generar el siguiente nivel
El tiempo que esto toma esta en el orden de |V|

Cada arista que ya este en el arbol es rechazada si se


la examina otra vez
Cada arista que no este en el arbol es examinada
para ver si produce un ciclo. De no ser asi, se la incluye
El grueso del procesamiento de las aristas es una vez por
arista.
Por ende, el tiempo que toma es de orden |E|

El tiempo total que toma el algoritmo escala


linealmente con |V| y |E|
Chapter 14 Overview of Graph Theory and Least-C
ost Paths

Algoritmo de Bellman-Ford (1)


Definiciones (vers. Matematica)
s = vertice fuente (nuestro punto de partida)
w(i,j) = costo del enlace desde el vertice i al vertice j
w(i,i) = 0
w(i,j) = infinito si i & j no estan directamente
conectados por una arista.
w(i,j) 0 si i,j estan directamente conectados por una
arista
H = maximo numero de aristas en un camino en la etapa
actual del algoritmo
Lh(n) = costo del camino de menor costo desde s a n tal
que no hayan mas de H aristas
9
Chapter 14 Overview of Graph Theory and Least-C
ost Paths

El Algoritmo de Bellman-Ford
(2) Pasos (Vers. Matematica)
1.

Inicializacion
a.
b.

2.

L0(n) = Infinito para todo n <> s


Lh(s) = 0 para todo H

Cambio
a.

Para cada H subsiguiente mayor que 0


Para cada n distinto de s, calcule:
Lh+1(n) = min[Lh(j)+ w(j,n)]
ii.
Conecte a n con el vertice predecesor j que logre el
minimo
iii.
Elimine cualquier conexion de n con un vertice predecesor
j de la iteracion anterior
iv.
El camino desde s a n termina con un enlace desde j a n
i.

Chapter 14 Overview of Graph Theory and Least-C


ost Paths

10

El Algoritmo de Bellman-Ford
(Version Programatica)

Fuente: https://en.wikipedia.org/wiki/Bellman%E2%80%93Ford_algorithm Tomada: Feb 01, 2014. Para sus Referencias

procedure BellmanFord(list vertices, list edges, vertex source)

// This implementation takes in a graph, represented as lists of vertices and edges,

// and fills two arrays (distance and predecessor) with shortest-path information
// Step 1: initialize graph

for each vertex v in vertices:

if v is source then distance[v] := 0

else distance[v] := infinity

predecessor[v] := null

// Step 2: relax edges repeatedly

for i from 1 to size(vertices)-1:

for each edge (u, v) with weight w in edges:

if distance[u] + w < distance[v]:

distance[v] := distance[u] + w

predecessor[v] := u

// Step 3: check for negative-weight cycles

for each edge (u, v) with weight w in edges:

if distance[u] + w < distance[v]:


error "Graph contains a negative-weight cycle"
return distance[],predecessor[];

Chapter 14 Overview of Graph Theory and Least-C


ost Paths

11

El Algoritmo de Bellman-Ford
(Version Programatica)

procedure BellmanFord(list vertices, list edges, vertex


source)
// This implementation takes in a graph, represented as
lists of vertices and edges,
// and fills two arrays (distance and predecessor) with
shortest-path information

// Step 1: initialize graph

for each vertex v in vertices:

if v is source then distance[v] := 0

else distance[v] := infinity

predecessor[v] := null
Chapter 14 Overview of Graph Theory and Least-C
ost Paths

12

El Algoritmo de Bellman-Ford
(Version Programatica)

// Step 2: relax edges repeatedly


for i from 1 to size(vertices)-1:
for each edge (u, v) with weight w in edges:
if distance[u] + w < distance[v]:
distance[v] := distance[u] + w
predecessor[v] := u
return distance[],predecessor[]

Chapter 14 Overview of Graph Theory and Least-C


ost Paths

13

El algoritmo de Bellman-Ford
(3) en nuestro grafo de ejemplo

Chapter 14 Overview of Graph Theory and Least-C


ost Paths

14

El Algoritmo de Bellman-Ford
(4) Paso a Paso

Chapter 14 Overview of Graph Theory and Least-C


ost Paths

15

El Algoritmo de Bellman-Ford
(5) Notas

El tiempo de corrida es de orden |V| x |E|

Chapter 14 Overview of Graph Theory and Least-C


ost Paths

16

El algoritmo de Dijkstra (1)


Definiciones (Vers. Matematica)

N = El conjunto de Vertices en el Grafo


s = El vertice de arranque
T = El conjunto de los vertices incorporados hasta ahora.
Tree = el spanning tree para los vertices de T incluyendo
las aristas en el camino de menor costo desde s a cada
vertice en T
w(i,j) = el costo de la arista que va del vertice i a j
w(i,i) = 0
w(i,j) = Infinito si i, j no estan diractamente conectados por una
arista.
w(i,j) mayor que cero si i,j estan directamente conectados por
una arista.

L(n) = costo del camino de menor costo desde s hasta n


conocido hasta ahora
Al final del algoritmo, es efectivamente el menor costo de s a n

Chapter 14 Overview of Graph Theory and Least-C


ost Paths

17

El algoritmo de Dijkstra (2)


Pasos (Vers Matematica)
1.) Inicio
a.
b.

T = Tree = {s} hasta ahora solo el nodo de inicio ha sido


incorporado
L(n) = w(s,n) for n <> s el costo del camino hacia los
vecinos es el costo de las aristas

2.) Obtenga el siguiente vertice


a.
b.
c.

Buscar x que NO pertenezca a T tal que L(x) = min L(j), j NO


pertenece a T
Aada x a T y a Tree
Aada a T la arista incidente en x que tenga el menor costo

3.) Actualice los caminos de menor costo


a.

L(n) = min[L(n), L(x) + w(x,n)] para todo n que NO


pertenezca a T

Chapter 14 Overview of Graph Theory and Least-C


ost Paths

18

El Algoritmo de Dijstra (Vers


Programatica)

function Dijkstra(Graph, source):


for each vertex v in Graph:
dist[v]

:= infinity ;

previous[v]

:= undefined ;

end for

dist[source]

Q := the set of all nodes in Graph ;

while Q is not empty:

:= 0 ;

// Initializations
// Unknown distance function from source to v
// Previous node in optimal path from source

// Distance from source to source


// All nodes in the graph are unoptimized thus are in Q
// The main loop

u := vertex in Q with smallest distance in dist[] ;

remove u from Q ;

if dist[u] = infinity:
break ;

// all remaining vertices are

end if

for each neighbor v of u:

// inaccessible from source

alt := dist[u] + dist_between(u, v) ;

if alt < dist[v]:

dist[v]

previous[v]

decrease-key v in Q;

end for

end while

// where v has not yet been removed from Q.

// Relax (u,v,a)

:= alt ;
:= u ;
// Reorder v in the Queue

end if

// Source node in first case

return dist, previous;


end function
Tomado de https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm el 01 de Feb de 2014, con ligeras adaptaciones.

Chapter 14 Overview of Graph Theory and Least-C


ost Paths

19

El Algoritmo de Dijstra (Vers


Programatica)

function Dijkstra(Graph, source):


for each vertex v in Graph:

dist[v]

:= infinity ;

previous[v]

// Initializations
// Unknown distance function from source to v

:= undefined ; // Previous node in optimal path from source

end for

dist[source]

Q := the set of all nodes in Graph ; // All nodes in the graph are

:= 0 ;

// Distance from source to source


// unoptimized thus are in Q

Chapter 14 Overview of Graph Theory and Least-C


ost Paths

20

El Algoritmo de Dijstra (Vers


Programatica)

while Q is not empty: // The main loop Source node is first case

u := vertex in Q with smallest distance in dist[] ;

remove u from Q ;

if dist[u] = infinity:

break ;

// all remaining vertices are

end if

for each neighbor v of u: // where v has not yet been removed from Q.

// inaccessible from source

alt := dist[u] + dist_between(u, v) ;

if alt < dist[v]:

// Relax (u,v,a)

dist[v]

previous[v]

decrease-key v in Q; // Reorder v in the Queue

end for

end while

:= u ;

end if

:= alt ;

return dist, previous;


end function

Chapter 14 Overview of Graph Theory and Least-C


ost Paths

21

El algoritmo de Dijkstra (3)


nuestro grafo ejemplo

Chapter 14 Overview of Graph Theory and Least-C


ost Paths

22

El Algoritmo de Dijktra (4) Paso


a paso

Chapter 14 Overview of Graph Theory and Least-C


ost Paths

23

El algoritmo de Dijkstra (5)

Concluye cuando todos los vertices se aaden a


T
Requiere |V| iteraciones
Al terminar:
La L(x) que se asocia con cada vertice es el camino de
menor peso de s a x
El rbol resultante es un spanning tree

Define el camino de menor metrica desde s a todos los demas


vertices

Chapter 14 Overview of Graph Theory and Least-C


ost Paths

24

El algoritmo de Dijkstra (6)


Notas

Un paso aade un nodo al rbol, y aade la arista


de menor costo
El tiempo de corrida es del orden |V|2
Los resultados concuerdan con los de BellmanFord

Chapter 14 Overview of Graph Theory and Least-C


ost Paths

25

Results of Dijkstra and


Bellman-Ford

Chapter 14 Overview of Graph Theory and Least-C


ost Paths

26

Enrutamiento por Bellman-Ford


Distribuido (AST)

(a) Una subred. (b) las entradas desde A, I, H, K, y


la nueva tabla de enrutamiento para J

Enrutamiento por Bellman-Ford


Distribuido (2) (AST)

El problema del Conteo al Infinito.

En vector Distancia las buenas noticias se


propagan rpidamente, peor las malas noticias se
propagan lentamente....
No existen tcnicas realmente buenas para
resolver este problema con Todas las tipologas
posibles.
Este es un ejemplo de un tipo de problema mas
general llamado demora en la convergencia.

Comparacion de la informacion
requerida (en redes) B-F

Funciona para pesos negativos. No muy util en


telecom, pero si en otros campos.
Los calculos para el vertice n requieren el
conocimiento del costo de todos los enlaces
hacia los vecinos de n ademas del costo total del
camino desde s hacia cada vecino en cuestion.
Cada vertice puede tener un conjunto de costos y
caminos hacia cada otro vertice del grafo.
Intercambia informacion con los vecinos directos
Cada vertice puede usar el paso 2 de BellmanFord basandose en la informacion de los vecinos
y en su conocimiento del costo de sus enlaces
para calcular las rutas (B-F distribuido)
29

Chapter 14 Overview of Graph Theory and Least-C


ost Paths

Comparacion de la informacion
requerida (en redes) Dijkstra
Requiere que todos los pesos sean
positivos
El paso 3 requiere que cada vertice tenga la
informacion completa de la topologia

Debe conocer el costo de cada arista del grafo.


Por ende, TODOS los vertices deben
intercambiar informacion.

Chapter 14 Overview of Graph Theory and Least-C


ost Paths

30

Otras notas
Ambos algoritmos convergen bajo
condiciones estaticas de topologia y peso.
Producen la misma solucion
Si los costos de los enlaces cambian, los
algoritmos se adaptaran, pero el B-F
distribuido tiene el problema de la cuenta
al infinito.
Si el costo de los enlaces dependen del
trafico, el cual a su vez depende de la ruta
seleccionada:

Esto genera condiciones de feedback


Esto puede causar inestabilidad
Chapter 14 Overview of Graph Theory and Least-C
ost Paths

31

PCCS

Chapter 14 Overview of Graph Theory and Least-C


ost Paths

32

Ejercicio para hacer juntos en clase

Chapter 14 Overview of Graph Theory and Least-C


ost Paths

33

Vous aimerez peut-être aussi