Winter 2019 Lecture 5 Announcements Reading Chapter 3 Mostly review Start on Chapter 4 Homework 2 Available Due Wednesday January 23 No class on Monday Review from Wednesday Run time function Tn ID: 783533
Download The PPT/PDF document "CSE 421 Algorithms Richard Anderson" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.
Slide1
CSE 421Algorithms
Richard Anderson
Winter
2019
Lecture 5
Slide2Announcements
Reading
Chapter 3 (Mostly review)
Start on Chapter 4
Homework 2 Available
Due Wednesday, January 23
No class on Monday
Slide3Review from Wednesday
Run time function T(n)
T(n) is the maximum time to solve an instance of size n
Disregard constant functions
T(n
) is O(f(n)) [T : Z
+
R
+
]
If n is sufficiently large, T(n) is bounded by a constant multiple of f(n)
Exist c, n
0
, such that for n > n
0
, T(n) < c f(n)
Slide4Graph 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 flavorsEdge / vertices weightsParallel edgesSelf loops
Explain that there will be some review from 326
By default |V| = n and |E| = m
Slide5Definitions
Path: v
1
, v
2
, …,
v
k, with (vi, vi+1) in ESimple PathCycleSimple Cycle
NeighborhoodN(v)DistanceConnectivityUndirectedDirected (strong connectivity)TreesRootedUnrooted
Slide6Graph Representation
a
b
c
d
V = { a, b, c, d}
E = { {a, b}, {a, c}, {a, d}, {b, d} }
a
b
c
d
b
c
d
a
d
a
a
b
1
1
1
1
0
1
1
0
0
1
1
0
Incidence Matrix
Adjacency List
Slide7Graph search
Find a path from s to t
S = {s
}
while S is not empty
u = Select(S)
visit u
foreach v in N(u) if v is unvisited
Add(S, v)
Pred
[v] = u
if (v = t) then path found
Slide8Breadth first search
Explore vertices in layers
s in layer 1
Neighbors of s in layer 2
Neighbors of layer 2 in layer 3 . . .
s
Slide9Key observation
All edges go between vertices on the same layer or adjacent layers
2
8
3
7
6
5
4
1
Slide10Bipartite Graphs
A graph V is bipartite if V can be partitioned into V
1
, V
2
such that all edges go between V
1
and V2A graph is bipartite if it can be two colored
Slide11Can this graph be two colored?
Slide12Algorithm
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
Slide13Theorem: A graph is bipartite if and only if it has no odd cycles
If a graph has an odd cycle it is not bipartite
If a graph does not have an odd cycle, it is bipartite
Slide14Lemma 1
If a graph contains an odd cycle, it is not bipartite
Slide15Lemma 2
If a BFS tree has an
intra-level edge
, then the graph has an odd length cycle
Intra-level edge: both end points are in the same level
Slide16Lemma 3
If a graph has no odd length cycles, then it is bipartite
No odd length cycles implies no intra-level edges
No intra-level edges implies two colorability
Slide17Graph Search
Data structure for next vertex to visit determines search order
Slide18Graph search
Breadth First Search
S
= {s
}
while S is not empty
u =
Dequeue
(S) if u is unvisited visit u foreach
v in N(u)
Enqueue
(S, v)
Depth First Search
S = {s}
while S is not empty u = Pop(S) if u is unvisited visit u foreach v in N(u) Push(S, v)
Slide19Breadth First Search
All edges go between vertices on the same layer or adjacent layers
2
8
3
7
6
5
4
1
Slide20Depth First Search
Each edge goes between vertices on the same branch
No cross edges
1
2
5
6
12
7
4
3
8
9
10
11
Slide21Connected Components
Undirected Graphs
Slide22Computing Connected Components in O(n+m) time
A search algorithm from a vertex v can find all vertices in v’s component
While there is an unvisited vertex v, search from v to find a new component
Slide23Directed Graphs
A Strongly Connected Component is a subset of the vertices with paths between every pair of vertices.
Slide24Identify the Strongly Connected Components
There is an O(n+m) algorithm that we will not be covering
Slide25Strongly connected components can be found in O(n+m) time
But it’s tricky!
Simpler problem: given a vertex v, compute the vertices in v’s scc in O(n+m) time
Slide26Topological Sort
Given a set of tasks with precedence constraints, find a linear order of the tasks
142
143
311
341
351
333
332
312
431
421
451
Slide27Find a topological order for the following graph
E
F
D
A
C
B
K
J
G
H
I
L
Slide28If a graph has a cycle, there is no topological sort
Consider the first vertex on the cycle in the topological sort
It must have an incoming edge
B
A
D
E
F
C
Slide29Lemma: If a graph is acyclic, it has a vertex with in degree 0
Proof:
Pick a vertex v
1
, if it has in-degree 0 then done
If not, let (v
2
, v1) be an edge, if v2 has in-degree 0 then doneIf 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
Slide30Topological Sort Algorithm
While there exists a vertex v with in-degree 0
Output vertex v
Delete the vertex v and all out going edges
E
F
D
A
C
B
K
J
G
H
I
L
Slide31Details 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