Documentos de Académico
Documentos de Profesional
Documentos de Cultura
5 Grafos PDF
5 Grafos PDF
Exploración de grafos
Grafos
Recorridos sobre grafos
Búsqueda primero en profundidad
Búsqueda primero en anchura
Backtracking (“vuelta atrás”)
Descripción general
Espacio de soluciones
Implementación
Ejemplos
Branch & Bound (“ramificación y poda”)
Descripción general
Estrategias de ramificación
Implementación 1
Ejemplos
Grafos
Grafo G = (V,E)
V: Conjunto de vértices o nodos del grafo.
E ⊆ VxV
VxV:: Conjunto de aristas o arcos.
Tipos de grafos
Grafos no dirigidos
dirigidos: Aristas (no orientadas).
(v,w)
v,w) = (w,v
(w,v)) v w
Grafos dirigidos
dirigidos:: Arcos (con dirección).
(v,w)
v,w) ≠ (w,v)
w,v) v w
2
Grafos
Ejemplo: US Biotech Industry
3
Grafos - Definiciones
Grafos no dirigidos
Grado de un vértice:
Número de aristas que lo contienen.
Grafos dirigidos
Grafos - Definiciones
Nodos/vértices adyacentes:
adyacentes:
Vértices conectados por una arista (o un arco).
v w
Aristas/arcos adyacentes:
adyacentes:
Arcos/aristas con un vértice común.
u v w
v 5
Grafos - Definiciones
Camino [path]:
path]:
Sucesión de arcos adyacentes tal que el vértice final de
cada arco coincide con el inicial del siguiente.
Circuito (o ciclo):
Camino que empieza y acaba en el mismo vértice. 6
Grafos - Definiciones
Grafo conexo:
conexo:
Un grafo no dirigido es un grafo conexo si para todo par
de nodos u y v existe una camido de u a v.
Componentes conexas:
conexas:
Cada uno de los conjuntos
maximales conexos.
7
Grafos - Definiciones
Tipos de grafos
Grafo etiquetado:
etiquetado:
Cada arista y/o vértice tiene asociada una etiqueta/valor.
Multigrafo:
Multigrafo:
Grafo en el que se permite que entre dos vértices
exista más de una arista o arco.
8
Grafos - Definiciones
Árbol:
Árbol:
Grafo conexo que no contiene ciclos.
Teorema
Sea G un grafo de n nodos. Cualquier pareja de las
siguientes afirmaciones implica la tercera:
G es conexo.
G no contiene ciclos.
G tiene n-
n-1 aristas.
9
Grafos - Representación
Representación mediante matrices de adyacencia
1 2 3 4 5 6 7 8
1 0 1 1 0 0 0 0 0
2 1 0 1 1 1 0 0 0
3 1 1 0 0 1 0 1 1
4 0 1 0 1 1 0 0 0
5 0 1 1 1 0 1 0 0
6 0 0 0 0 1 0 0 0
7 0 0 1 0 0 0 0 1
8 0 0 1 0 0 0 1 0
Grafos - Representación
Representación mediante matrices de adyacencia
Ventaja:
Acceso eficiente a una arista, Θ(1).
Inconvenientes:
Θ(|V|2) en identificar todas las aristas.
aristas.
Espacio proporcional a |V|2
(se
(s desperdicia memoria si el grafo es poco denso).
11
Grafos - Representación
Representación mediante listas de adyacencia
1 2 3
2 1 3 4 5
3 1 2 5 7 8
4 2 5
5 2 3 4 6
6 5
7 3 8
8 3 7
12
Grafos - Representación
Representación mediante listas de adyacencia
Ventajas:
Espacio proporcional a |V|+|E|.
(representación adecuada para grafos poco densos).
Θ(|V|+|E|) en identificar todas las aristas.
Inconvenientes:
Se tarda O(grado(u)) en comprobar si (u,v)∈E.
Ineficiente para encontrar los arcos que llegan a un nodo
(solución: usar estructuras de listas múltiples).
13
Recorridos sobre grafos
Tipos de recorridos:
r s t u Pila S={} s
v w x y
r s t u Pila S={s} s
v w x y r w
r s t u Pila S={r,s
S={r,s}} s
v w x y r w
15
v
Recorridos sobre grafos
Búsqueda primero en profundidad
[DFS: Depth-
Depth-First Search
Search]]
r s t u Pila S={v,r,s
S={v,r,s}} s
v w x y r w
v t x
r s t u Pila S={w,s
S={w,s}} u x
v w x y
r s t u Pila S={t,w,s
S={t,w,s}}
v w x y
16
r s t u Pila S={u,t,w,s
S={u,t,w,s}} s
v w x y r w
v t x
r s t u Pila S={y,u,t,w,s
S={y,u,t,w,s}} u x
v w x y
y x
x
r s t u Pila S={
S={x,y,u,t,w,s}
x,y,u,t,w,s}
v w x y
17
Recorridos sobre grafos
Búsqueda primero en profundidad
[DFS: Depth-
Depth-First Search
Search]]
El recorrido no es único:
único: depende del vértice inicial y
del orden de visita de los vértices adyacentes.
19
Recorridos sobre grafos
Búsqueda primero en profundidad
[DFS: Depth-
Depth-First Search
Search]]
O(|V|+|E|)
si usamos la representación basada en listas de adyacencia. 20
Teorema:
Teorema:
21
Li contiene todos los nodos que están a distancia i de s.
Recorridos sobre grafos
Búsqueda primero en anchura
[BFS: Breadth-
Breadth-First Search
Search]]
r s t u Cola Q={s} s
v w x y
r s t u Cola Q={r,w
Q={r,w}} s
v w x y r w
r s t u Cola Q={w,v
Q={w,v}} s
v w x y r w
22
v
r s t u Cola Q={v,t,x
Q={v,t,x}} s
v w x y r w
v t x
r s t u Cola Q={t,x
Q={t,x}} u
v w x y
r s t u Cola Q={x,u
Q={x,u}}
v w x y
23
Recorridos sobre grafos
Búsqueda primero en anchura
[BFS: Breadth-
Breadth-First Search
Search]]
r s t u Cola Q={u,y
Q={u,y}} s
v w x y r w
v t x
r s t u Cola Q={y} u y
v w x y
r s t u Cola Q={}
v w x y
24
Empezando en un nodo v:
Primero se visita v.
Luego se visitan todos sus vértices adyacentes.
A continuación, los adyacentes a éstos…
y así sucesivamente.
25
Recorridos sobre grafos
Búsqueda primero en anchura
[BFS: Breadth-
Breadth-First Search
Search]]
26
visitado[v]=true; Q.add(v);
while (!
(!Q.empty
Q.empty())
()) {
x = Q.extract
Q.extract();
();
foreach (v[y] adyacente a v[x])
if (!visitado[y]) {
visitado[y]=true; Q.add(y);
}
} 27
}
Recorridos sobre grafos
Aplicaciones de los recorridos sobre grafos
“Flood fill
fill”” (coloreado por inundación)
29