Lecture05 CSE421
Lecture05 CSE421
Algorithms
Richard Anderson
Winter 2009
Lecture 5
Announcements
• Reading
– Chapter 3 (Mostly review)
– Start on Chapter 4
• Homework 2 Available
Graph Theory
• G = (V, E)
– V – vertices
– E – edges
• Undirected graphs
– Edges sets of two vertices {u, v}
• Directed graphs
– Edges ordered pairs (u, v)
• Many other flavors
– Edge / vertices weights
– Parallel edges
– Self loops
Definitions
• Path: v1, v2, …, vk, with (vi, vi+1) in E
– Simple Path
– Cycle
– Simple Cycle
• Distance
• Connectivity
– Undirected
– Directed (strong connectivity)
• Trees
– Rooted
– Unrooted
Graph search
• Find a path from s to t
S = {s}
While there exists (u, v) in E with u in S and v not in S
Pred[v] = u
Add v to S
if (v = t) then path found
Breadth first search
• Explore vertices in layers
– s in layer 1
– Neighbors of s in layer 2
– Neighbors of layer 2 in layer 3 . . .
s
Key observation
• All edges go between vertices on the
same layer or adjacent layers
2 3
4 5 6 7
8
Bipartite Graphs
• A graph V is bipartite if V can be
partitioned into V1, V2 such that all edges
go between V1 and V2
• A graph is bipartite if it can be two colored
Can this graph be two colored?
Algorithm
• Run BFS
• Color odd layers red, even layers blue
• If no edges between the same layer, the
graph is bipartite
• If edge between two vertices of the same
layer, then there is an odd cycle, and the
graph is not bipartite
Theorem: A graph is bipartite if and
only if it has no odd cycles
Lemma 1
• If a graph contains an odd cycle, it is not
bipartite
Lemma 2
• If a BFS tree has an intra-level edge, then
the graph has an odd length cycle
H
E I
A
D G
J
C
F
K
B
L
If a graph has a cycle, there is no
topological sort
• Consider the first
A F
vertex on the cycle in
the topological sort
• It must have an
B E
incoming edge
C D
Lemma: If a graph is acyclic, it has
a vertex with in degree 0
• Proof:
– Pick a vertex v1, if it has in-degree 0 then
done
– If not, let (v2, v1) be an edge, if v2 has in-
degree 0 then done
– If not, let (v3, v2) be an edge . . .
– If this process continues for more than n
steps, we have a repeated vertex, so we have
a cycle
Topological Sort Algorithm
While there exists a vertex v with in-degree 0
Output vertex v
Delete the vertex v and all out going edges
H
E I
A
D G
J
C
F
K
B
L
Details for O(n+m) implementation
• Maintain a list of vertices of in-degree 0
• Each vertex keeps track of its in-degree
• Update in-degrees and list when edges
are removed
• m edge removals at O(1) cost each