Professional Documents
Culture Documents
Lec-15 Graph-Algo
Lec-15 Graph-Algo
Lec-15
Applied Algo, MS 2003 (Fall)
1
Graphs
A graph G = (V, E)
V = set of vertices
E = set of edges = subset of V V
Thus |E| = O(|V|2)
2
Graph Variations
Variations:
A connected graph has a path from every
vertex to every other
More variations:
A weighted graph associates weights with
either the edges or the vertices
E.g., a road map: edges might be weighted w/
distance
5
Representing Graphs
Assume V = {1, 2, …, n}
An adjacency matrix represents the graph
as a n x n matrix A:
A[i, j] = 1 if edge (i, j) E (or weight of edge)
= 0 if edge (i, j) E
6
Graphs: Adjacency Matrix
Example:
A 1 2 3 4
1
a 1
2 d
4 2
Symmetric or un-symmetric?
3
b c
??
3 4
7
Graphs: Adjacency Matrix
Example:
A 1 2 3 4
1
a 1 0 1 1 0
2 d
4 2 0 0 1 0
b c 3 0 0 0 0
3 4 0 0 1 0
8
Graph Searching
Given: a graph G = (V, E), directed or undirected
9
Breadth First Search
In any application where you need to perform some
function on all the nodes connected to a given node;
10
Breadth First Search: Word ladder
"flame" and "flake" are neighbors, but "plays" and "yelps" are not.
11
Review: Breadth-First Search
Given a G=(V,E) and distinguished source vertex s,
BFS systematically explores the edges of G to
“discover” every vertex reachable from s.
13
Review: Breadth-First Search
BFS(G, s) {
initialize vertices;
Q = {s}; // Q is a queue (duh); initialize to s
while (Q not empty) {
u = RemoveTop(Q);
for each v u->adj {
if (v->color == WHITE)
v->color = GREY;
v->d = u->d + 1;
v->p = u;
Enqueue(Q, v);
}
u->color = BLACK;
}
}
14
Review: Breadth-First Search: Example
r s t u
v w x y
15
Breadth-First Search: Example
r s t u
0
v w x y
Q: s
16
Breadth-First Search: Example
r s t u
1 0
1
v w x y
Q: w r
17
Breadth-First Search: Example
r s t u
1 0 2
1 2
v w x y
Q: r t x
18
Breadth-First Search: Example
r s t u
1 0 2
2 1 2
v w x y
Q: t x v
19
Breadth-First Search: Example
r s t u
1 0 2 3
2 1 2
v w x y
Q: x v u
20
Breadth-First Search: Example
r s t u
1 0 2 3
2 1 2 3
v w x y
Q: v u y
21
Breadth-First Search: Example
r s t u
1 0 2 3
2 1 2 3
v w x y
Q: u y
22
Breadth-First Search: Example
r s t u
1 0 2 3
2 1 2 3
v w x y
Q: y
23
Breadth-First Search: Example
r s t u
1 0 2 3
2 1 2 3
v w x y
Q: Ø
24
BFS: The Code Again
BFS(G, s) {
initialize vertices; Touch every vertex: O(V)
Q = {s};
while (Q not empty) {
u = RemoveTop(Q); u = every vertex, but only once
for each v u->adj {
(Why?)
if (v->color == WHITE)
So v = every vertexv->color = GREY;
that appears in v->d = u->d + 1;
v->p = u;
some other vert’s Enqueue(Q, v);
adjacency }list
u->color = BLACK;
What will be the running time?
}
} Total running time: O(V+E)
25
BFS: The Code Again
BFS(G, s) {
initialize vertices;
Q = {s};
while (Q not empty) {
u = RemoveTop(Q);
for each v u->adj {
if (v->color == WHITE)
v->color = GREY;
v->d = u->d + 1;
v->p = u;
Enqueue(Q, v);
} What will be the storage cost
u->color = BLACK;
in addition to storing the graph?
}
} Total space used:
O(max(degree(v))) = O(E) 26
Breadth-First Search: Properties
BFS calculates the shortest-path distance to the
source node
Shortest-path distance (s,v) = minimum number of edges
from s to v, or if v not reachable from s
Proof given in the book (p. 472-5)
27