Vous êtes sur la page 1sur 65

Grafos y algoritmos

Ing. Jose E. Pastor Castillo


Jose.pastor@fiei.unfv.edu.pe
UNFV-FIEI
MODELOS DE
CONECTIVIDAD
TEORA DE GRAFOS.
Un grafo G es un par de conjuntos (V,E)
V={v
1
,v
2
,....v
n
} es el conjunto de vrtices
E={(v
i
,v
j
),(v
i
,v
j
)......} es un conjunto de pares
no ordenados de elementos de V.
E se denomina conjunto de ramas del grafo
El nmero de nodos se denomina orden del
grafo.
El nmero de ramas se denomina tamao
del grafo.
v
1
v
2
v
3
v
4
v
5
v
6
v
7
v
8
V={v
1
,v
2
,v
3
,v
4
,v
5
,v
6
,v
7
,v
8
}
E={(v
1
,v
2
),(v
1
,v
3
),(v
2
,v
4
),(v
3
,v
5
),(v
4
,v
6
),
(v
5
,v
7
),(v
6
,v
8
),(v
7
,v
8
),(v
2
,v
5
),(v
4
,v
5
),(v
6
,v
7
)}
Ejemplo de grafo (Orden 8 y tamao 11).
Un bucle es una rama que empieza y termina en el mismo
nodo (v
i
,v
i
).
Cuando dos ramas conectan el mismo par de vrtices se
denominan paralelas.
Un grafo con bucles se denomina pseudografo.
Un grafo con ramas paralelas pero sin bucles se denomina
multigrafo.
Un grafo sin bucles ni ramas paralelas se denomina grafo
simple.
Bucles y ramas paralelas.
Bucles y ramas paralelas.
v
1
v
2
v
3
v
4
v
5
v
6
v
7
v
8
Bucle
Ramas paralelas
Se puede considerar que los enlaces entre nodos son
dirigidos (v
i
,v
j
) = (v
j
,v
i
).
Los grafos dirigidos se denominan tambin digrafos.
v
1
v
2
v
3
v
4
v
5
v
6
v
7
v
8
Grafos dirigidos.
A cada rama del grafo se le puede asociar un nmero.
El nmero asociado a cada rama puede indicar entre
otras cosas una distancia, una capacidad, un valor
temporal, etc
v
1
v
2
v
3
v
4
v
5
v
6
v
7
v
8
2
1 5
7
-1
6 10
4
12
9
2
Grafos ponderados.
Los grafos dirigidos y ponderados poseen ramas dirigidas a
las que se asocia un nmero.
v
1
v
2
v
3
v
4
v
5
v
6
v
7
v
8
2
1 5
7
-1
6 10
4
12
9
2
Grafos dirigidos y ponderados.
Dos nodos de un grafo son vecinos o adyacentes si existe
una rama que los conecta.
El grado de un nodo es el nmero vecinos que tiene dicho
nodo.
En los grafos dirigidos se calcula el grado de entrada y el
grado de salida.
En los grafos ponderados, el grado se puede promediar
por el nmero asociado a las ramas.
Un grafo se dice que es regular si todos los nodos tienen el
mismo grado.
Grado de un nodo.
Grado del nodo V2.
v
1
v
2
v
3
v
4
v
5
v
6
v
7
v
8
v
1
v
2
v
3
v
4
v
5
v
6
v
7
v
8
Grado 3
Grado de entrada 2
Grado de salida 1
Un grafo G=(V,E) es un subgrafo de un grafo G=(V,E) si
V es un subconjunto de V y E es un subconjunto de E..
v
1
v
2
v
3
v
4
v
5
v
6
v
7
v
8
v
2
v
3
v
5
v
6
v
7
v
8
G G
Subgrafos.
Un subgrafo G=(V,E) de un grafo G=(V,E) se dice que es
abarcador si V=V.
v
1
v
2
v
3
v
4
v
5
v
6
v
7
v
8
v
2
v
3
v
5
v
6
v
7
v
8
G
G
v
1
v
4
Subgrafos.
Un paseo de un nodo u a un nodo v es una secuencia de
vrtices {v
0
,v
1
,....v
k
} con v
0
=u v
k
=v y (v
i-1
,v
i
) rama del grafo.
El nmero de ramas del paseo es su longitud.
Un paseo en el cual no se repiten ramas se denomina
rastro.
Un paseo en el cual todos los vertices {v
0
,v
1
,....v
k
} son
distintos se denomina camino.
Un camino mnimo entre dos nodos es aquel de menor
longitud de entre todos los posibles caminos entre ambos
nodos.
Si el grafo es ponderado, se puede tomar como longitud
la suma de pesos de las ramas del paseo.
Paseos, caminos, circuitos y ciclos.
La distancia entre dos nodos es la longitud (calculada de
alguna manera) del camino mnimo
El dimetro de un grafo es la mxima distancia entre dos
de sus nodos
Paseos, caminos, circuitos y ciclos ...
v
1
v
2
v
3
v
4
v
5
v
6
v
7
v
8
C={v
1
,v
2
,v
5
,v
3
,v
1
,v
2
,v
4
,v
6
,v
7
,v
8
} k=9
v
1
v
2
v
3
v
4
v
5
v
6
v
7
v
8
C={v
1
,v
3
,v
5
,v
2
,v
4
,v
5
,v
7
,v
8
} k=7
Paseo
Rastro
v
1
v
2
v
3
v
4
v
5
v
6
v
7
v
8
C={v
1
,v
2
,v
5
,v
4
,v
6
,v
7
,v
8
} k=6
v
1
v
2
v
3
v
4
v
5
v
6
v
7
v
8
C={v
1
,v
2
,v
4
,v
6
,v
8
} k=4
Camino
Camino mnimo
Un paseo cerrado es un paseo {v
0
,v
1
,....v
k
} tal que v
0
=v
k
.
Un paseo cerrado en el que no se repiten ramas es un
circuito (rastro cerrado).
Un ciclo es un circuito en el que no se repiten vrtices
(camino cerrado).
Paseos, caminos, circuitos y ciclos.
Paseos, caminos, circuitos y ciclos.
v
1
v
2
v
3
v
4
v
5
v
6
v
7
v
8
Ciclo
C={v
1
,v
2
,v
4
,v
6
,v
8
,v
7
,v
5
,v
3
,v
1
} k=8
Un grafo es conexo si para cada par de nodos del grafo
existe al menos un camino que los une.
v
1
v
3
v
2
v
4
v
5
v
1
v
3
v
2
v
4
v
5
Grafo conexo
Grafo no conexo
Conexidad.
Una componente conexa de un grafo es cada uno de los
subgrafos maximales conexos
v
1
v
3
v
2
v
4
v
5
Componentes conexas
Conexidad.
Un punto de articulacin es un nodo que desconecta un
grafo conexo.
Un corte es un conjunto de ramas que desconecta un
grafo conexo,
Si un corte esta compuesto por una nica rama, se
denomina puente.
Un corte mnimo de un grafo es el mnimo nmero de
ramas que al ser eliminadas desconectan el grafo.
Una componente biconexa es un conjunto maximal de
ramas tal que cualquier par de ramas pertenece a un
nico ciclo (subgrafo unido al resto por puntos de
articulacin o puentes)
Conexidad.
v
3
v
4
v
5
v
7
v
1
v
2 v
6
Punto de articulacin
Corte
v
8
Puente
Conexidad.
Componente
biconexa
Un grafo sin ciclos (acclico) se denomina bosque.
Un rbol es un grafo acclico conexo.
Cada componente conexa de un bosque, es un rbol.
Bosques y rboles.
Bosques y rboles.
v
2
v
3
v
5
v
6
v
7
v
8
G
v
1
v
4
v
2
v
3
v
5
v
6
v
7
v
8
G
v
1
v
4
Un subgrafo abarcador acclico de un grafo G se
denomina un bosque abarcador.
Un subgrafo abarcador conexo acclico de un grafo G se
denomina un rbol abarcador.
Bosques y rboles.
Bosques y rboles.
v
1
v
2
v
3
v
4
v
5
v
6
v
7
v
8
G
v
1
v
2
v
3
v
4
v
5
v
6
v
7
v
8
G
rbol abarcador
REPRESENTACIN DE GRAFOS
Hay dos formas estndar de
representar un grafo en un
ordenador.
Matriz de conectividad o
adyacencia
Lista de adyacencia.
v
1
v
2
v
3
v
4
v
5
v
6
v
7
v
8
0 1 1 0 0 0 0 0
1 0 0 1 1 0 0 0
1 0 0 0 1 0 0 0
0 1 0 0 1 1 0 0
0 1 1 1 0 0 1 0
0 0 0 1 0 0 1 1
0 0 0 0 1 1 0 1
0 0 0 0 0 1 1 0
Matriz de adyacencia
Lista de adyacencia
1
2
3
4
5
6
7
8
2 3
5
1
1 4
5
2 5 6
2 3 4 7
4 7 8
5 6
6 7
8
REPRESENTACIN DE GRAFOS:
EJEMPLOS
Qu significa un 1 en la diagonal de la matriz
de adyacencia?
Qu significa una matriz de adyacencia
simtrica?
Lista de adyacencia
Consumo limitado de
memoria.
Costoso aadir o eliminar
ramas.
Costoso saber si existe la
rama (a,b).
Rpido enumerar los
vecinos de un nodo.
Matriz de Adyacencia
Consume mucha
memoria.
Fcil de aadir o eliminar
ramas
Fcil saber si existe la rama
(a,b).
Lento enumerar los
vecinos de un nodo.
CLASIFICACIN DE GRAFOS
Los grafos se clasifican en funcin de unas determinadas
mtricas topolgicas.
Las mtricas mas empleadas son:
Tamao |E| y orden |V|
Dispersin (|E|/|V|)
Densidad de ramas (|E| / (|V|(|V|-1)/2)
Distribucin del grado de los nodos
Grado medio (<k>)
Coeficiente de agrupamiento (C)
Camino caracterstico (L)
Grafo denso: |E| del orden de |V|
2
Grafo disperso: |E| del orden de |V| o menor
COEFICIENTE DE AGRUPAMIENTO
El coeficiente de agrupamiento (C) es un valor mtrico local que
mide el nivel de agrupamiento de los nodos.
Clculo de C
Para cada nodo v del grafo se obtiene su vecindario, es decir, el
conjunto de nodos que son vecinos de v; el tamao del vecindario
coincide con el grado de v (kv)
Se calcula el coeficiente Cv = Nv/((kv(kv-1))/2) donde Nv es el nmero de
ramas que hay entre los vecinos de v.
El valor anterior se promedia entre todos los nodos del grafo
v
C
v
= 6/((4*3)/2)=1
CAMINO CARACTERSTICO
El camino caracterstico (L) es un valor mtrico global que mide el
nivel grado de separacin de los nodos.
Clculo de L
Para cada nodo v se calcula la distancia promedio a todos los dems
nodos del grafo, Lv= k=1d(v,vk)/(|V|-1)
Se calcula el promedio del valor anterior entre todos los nodos del grafo
L= v=1 Lv /|V| .
|V|
|V|
ALGUNAS TOPOLOGAS.
Las topologas mas frecuentes son:
Grafos aleatorios
Grafos regulares
Mundo pequeo
Grafos libres de escala
GRAFOS ALEATORIOS
Fueron estudiados principalmente por Erdos y Renyi en los aos 50.
Cada rama del grafo existe con una determinada probabilidad p.
Erdos y Renyi estudiaron los valores de las mtricas topolgicas para
diferentes valores de p.
Para la grafos dispersos (p pequea) se puede comprobar que
tanto C (aproximadamente 0) como L (aproximadamente ln(|V|) )
son pequeos
GRAFOS REGULARES
Son los mejor conocidos de forma analtica
Existen expresiones cerradas para todas las mtricas.
Para la grafos dispersos se puede comprobar que tanto C
(aproximadamente 0.75) como L (aproximadamente |V|/<k>) son
grandes
MUNDO PEQUEO (WATTS Y
STROGATZ 1998)
Son grafos que presentan altos valores de C (alrededor de 0.8) y
bajos valores de L (aproximadamente ln(|V|).
Se obtienen introduciendo un pequeo nmero de atajos en un
grafo regular
Representan bien un gran nmero de redes tales como redes
sociales.
LIBRE DE ESCALA (ALBERT Y
BARABASI 1999)
Son grafos que presentan bajos valores de C (alrededor de 0) y
bajos valores de L (aproximadamente ln(|V|) ).
Se obtienen mediante crecimiento de la red y enlace preferencial
Cuando la distribucin del grado de los nodos se dibuja en escala
log-log aparece una lnea recta.
Representan bien un gran nmero de redes tales como internet o
redes de reacciones qumicas.
Anillo Regular 125.438 0.643
Mundo Pequeo 14.2 0.626
Libre de escala 3.409 0.0186
Aleatorio 3.89 0.004
Mtricas
|V|=2000 k=8
L C
EJEMPLOS DE PROBLEMAS
HISTRICOS
Puentes de Knigsberg
Coloreado de mapas
Problema del viajante
ALGORITMOS SOBRE GRAFOS
El algoritmo de bsqueda en anchura permite
calcular un camino mnimo entre dos nodos de
un grafo.
Dijkstra es una versin del algoritmo anterior para
grafos ponderados.
Ambos algoritmos funcionan tanto en grafos
dirigidos como no dirigidos.
Tambin en determinacin de flujo mximo y
corte mnimo (Ford-Fulkerson)
BusquedaAnchura(V,E,s)
Para cada vertice u en V-s
visitado[u]=FALSE, d[u]=infinito,p[u]=NIL
visitado[s]=TRUE,d[s]=0,p[s]=NIL
Encueue(Q,s)
While(NoVacia(Q))
u=Head(Q)
para cada v en adj(u)
if visitado[v]=FALSE
d[v]=d[u]+1,p[v]=u
Enqueue(Q,v)
visitado[v]=TRUE
Dequeue(Q)
2
3
4
5
1
0 i i i
T F F F F
N N N N N
d
visitado
p
1
Q
i
U=1
1 2 3 4 5
1
2
3
4
5
2 3
4
2
1 3
5
1 2 5
3 4
2
3
4
5
1
0 1 i i
T T F F F
N 1 N N N
d
visitado
p
1 2
Q
i
U=1
1 2 3 4 5
1
2
3
4
5
2 3
4
2
1 3
5
1 2 5
3 4
2
3
4
5
1
0 1 i i
T T T F F
N 1 1 N N
d
visitado
p
1 2
Q
1
3
U=1
1 2 3 4 5
1
2
3
4
5
2 3
4
2
1 3
5
1 2 5
3 4
2
3
4
5
1
0 1 2 i
T T T T F
N 1 1 2 N
d
visitado
p
2 3
Q
1
4
U=2
1 2 3 4 5
1
2
3
4
5
2 3
4
2
1 3
5
1 2 5
3 4
2
3
4
5
1
0 1 2 2
T T T T T
N 1 1 2 3
d
visitado
p
3 4
Q
1
5
U=3
1 2 3 4 5
1
2
3
4
5
2 3
4
2
1 3
5
1 2 5
3 4
2
3
4
5
1
0 1 2 2
T T T T T
N 1 1 2 3
d
visitado
p
5
Q
1
U=4
4
1 2 3 4 5
1
2
3
4
5
2 3
4
2
1 3
5
1 2 5
3 4
2
3
4
5
1
0 1 2 2
T T T T T
N 1 1 2 3
d
visitado
p
Q
1
U=5
5
1 2 3 4 5
1
2
3
4
5
2 3
4
2
1 3
5
1 2 5
3 4
2
3
4
5
1
0 1 2 2
T T T T T
N 1 1 2 3
d
visitado
p
Q
1
1 2 3 4 5
1
2
3
4
5
2 3
4
2
1 3
5
1 2 5
3 4
ALGORITMOS SOBRE GRAFOS
El algoritmo de Bsqueda en profundidad permite calcular
puntos de articulacin de un grafo.
Tambin para ordenacin topolgica, determinacin de
componentes biconexas, ...
BusquedaProfundidad(V,E)
Para cada vertice u en V
color[u]=BLANCO, p[u]=NIL
tiempo = 0
Para cada vertice u en V
if color[u]=BLANCO
Visita(u)
Visita(u)
color[u] = GRIS, tiempo=tiempo+1, inicio[u]=tiempo
para cada v en adj(u)
if color[v]=BLANCO
p[v]=u
Visita(v)
color[v]=NEGRO, tiempo=tiempo+1, fin[u]=tiempo
2
3
4
5
1
B B B B
N N N N N
C
i
p
f
B
t=0
1 2 3 4 5
1
2
3
4
5
2 3
4
2
1 3
5
1 2 5
3 4
2
3
4
5
1
G B B B
N N N N N
1
C
i
p
f
B
t=1
1 2 3 4 5
1
2
3
4
5
2 3
4
2
1 3
5
1 2 5
3 4
2
3
4
5
1
G B B B
N 1 N N N
1 2
C
i
p
f
B
t=2
1 2 3 4 5
1
2
3
4
5
2 3
4
2
1 3
5
1 2 5
3 4
2
3
4
5
1
G B B B
N 1 2 N N
1 2 3
C
i
p
f
B
t=3
1 2 3 4 5
1
2
3
4
5
2 3
4
2
1 3
5
1 2 5
3 4
2
3
4
5
1
G B B B
N 1 2 N 3
1 2 3 4
C
i
p
f
B
t=4
1 2 3 4 5
1
2
3
4
5
2 3
4
2
1 3
5
1 2 5
3 4
2
3
4
5
1
G B B B
N 1 2 5 3
1 2 3 5 4
C
i
p
f
B
t=5
1 2 3 4 5
1
2
3
4
5
2 3
4
2
1 3
5
1 2 5
3 4
2
3
4
5
1
G B B B
N 1 2 5 3
1 2 3 5 4
C
i
p
6
f
B
t=6
1 2 3 4 5
1
2
3
4
5
2 3
4
2
1 3
5
1 2 5
3 4
2
3
4
5
1
G B B B
N 1 2 5 3
1 2 3 5 4
C
i
p
6 7
f
B
t=7
1 2 3 4 5
1
2
3
4
5
2 3
4
2
1 3
5
1 2 5
3 4
2
3
4
5
1
G B B B
N 1 2 5 3
1 2 3 5 4
C
i
p
6 7
f
B
8
t=8
1 2 3 4 5
1
2
3
4
5
2 3
4
2
1 3
5
1 2 5
3 4
2
3
4
5
1
G B B B
N 1 2 5 3
1 2 3 5 4
C
i
p
9 6 7
f
B
8
t=9
1 2 3 4 5
1
2
3
4
5
2 3
4
2
1 3
5
1 2 5
3 4
2
3
4
5
1
G B B B
N 1 2 5 3
1 2 3 5 4
C
i
p
1
0
9 6 7
f
B
8
t=10
1 2 3 4 5
1
2
3
4
5
2 3
4
2
1 3
5
1 2 5
3 4
APLICACIONES
Las tcnicas basadas en grafos se utilizan para el
anlisis o clasificacin de cadenas de datos
La tcnica suele consistir en la construccin de
un grafo donde los nodos son cada uno de los
datos obtenidos y las ramas posibles relaciones
entre los datos y la aplicacin de algn
algoritmo conocido sobre este grafo.
FIN

Vous aimerez peut-être aussi