Vous êtes sur la page 1sur 19

Grafos Ponderados

Subtítulo
Grafo Ponderado
Sea G un grafo G=(V,E)
Se dice que G es ponderado, si cada arista (resp. Arco)
(vi,vj) tiene un valor asociado, p(vi,vj) al que se le llama
peso o coste.
Los valores de un grafo ponderado habitualmente se
presentan en forma de matriz.
En general asignaremos a los pesos cantidades que sean
enteros no negativos.
Se puede definir una matriz similar a la de adyacencia
donde reflejemos el valor de los pesos.
Matriz de pesos
› Sea G un grafo G=(V,E)
› Llamamos la matriz de pesos o matriz de costes de G a
la matriz P=(pij) de orden nxn cuyos elementos vienen
definidos como sigue:

0, si i=j
Pi j = p(vi,vj), si i ≠j y (vi,vj) ∈ E
∞, si i ≠j y (vi,vj) ∈ E
Ejemplo
› Consideremos el siguiente grafo:
Ejercicio. Halle la matriz P para el siguiente
grafo:
Observaciones

𝑝11 ⋯ 𝑝1𝑛
› P= ⋮ ⋱ ⋮
𝑝𝑛1 ⋯ 𝑝𝑛𝑛

› Los elementos de la matriz P suelen denotarse con pij.


› La entrada pij representa el elemento de la matriz P que
se encuentra en la fila i y la columna j.
Vamos a modelizar un mapa con 5 ciudades: Lima, Bogotá, Sao
Paulo, Santiago de Chile. Estas ciudades están conectadas por vía
aérea con la siguiente duración en minutos:
Lima – Quito: 90
Lima - Bogotá: 180
Lima Sao – Paulo: 300
Lima - Santiago: 210
Quito –Bogotá: 80
Bogotá – Sao Paulo: 350
Sao Paulo – Santiago:240

Las conexiones son en ambos


sentidos con igual duración.
V: ciudades
E: pares de ciudades conectadas
entre sí.
P=matrices con las duraciones de
las conexiones entre pares de
ciudades.
Vamos a modelizar un mapa con 5 ciudades: Lima, Bogotá, Quito, Sao Paulo,
Santiago de Chile. Estas ciudades están conectadas por vía aérea con la
siguiente duración en minutos:
Bogotá 350 Lima – Quito: 90
4 Sao Paulo
180 5 Lima - Bogotá: 180
300
Lima Lima Sao – Paulo: 300
80
1 Lima - Santiago: 210
240
210 Quito –Bogotá: 80
90
Bogotá – Sao Paulo: 350
3 2 Santiago Sao Paulo – Santiago:240
Quito
Las conexiones son en ambos
sentidos con igual duración.
V: ciudades
E: pares de ciudades conectadas
entre sí.
P=matrices con las duraciones de
las conexiones entre pares de
ciudades.
Peso de un camino
Sea G un grafo ponderado G=(V,E); |V|=n; P=pij como
matriz de pesos.
Dado un camino en G definimos el peso o
coste del camino de G a la matriz P=pij de orden nxn cuyos
elementos vienen definidos como sigue:
Ejemplo: Consideremos el camino (v3,v4,v5,v1) en el
siguiente grafo:

v4
3 v5 3

1
7
2 v1
4
v3 3
5
v2
Teniendo en cuenta el ejemplo donde se hizo la modelación de un mapa con
respecto a las horas de vuelo de 5 ciudades. Supongamos que realizamos el
siguiente viaje: Santiago, Sao Paulo, Bogotá, Quito
Bogotá 350 ¿Cuál es la duración del viaje?
4 5 Sao Paulo
180
300
Lima
80
1
210 240
90

3 2 Santiago
Quito
Problema de los caminos más cortos
› Usemos nuevamente el ejemplo del mapa con las 5 ciudades, pero
planteando una nueva cuestión:
¿Cuál es el camino más corto de Quito a Sao Paulo?
¿Cuál es el camino que más corto de Quito a Sao Paulo?
390

540

620

560

710

430

Por lo tanto el camino más corto es 390 minutos


Observación
Si el número de ciudades fuese muy grande, el
procedimiento anterior sería computacionalmente
muy elevado. ´Felízmente el algoritmo de Dijkstra
nos permitirá calcular eficientemente cuál es el
camino más corto de una ciudad al resto o de una
ciudad a otra en particular.
Algoritmo de Dijkstra
› Partimos de un vértice inicial y vamos a calcular cual es
el camino más corto a los vértices restantes del grafo
accesibles a él.
› Junto a cada uno de los vértices restantes anotaremos
cuál es su distancia mínima provisional al inicial y cuál es
el vértice anterior en el camino más corto del inicial a él
mismo.
› Veamos el siguiente ejemplo:
Algoritmo de Dijkstra (1959)
Aplique el algoritmo de Dijkstra para encontrar el
camino más corto desde Quito al resto de
ciudades
Quito-Bogotá 80
Quito-Lima 90
Quito-Lima-Sao Paulo 390
Quito-Lima-Santiago 300
Paso 1 2 3 4 5
QUITO 0/QUITO - - - -
BOGOTA 80/QUITO 80/QUITO ∞ ∞/−

LIMA 90/QUITO 90/QUITO 90/QUITO ∞/−

SAO ∞ 430/BOGOTA 390/LIMA 390/LIMA 390/LIMA


PAULO
SANTIAGO ∞ ∞ 300/LIMA 300/Lima -
Algoritmo de Dijkstra
¿Cuál es el camino más corto de A a los demás vértices del
siguiente grafo?
VÉRTICE PASO 1 PASO2 PASO3 PASO4

A 0/A - - -
B 7/A 5/c 5/c -

C 3/A 3/A - -

D ∞ 11/c 7/B 7/B


Ejercicio: Aplique el algoritmo de Dijkstra para hallar
la ruta mas corta desde el vértice A hacia los
demás en el siguiente grafo:

VÉRTICE PASO1 PASO2 PASO3 PASO4 PASO5 PASO6


A (0,A) - - - - -
B (2,A) (2,A) - - - -
C (3,A) (3,A) (3,A) - - -
D ∞ (7,B) (7,B) (5,E) (5,E)
E ∞ (4,B) (4,B) (4,B) - -
F ∞ ∞ ∞ (8,E) (7,D) (7,D)

Vous aimerez peut-être aussi