Sesion 11 GRAFOS
Sesion 11 GRAFOS
Sesion 11 GRAFOS
Estructura de datos
Sesin 11
GRAFOS
Los grafos son estructuras de datos no lineales donde cada
componente puede tener mas de uno o mas predecesores y
sucesores.
VERTICES
A
Vrtice
Vrtice
Vrtice
Vrtice
ARISTAS
A
B
C
D
Arista
Arista
Arista
Arista
Arista
Arista
AB
AC
AD
BC
BD
CD
(a,b)
(a,c)
(a,d)
(b,c)
(b,d)
(c,d)
Grafos
Vrtices: Almacenan la Informacion
Aristas: Representan la relacin entre los vertices
Grado(a)=3
Grado(b)=2
Grado(c)=2
Grado(d)=1
Camino
P=(b,a,c)
P=(b,c)
Camino cerrado
P=(a,b,c,a)
c
Camino simple
Ciclo
d
c
ciclo de longitud 4
4-ciclo
Grafo conexo
d
c
Grafo rbol
d
c
b
d
b
v1
Grafos Dirigidos
Llamados tambin DIGRAFOS, se caracterizan porque
sus aristas tienen asociados una direccin, cada arista
esta asociada a un par ordenado (u,v) de vrtices de G.
Una arista dirigida a=(u,v) se llama arco y
generalmente se expresa como u -> v
Los vrtices se utilizan para representar informacin
Las aristas representan una relacin con direccin o
jararquia entre aquellos
Ejemplo: Duraciones de vuelos entre ciudades
Grafos Dirigidos
Terminologa
Grafos Dirigidos
Representacin de una arista dirigida
u
a empieza en u y termina en v
u es el origen o punto inicial de a y v es el destino o punto
terminal de a
u es el predecesor de v y v es sucesor o vecino de u
u es adyacente hacia v y v es adyacente desde u
Matriz de Adyacencia
Matriz de adyacencia es una matriz booleana de orden
n, donde n indica el nmero de vrtices de G. Las lneas
y columnas de la matriz representan los vrtices y el
contenido o no de aristas entre ellos
Cada elemento i,j de la matriz, almacena un 1 un 0,
dependiendo si existe o no una arista entre los vrtices
i,j
Para la generacin de la matriz, se da un orden
arbitrario a los vrtices y se asignan a las filas y
columnas en el mismo orden
Matriz de Adyacencia
Generacin de la matriz
Ventajas y Desventajas
La ventaja de las matrices de adyacencia es que el
tiempo de acceso al elemento requerido es
independiente del tamao de V y de A.
El tiempo de bsqueda es del orden 0(n). Sin embargo,
su principal desventaja es que requiere un espacio de
almacenamiento de n2 posiciones, aunque el numero de
arcos de G no sobrepase ese nmero
La matriz de adyacencia es til en los algoritmos
diseados para conocer si existe una arista entre dos
vrtices dados.
Matriz de Adyacencia
Etiquetada
Se denominan tambin matrices de costo o de
distancias, contienen asociadas a sus aristas los valores
de costos o distancias
Lista de Adyacencia
Una lista de adyacencia para el vrtice a es una lista ordenada de todos los vrtices
adyacentes de a
Una lista de Adyacencia para representar un Grafo Dirigido, estar formada por tantas listas
como vrtices tenga G.
Para guardar los vrtices de G se puede usar una lista o un arreglo.
HEAD[ i ] arreglo que es un apuntador a la lista de vrtices adyacentes al vrtice i
La lista de adyacencia requiere un espacio proporcional a la suma de nmeros de vrtices ms
el numero de aristas
Lista de Adyacencia
Ventaja y desventaja
Algoritmo de Dijkstra
Encuentra el camino mas corto de un vrtice elegido a cualquier otro
vrtice del dgrafo, donde la longitud del camino es la suma de los pesos
de las aristas que lo forman (las aristas no deben tener un peso negativo)
Principales elementos considerados cuando se aplica el algoritmo.
S es un arreglo formado por los vrtices de los cuales ya se conoce la distancia
minima entre ellos y el origen. Inicialmente se almacena solo el vrtice origen
D es un arreglo formada por la distancia del vrtice origen a cada uno de los otros.
D[i] almacena la menor distancia o costo entre el origen y el vrtice i, este camino
se le conoce como Especial
Este arreglo se forma en cada paso del algoritmo, al termino, D tiene la distancia
mnima entre el origen y cada uno de los vrtices del grafo
M es una matriz de distancias n x n elementos, tal que M[i,j] almacena la distancia
o costo entre los vrtices i, j, si entre ambos existe una arista, de lo contrario M[i,j]
ser un valor muy grande (infinito)
Algoritmo de Dijkstra
Este algoritmo encuentra la distancia mnima entre un vrtice
origen y cada uno de los otros vrtices de una grafica dirigida.
Se considera al vrtice 1 como el origen. N es el numero de
vrtices de la grafica dirigida. S y D son arreglos de N
elementos y M es una matriz de n x n elementos
1. Agregar el vrtice 1 a S
2. Repetir de 2 hasta N
Elegir un vrtice v en (V - S) tal que D[v] sea el mnimo valor
Agregar v a S
2.1 Repetir para cada vrtice w en (V - S)
Hacer D[w] minimo(D[w], D[v]+ M[v,w])
Ejemplo 1
Aplicando el algoritmo de Dijkstra, obtener el camino mas corto desde
uno de los vrtices a cualquiera de los otros vrtices de un grafo dirigido,
formado por 5 valores
Ejemplo 2
Algoritmo de Floyd
Encuentra el camino mas corto entre todos los
vrtices del dgrafo.
Sea el grafo dirigido G=(V,A), donde cada arista u -->
v tiene asociado un peso. El algoritmo de Floyd
permite encontrar el camino mas corto entre cada par
ordenado u y v
La matriz de distancia sirve como punto de partida de
este algoritmo
Se realizan k iteraciones sobre la matriz buscando el
camino mas corto, por tanto en la k-esima iteracin
Algoritmo de Floyd
M[i , j] tendr el camino del menor costo para llegar de
i a j, pasando por un numero de vrtices menor a k, el
cual se calcula:
Mk[i,j] min= { Mk-1[i,j] Mk-1[i,k]+ Mk-1[k,j]}
Se obtendr el camino mas corto entre el valor obtenido
en la iteracin (k-1) y el que resulta de pasar por el
vrtice k. En el algoritmo se usa la matriz de costos M
donde M[i,j] ser igual al costo de ir de i a j, Si no existe
camino de i a j, asume un valor muy grande o 0 si i=j
Algoritmo de Floyd
Este algoritmo encuentra la distancia mnima entre todos los
vrtices del grafo dirigido. M es una matriz de N x N y se
inicia con los costos del dgrafo. k, i, j son variables enteras
Ejemplo de Aplicacin
Encontrar la minima distancia entre todos los vrtices de un
grafo dirigido
Algoritmo de Warshall
Encuentra, si es posible, un camino entre cada uno de
los vrtices del grafo dirigido.
La solucin mostrada por el algoritmo, no presenta la
distancia entre los vrtices, slo muestra si hay o no
camino entre ellos.
El algoritmo de Warshall se basa en un concepto
llamado cerradura transitiva de la matriz de
adyacencia
Algoritmo de Warshall
Sea el grafo dirigido G(V,A) y su matriz de adyacencia M, donde M[i,j]=1
si hay una arista de i a j y 0 si no lo hay.
La cerradura transitiva de M es la matriz es C, tal que C[i,j]=1 si hay un
camino de longitud mayor o igual a 1 de i a j, o 0 en otro caso.
Para generar la matriz C se establece que existe un camino de vrtice i
al j que no pasa por un numero de vrtices mayor que k, si:
a. Si ya existe un camino de i a j que no pasa por un numero de vrtices mayor que
-1
b. Hay un camino de i a k que no pasa por un numero de vrtices mayor que k-1,
Hay un camino de k a j que no pasa por un numero de vrtices mayor que k-1
Algoritmo de Warshall
Este algoritmo encuentra, si es posible, un camino de longitud mayor o igual a 1 entre cada
uno de los vrtices del grafo dirigido. N es el numero de vrtices del dgrafo. C es una matriz
de N X N elementos. Inicialmente es igual a M. Al terminar el algoritmo contendr la
cerradura transitiva de M. K, I, J son variables enteras
Ejemplo
Ejemplo
EJERCICIO:
Comas
20
Los
Olivos
13
Brea
16
10
12
5
4
6
Lima
UNMS
M
15
70
Jmaria
SMP
D
Plibre
45
40
13
12
SJL
56
Callao