1 G64ADS Advanced Data Structures Graph Algorithms
Jan 11, 2016
11
G64ADSAdvanced Data Structures
Graph Algorithms
22
Going from A to B hellip
o What data structure to use
o How to think about the problem
A B C
D E
G
F
H
33
Going from A to B hellip
o Strip away the irrelevant details hellip
o Vertices
A B C
D E
G
F
H
44
Going from A to B hellip
o Strip away the irrelevant details hellip
o Edges
A B C
D E
G
F
H
55
Going from A to B hellip
o Strip away the irrelevant details hellip
o Weights
A B C
D E
G
F
H
3 4
34
4 56
4
66
Going from A to B hellip
o Strip away the irrelevant details hellip
o Now much simpler hellip
A B C
D E
G
F
H
3 4
34
4 56
4
7
Graphs
o Are a tool for modeling real world problems
o Allow us to abstract details and focus on the problem
o We can represent our domain as graphs apply algorithms to solve our problem
8
Simple Graphs
9
Directed Graphs
10
Weighted Graphs
3 4
34
4 56
4
11
Path and Cycle
12
Representation of Graphs
o Adjacency matrix
o Adjacency list
13
Representation of Graphs
o Adjacency list
14
Topological Sort
o Ordering of vertices in a directed acyclic graph such that if there is a path from vi to vj the vj appears after vi in the ordering
15
Topological Sort
o Applicationo Given a number of tasks there are often a
number of constraints between the taskso task A must be completed before task B can
start
o These tasks together with the constraints form a directed acyclic graph
o A topological sort of the graph gives an order in which the tasks can be scheduled while still satisfying the constraints
16
Topological Sort
o Applicationo Consider someone getting ready to go
out for dinneroHe must wear the following
o jacket shirt briefs socks tie Blackberry etc
oThere are certain constraintso the pants really should go on after the briefso the Blackberry must be clipped on the belto socks are put on before shoes
17
Topological Sort
o Applicationo Getting dress graph
18
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
19
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
another possible solution
briefs socks pants shirt belt tie jacket
wallet keys Blackberry iPod watch shoes
Not unique
20
Topological Sort
o Course prerequisite structure represented in an acyclic graph
21
Topological Sort
o Topological Sort (Relabel) Given a directed acyclic graph (DAG) relabel the vertices such that every directed edge points from a lower-numbered vertex to a higher numbered one
5
4
6
2 8
3
1
7
1
2
4
5 3
6
7
8
22
Topological Sort
o Topological Sort (rearrange) Given a directed acyclic graph (DAG) rearrange its vertices on a horizontal line such that all the directed edges points from left to right
6 45 2 8 317
1
2
4
5 3
6
7
8
23
webmitedujorlinwww15082AnimationsTopological_Sortingppt
Following slides are taken from
24
Initialization1
2
4
5 3
6
7
8
next 0
1 2 3 4 5 6 7 8
2 2 3 2 1 1 0 2
Node
Indegree
Determine the indegree of each node
LIST is the set of nodes with indegree of 0
ldquoNextrdquo will be the label of nodes in the topological order
LIST
7
25
Select a node from LIST
next 0
1 2 3 4 5 7 8
2 2 3 2 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
015
6
1
26
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
27
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
01
2
3
28
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
29
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
1
5
5
2 1
30
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
46
6
3
0 2
2
1
1
4
0 1
3
4
1
5
5
1
4
3
2
6
01
6
8
31
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
83
32
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
3
8
8
List is empty
The algorithm terminates with a topological order of the nodes
3
33
Example
o Consider the following DAG with six vertices
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
22
Going from A to B hellip
o What data structure to use
o How to think about the problem
A B C
D E
G
F
H
33
Going from A to B hellip
o Strip away the irrelevant details hellip
o Vertices
A B C
D E
G
F
H
44
Going from A to B hellip
o Strip away the irrelevant details hellip
o Edges
A B C
D E
G
F
H
55
Going from A to B hellip
o Strip away the irrelevant details hellip
o Weights
A B C
D E
G
F
H
3 4
34
4 56
4
66
Going from A to B hellip
o Strip away the irrelevant details hellip
o Now much simpler hellip
A B C
D E
G
F
H
3 4
34
4 56
4
7
Graphs
o Are a tool for modeling real world problems
o Allow us to abstract details and focus on the problem
o We can represent our domain as graphs apply algorithms to solve our problem
8
Simple Graphs
9
Directed Graphs
10
Weighted Graphs
3 4
34
4 56
4
11
Path and Cycle
12
Representation of Graphs
o Adjacency matrix
o Adjacency list
13
Representation of Graphs
o Adjacency list
14
Topological Sort
o Ordering of vertices in a directed acyclic graph such that if there is a path from vi to vj the vj appears after vi in the ordering
15
Topological Sort
o Applicationo Given a number of tasks there are often a
number of constraints between the taskso task A must be completed before task B can
start
o These tasks together with the constraints form a directed acyclic graph
o A topological sort of the graph gives an order in which the tasks can be scheduled while still satisfying the constraints
16
Topological Sort
o Applicationo Consider someone getting ready to go
out for dinneroHe must wear the following
o jacket shirt briefs socks tie Blackberry etc
oThere are certain constraintso the pants really should go on after the briefso the Blackberry must be clipped on the belto socks are put on before shoes
17
Topological Sort
o Applicationo Getting dress graph
18
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
19
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
another possible solution
briefs socks pants shirt belt tie jacket
wallet keys Blackberry iPod watch shoes
Not unique
20
Topological Sort
o Course prerequisite structure represented in an acyclic graph
21
Topological Sort
o Topological Sort (Relabel) Given a directed acyclic graph (DAG) relabel the vertices such that every directed edge points from a lower-numbered vertex to a higher numbered one
5
4
6
2 8
3
1
7
1
2
4
5 3
6
7
8
22
Topological Sort
o Topological Sort (rearrange) Given a directed acyclic graph (DAG) rearrange its vertices on a horizontal line such that all the directed edges points from left to right
6 45 2 8 317
1
2
4
5 3
6
7
8
23
webmitedujorlinwww15082AnimationsTopological_Sortingppt
Following slides are taken from
24
Initialization1
2
4
5 3
6
7
8
next 0
1 2 3 4 5 6 7 8
2 2 3 2 1 1 0 2
Node
Indegree
Determine the indegree of each node
LIST is the set of nodes with indegree of 0
ldquoNextrdquo will be the label of nodes in the topological order
LIST
7
25
Select a node from LIST
next 0
1 2 3 4 5 7 8
2 2 3 2 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
015
6
1
26
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
27
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
01
2
3
28
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
29
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
1
5
5
2 1
30
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
46
6
3
0 2
2
1
1
4
0 1
3
4
1
5
5
1
4
3
2
6
01
6
8
31
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
83
32
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
3
8
8
List is empty
The algorithm terminates with a topological order of the nodes
3
33
Example
o Consider the following DAG with six vertices
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
33
Going from A to B hellip
o Strip away the irrelevant details hellip
o Vertices
A B C
D E
G
F
H
44
Going from A to B hellip
o Strip away the irrelevant details hellip
o Edges
A B C
D E
G
F
H
55
Going from A to B hellip
o Strip away the irrelevant details hellip
o Weights
A B C
D E
G
F
H
3 4
34
4 56
4
66
Going from A to B hellip
o Strip away the irrelevant details hellip
o Now much simpler hellip
A B C
D E
G
F
H
3 4
34
4 56
4
7
Graphs
o Are a tool for modeling real world problems
o Allow us to abstract details and focus on the problem
o We can represent our domain as graphs apply algorithms to solve our problem
8
Simple Graphs
9
Directed Graphs
10
Weighted Graphs
3 4
34
4 56
4
11
Path and Cycle
12
Representation of Graphs
o Adjacency matrix
o Adjacency list
13
Representation of Graphs
o Adjacency list
14
Topological Sort
o Ordering of vertices in a directed acyclic graph such that if there is a path from vi to vj the vj appears after vi in the ordering
15
Topological Sort
o Applicationo Given a number of tasks there are often a
number of constraints between the taskso task A must be completed before task B can
start
o These tasks together with the constraints form a directed acyclic graph
o A topological sort of the graph gives an order in which the tasks can be scheduled while still satisfying the constraints
16
Topological Sort
o Applicationo Consider someone getting ready to go
out for dinneroHe must wear the following
o jacket shirt briefs socks tie Blackberry etc
oThere are certain constraintso the pants really should go on after the briefso the Blackberry must be clipped on the belto socks are put on before shoes
17
Topological Sort
o Applicationo Getting dress graph
18
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
19
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
another possible solution
briefs socks pants shirt belt tie jacket
wallet keys Blackberry iPod watch shoes
Not unique
20
Topological Sort
o Course prerequisite structure represented in an acyclic graph
21
Topological Sort
o Topological Sort (Relabel) Given a directed acyclic graph (DAG) relabel the vertices such that every directed edge points from a lower-numbered vertex to a higher numbered one
5
4
6
2 8
3
1
7
1
2
4
5 3
6
7
8
22
Topological Sort
o Topological Sort (rearrange) Given a directed acyclic graph (DAG) rearrange its vertices on a horizontal line such that all the directed edges points from left to right
6 45 2 8 317
1
2
4
5 3
6
7
8
23
webmitedujorlinwww15082AnimationsTopological_Sortingppt
Following slides are taken from
24
Initialization1
2
4
5 3
6
7
8
next 0
1 2 3 4 5 6 7 8
2 2 3 2 1 1 0 2
Node
Indegree
Determine the indegree of each node
LIST is the set of nodes with indegree of 0
ldquoNextrdquo will be the label of nodes in the topological order
LIST
7
25
Select a node from LIST
next 0
1 2 3 4 5 7 8
2 2 3 2 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
015
6
1
26
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
27
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
01
2
3
28
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
29
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
1
5
5
2 1
30
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
46
6
3
0 2
2
1
1
4
0 1
3
4
1
5
5
1
4
3
2
6
01
6
8
31
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
83
32
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
3
8
8
List is empty
The algorithm terminates with a topological order of the nodes
3
33
Example
o Consider the following DAG with six vertices
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
44
Going from A to B hellip
o Strip away the irrelevant details hellip
o Edges
A B C
D E
G
F
H
55
Going from A to B hellip
o Strip away the irrelevant details hellip
o Weights
A B C
D E
G
F
H
3 4
34
4 56
4
66
Going from A to B hellip
o Strip away the irrelevant details hellip
o Now much simpler hellip
A B C
D E
G
F
H
3 4
34
4 56
4
7
Graphs
o Are a tool for modeling real world problems
o Allow us to abstract details and focus on the problem
o We can represent our domain as graphs apply algorithms to solve our problem
8
Simple Graphs
9
Directed Graphs
10
Weighted Graphs
3 4
34
4 56
4
11
Path and Cycle
12
Representation of Graphs
o Adjacency matrix
o Adjacency list
13
Representation of Graphs
o Adjacency list
14
Topological Sort
o Ordering of vertices in a directed acyclic graph such that if there is a path from vi to vj the vj appears after vi in the ordering
15
Topological Sort
o Applicationo Given a number of tasks there are often a
number of constraints between the taskso task A must be completed before task B can
start
o These tasks together with the constraints form a directed acyclic graph
o A topological sort of the graph gives an order in which the tasks can be scheduled while still satisfying the constraints
16
Topological Sort
o Applicationo Consider someone getting ready to go
out for dinneroHe must wear the following
o jacket shirt briefs socks tie Blackberry etc
oThere are certain constraintso the pants really should go on after the briefso the Blackberry must be clipped on the belto socks are put on before shoes
17
Topological Sort
o Applicationo Getting dress graph
18
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
19
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
another possible solution
briefs socks pants shirt belt tie jacket
wallet keys Blackberry iPod watch shoes
Not unique
20
Topological Sort
o Course prerequisite structure represented in an acyclic graph
21
Topological Sort
o Topological Sort (Relabel) Given a directed acyclic graph (DAG) relabel the vertices such that every directed edge points from a lower-numbered vertex to a higher numbered one
5
4
6
2 8
3
1
7
1
2
4
5 3
6
7
8
22
Topological Sort
o Topological Sort (rearrange) Given a directed acyclic graph (DAG) rearrange its vertices on a horizontal line such that all the directed edges points from left to right
6 45 2 8 317
1
2
4
5 3
6
7
8
23
webmitedujorlinwww15082AnimationsTopological_Sortingppt
Following slides are taken from
24
Initialization1
2
4
5 3
6
7
8
next 0
1 2 3 4 5 6 7 8
2 2 3 2 1 1 0 2
Node
Indegree
Determine the indegree of each node
LIST is the set of nodes with indegree of 0
ldquoNextrdquo will be the label of nodes in the topological order
LIST
7
25
Select a node from LIST
next 0
1 2 3 4 5 7 8
2 2 3 2 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
015
6
1
26
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
27
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
01
2
3
28
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
29
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
1
5
5
2 1
30
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
46
6
3
0 2
2
1
1
4
0 1
3
4
1
5
5
1
4
3
2
6
01
6
8
31
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
83
32
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
3
8
8
List is empty
The algorithm terminates with a topological order of the nodes
3
33
Example
o Consider the following DAG with six vertices
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
55
Going from A to B hellip
o Strip away the irrelevant details hellip
o Weights
A B C
D E
G
F
H
3 4
34
4 56
4
66
Going from A to B hellip
o Strip away the irrelevant details hellip
o Now much simpler hellip
A B C
D E
G
F
H
3 4
34
4 56
4
7
Graphs
o Are a tool for modeling real world problems
o Allow us to abstract details and focus on the problem
o We can represent our domain as graphs apply algorithms to solve our problem
8
Simple Graphs
9
Directed Graphs
10
Weighted Graphs
3 4
34
4 56
4
11
Path and Cycle
12
Representation of Graphs
o Adjacency matrix
o Adjacency list
13
Representation of Graphs
o Adjacency list
14
Topological Sort
o Ordering of vertices in a directed acyclic graph such that if there is a path from vi to vj the vj appears after vi in the ordering
15
Topological Sort
o Applicationo Given a number of tasks there are often a
number of constraints between the taskso task A must be completed before task B can
start
o These tasks together with the constraints form a directed acyclic graph
o A topological sort of the graph gives an order in which the tasks can be scheduled while still satisfying the constraints
16
Topological Sort
o Applicationo Consider someone getting ready to go
out for dinneroHe must wear the following
o jacket shirt briefs socks tie Blackberry etc
oThere are certain constraintso the pants really should go on after the briefso the Blackberry must be clipped on the belto socks are put on before shoes
17
Topological Sort
o Applicationo Getting dress graph
18
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
19
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
another possible solution
briefs socks pants shirt belt tie jacket
wallet keys Blackberry iPod watch shoes
Not unique
20
Topological Sort
o Course prerequisite structure represented in an acyclic graph
21
Topological Sort
o Topological Sort (Relabel) Given a directed acyclic graph (DAG) relabel the vertices such that every directed edge points from a lower-numbered vertex to a higher numbered one
5
4
6
2 8
3
1
7
1
2
4
5 3
6
7
8
22
Topological Sort
o Topological Sort (rearrange) Given a directed acyclic graph (DAG) rearrange its vertices on a horizontal line such that all the directed edges points from left to right
6 45 2 8 317
1
2
4
5 3
6
7
8
23
webmitedujorlinwww15082AnimationsTopological_Sortingppt
Following slides are taken from
24
Initialization1
2
4
5 3
6
7
8
next 0
1 2 3 4 5 6 7 8
2 2 3 2 1 1 0 2
Node
Indegree
Determine the indegree of each node
LIST is the set of nodes with indegree of 0
ldquoNextrdquo will be the label of nodes in the topological order
LIST
7
25
Select a node from LIST
next 0
1 2 3 4 5 7 8
2 2 3 2 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
015
6
1
26
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
27
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
01
2
3
28
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
29
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
1
5
5
2 1
30
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
46
6
3
0 2
2
1
1
4
0 1
3
4
1
5
5
1
4
3
2
6
01
6
8
31
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
83
32
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
3
8
8
List is empty
The algorithm terminates with a topological order of the nodes
3
33
Example
o Consider the following DAG with six vertices
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
66
Going from A to B hellip
o Strip away the irrelevant details hellip
o Now much simpler hellip
A B C
D E
G
F
H
3 4
34
4 56
4
7
Graphs
o Are a tool for modeling real world problems
o Allow us to abstract details and focus on the problem
o We can represent our domain as graphs apply algorithms to solve our problem
8
Simple Graphs
9
Directed Graphs
10
Weighted Graphs
3 4
34
4 56
4
11
Path and Cycle
12
Representation of Graphs
o Adjacency matrix
o Adjacency list
13
Representation of Graphs
o Adjacency list
14
Topological Sort
o Ordering of vertices in a directed acyclic graph such that if there is a path from vi to vj the vj appears after vi in the ordering
15
Topological Sort
o Applicationo Given a number of tasks there are often a
number of constraints between the taskso task A must be completed before task B can
start
o These tasks together with the constraints form a directed acyclic graph
o A topological sort of the graph gives an order in which the tasks can be scheduled while still satisfying the constraints
16
Topological Sort
o Applicationo Consider someone getting ready to go
out for dinneroHe must wear the following
o jacket shirt briefs socks tie Blackberry etc
oThere are certain constraintso the pants really should go on after the briefso the Blackberry must be clipped on the belto socks are put on before shoes
17
Topological Sort
o Applicationo Getting dress graph
18
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
19
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
another possible solution
briefs socks pants shirt belt tie jacket
wallet keys Blackberry iPod watch shoes
Not unique
20
Topological Sort
o Course prerequisite structure represented in an acyclic graph
21
Topological Sort
o Topological Sort (Relabel) Given a directed acyclic graph (DAG) relabel the vertices such that every directed edge points from a lower-numbered vertex to a higher numbered one
5
4
6
2 8
3
1
7
1
2
4
5 3
6
7
8
22
Topological Sort
o Topological Sort (rearrange) Given a directed acyclic graph (DAG) rearrange its vertices on a horizontal line such that all the directed edges points from left to right
6 45 2 8 317
1
2
4
5 3
6
7
8
23
webmitedujorlinwww15082AnimationsTopological_Sortingppt
Following slides are taken from
24
Initialization1
2
4
5 3
6
7
8
next 0
1 2 3 4 5 6 7 8
2 2 3 2 1 1 0 2
Node
Indegree
Determine the indegree of each node
LIST is the set of nodes with indegree of 0
ldquoNextrdquo will be the label of nodes in the topological order
LIST
7
25
Select a node from LIST
next 0
1 2 3 4 5 7 8
2 2 3 2 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
015
6
1
26
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
27
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
01
2
3
28
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
29
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
1
5
5
2 1
30
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
46
6
3
0 2
2
1
1
4
0 1
3
4
1
5
5
1
4
3
2
6
01
6
8
31
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
83
32
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
3
8
8
List is empty
The algorithm terminates with a topological order of the nodes
3
33
Example
o Consider the following DAG with six vertices
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
7
Graphs
o Are a tool for modeling real world problems
o Allow us to abstract details and focus on the problem
o We can represent our domain as graphs apply algorithms to solve our problem
8
Simple Graphs
9
Directed Graphs
10
Weighted Graphs
3 4
34
4 56
4
11
Path and Cycle
12
Representation of Graphs
o Adjacency matrix
o Adjacency list
13
Representation of Graphs
o Adjacency list
14
Topological Sort
o Ordering of vertices in a directed acyclic graph such that if there is a path from vi to vj the vj appears after vi in the ordering
15
Topological Sort
o Applicationo Given a number of tasks there are often a
number of constraints between the taskso task A must be completed before task B can
start
o These tasks together with the constraints form a directed acyclic graph
o A topological sort of the graph gives an order in which the tasks can be scheduled while still satisfying the constraints
16
Topological Sort
o Applicationo Consider someone getting ready to go
out for dinneroHe must wear the following
o jacket shirt briefs socks tie Blackberry etc
oThere are certain constraintso the pants really should go on after the briefso the Blackberry must be clipped on the belto socks are put on before shoes
17
Topological Sort
o Applicationo Getting dress graph
18
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
19
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
another possible solution
briefs socks pants shirt belt tie jacket
wallet keys Blackberry iPod watch shoes
Not unique
20
Topological Sort
o Course prerequisite structure represented in an acyclic graph
21
Topological Sort
o Topological Sort (Relabel) Given a directed acyclic graph (DAG) relabel the vertices such that every directed edge points from a lower-numbered vertex to a higher numbered one
5
4
6
2 8
3
1
7
1
2
4
5 3
6
7
8
22
Topological Sort
o Topological Sort (rearrange) Given a directed acyclic graph (DAG) rearrange its vertices on a horizontal line such that all the directed edges points from left to right
6 45 2 8 317
1
2
4
5 3
6
7
8
23
webmitedujorlinwww15082AnimationsTopological_Sortingppt
Following slides are taken from
24
Initialization1
2
4
5 3
6
7
8
next 0
1 2 3 4 5 6 7 8
2 2 3 2 1 1 0 2
Node
Indegree
Determine the indegree of each node
LIST is the set of nodes with indegree of 0
ldquoNextrdquo will be the label of nodes in the topological order
LIST
7
25
Select a node from LIST
next 0
1 2 3 4 5 7 8
2 2 3 2 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
015
6
1
26
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
27
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
01
2
3
28
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
29
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
1
5
5
2 1
30
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
46
6
3
0 2
2
1
1
4
0 1
3
4
1
5
5
1
4
3
2
6
01
6
8
31
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
83
32
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
3
8
8
List is empty
The algorithm terminates with a topological order of the nodes
3
33
Example
o Consider the following DAG with six vertices
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
8
Simple Graphs
9
Directed Graphs
10
Weighted Graphs
3 4
34
4 56
4
11
Path and Cycle
12
Representation of Graphs
o Adjacency matrix
o Adjacency list
13
Representation of Graphs
o Adjacency list
14
Topological Sort
o Ordering of vertices in a directed acyclic graph such that if there is a path from vi to vj the vj appears after vi in the ordering
15
Topological Sort
o Applicationo Given a number of tasks there are often a
number of constraints between the taskso task A must be completed before task B can
start
o These tasks together with the constraints form a directed acyclic graph
o A topological sort of the graph gives an order in which the tasks can be scheduled while still satisfying the constraints
16
Topological Sort
o Applicationo Consider someone getting ready to go
out for dinneroHe must wear the following
o jacket shirt briefs socks tie Blackberry etc
oThere are certain constraintso the pants really should go on after the briefso the Blackberry must be clipped on the belto socks are put on before shoes
17
Topological Sort
o Applicationo Getting dress graph
18
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
19
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
another possible solution
briefs socks pants shirt belt tie jacket
wallet keys Blackberry iPod watch shoes
Not unique
20
Topological Sort
o Course prerequisite structure represented in an acyclic graph
21
Topological Sort
o Topological Sort (Relabel) Given a directed acyclic graph (DAG) relabel the vertices such that every directed edge points from a lower-numbered vertex to a higher numbered one
5
4
6
2 8
3
1
7
1
2
4
5 3
6
7
8
22
Topological Sort
o Topological Sort (rearrange) Given a directed acyclic graph (DAG) rearrange its vertices on a horizontal line such that all the directed edges points from left to right
6 45 2 8 317
1
2
4
5 3
6
7
8
23
webmitedujorlinwww15082AnimationsTopological_Sortingppt
Following slides are taken from
24
Initialization1
2
4
5 3
6
7
8
next 0
1 2 3 4 5 6 7 8
2 2 3 2 1 1 0 2
Node
Indegree
Determine the indegree of each node
LIST is the set of nodes with indegree of 0
ldquoNextrdquo will be the label of nodes in the topological order
LIST
7
25
Select a node from LIST
next 0
1 2 3 4 5 7 8
2 2 3 2 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
015
6
1
26
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
27
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
01
2
3
28
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
29
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
1
5
5
2 1
30
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
46
6
3
0 2
2
1
1
4
0 1
3
4
1
5
5
1
4
3
2
6
01
6
8
31
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
83
32
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
3
8
8
List is empty
The algorithm terminates with a topological order of the nodes
3
33
Example
o Consider the following DAG with six vertices
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
9
Directed Graphs
10
Weighted Graphs
3 4
34
4 56
4
11
Path and Cycle
12
Representation of Graphs
o Adjacency matrix
o Adjacency list
13
Representation of Graphs
o Adjacency list
14
Topological Sort
o Ordering of vertices in a directed acyclic graph such that if there is a path from vi to vj the vj appears after vi in the ordering
15
Topological Sort
o Applicationo Given a number of tasks there are often a
number of constraints between the taskso task A must be completed before task B can
start
o These tasks together with the constraints form a directed acyclic graph
o A topological sort of the graph gives an order in which the tasks can be scheduled while still satisfying the constraints
16
Topological Sort
o Applicationo Consider someone getting ready to go
out for dinneroHe must wear the following
o jacket shirt briefs socks tie Blackberry etc
oThere are certain constraintso the pants really should go on after the briefso the Blackberry must be clipped on the belto socks are put on before shoes
17
Topological Sort
o Applicationo Getting dress graph
18
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
19
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
another possible solution
briefs socks pants shirt belt tie jacket
wallet keys Blackberry iPod watch shoes
Not unique
20
Topological Sort
o Course prerequisite structure represented in an acyclic graph
21
Topological Sort
o Topological Sort (Relabel) Given a directed acyclic graph (DAG) relabel the vertices such that every directed edge points from a lower-numbered vertex to a higher numbered one
5
4
6
2 8
3
1
7
1
2
4
5 3
6
7
8
22
Topological Sort
o Topological Sort (rearrange) Given a directed acyclic graph (DAG) rearrange its vertices on a horizontal line such that all the directed edges points from left to right
6 45 2 8 317
1
2
4
5 3
6
7
8
23
webmitedujorlinwww15082AnimationsTopological_Sortingppt
Following slides are taken from
24
Initialization1
2
4
5 3
6
7
8
next 0
1 2 3 4 5 6 7 8
2 2 3 2 1 1 0 2
Node
Indegree
Determine the indegree of each node
LIST is the set of nodes with indegree of 0
ldquoNextrdquo will be the label of nodes in the topological order
LIST
7
25
Select a node from LIST
next 0
1 2 3 4 5 7 8
2 2 3 2 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
015
6
1
26
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
27
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
01
2
3
28
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
29
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
1
5
5
2 1
30
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
46
6
3
0 2
2
1
1
4
0 1
3
4
1
5
5
1
4
3
2
6
01
6
8
31
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
83
32
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
3
8
8
List is empty
The algorithm terminates with a topological order of the nodes
3
33
Example
o Consider the following DAG with six vertices
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
10
Weighted Graphs
3 4
34
4 56
4
11
Path and Cycle
12
Representation of Graphs
o Adjacency matrix
o Adjacency list
13
Representation of Graphs
o Adjacency list
14
Topological Sort
o Ordering of vertices in a directed acyclic graph such that if there is a path from vi to vj the vj appears after vi in the ordering
15
Topological Sort
o Applicationo Given a number of tasks there are often a
number of constraints between the taskso task A must be completed before task B can
start
o These tasks together with the constraints form a directed acyclic graph
o A topological sort of the graph gives an order in which the tasks can be scheduled while still satisfying the constraints
16
Topological Sort
o Applicationo Consider someone getting ready to go
out for dinneroHe must wear the following
o jacket shirt briefs socks tie Blackberry etc
oThere are certain constraintso the pants really should go on after the briefso the Blackberry must be clipped on the belto socks are put on before shoes
17
Topological Sort
o Applicationo Getting dress graph
18
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
19
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
another possible solution
briefs socks pants shirt belt tie jacket
wallet keys Blackberry iPod watch shoes
Not unique
20
Topological Sort
o Course prerequisite structure represented in an acyclic graph
21
Topological Sort
o Topological Sort (Relabel) Given a directed acyclic graph (DAG) relabel the vertices such that every directed edge points from a lower-numbered vertex to a higher numbered one
5
4
6
2 8
3
1
7
1
2
4
5 3
6
7
8
22
Topological Sort
o Topological Sort (rearrange) Given a directed acyclic graph (DAG) rearrange its vertices on a horizontal line such that all the directed edges points from left to right
6 45 2 8 317
1
2
4
5 3
6
7
8
23
webmitedujorlinwww15082AnimationsTopological_Sortingppt
Following slides are taken from
24
Initialization1
2
4
5 3
6
7
8
next 0
1 2 3 4 5 6 7 8
2 2 3 2 1 1 0 2
Node
Indegree
Determine the indegree of each node
LIST is the set of nodes with indegree of 0
ldquoNextrdquo will be the label of nodes in the topological order
LIST
7
25
Select a node from LIST
next 0
1 2 3 4 5 7 8
2 2 3 2 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
015
6
1
26
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
27
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
01
2
3
28
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
29
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
1
5
5
2 1
30
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
46
6
3
0 2
2
1
1
4
0 1
3
4
1
5
5
1
4
3
2
6
01
6
8
31
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
83
32
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
3
8
8
List is empty
The algorithm terminates with a topological order of the nodes
3
33
Example
o Consider the following DAG with six vertices
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
11
Path and Cycle
12
Representation of Graphs
o Adjacency matrix
o Adjacency list
13
Representation of Graphs
o Adjacency list
14
Topological Sort
o Ordering of vertices in a directed acyclic graph such that if there is a path from vi to vj the vj appears after vi in the ordering
15
Topological Sort
o Applicationo Given a number of tasks there are often a
number of constraints between the taskso task A must be completed before task B can
start
o These tasks together with the constraints form a directed acyclic graph
o A topological sort of the graph gives an order in which the tasks can be scheduled while still satisfying the constraints
16
Topological Sort
o Applicationo Consider someone getting ready to go
out for dinneroHe must wear the following
o jacket shirt briefs socks tie Blackberry etc
oThere are certain constraintso the pants really should go on after the briefso the Blackberry must be clipped on the belto socks are put on before shoes
17
Topological Sort
o Applicationo Getting dress graph
18
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
19
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
another possible solution
briefs socks pants shirt belt tie jacket
wallet keys Blackberry iPod watch shoes
Not unique
20
Topological Sort
o Course prerequisite structure represented in an acyclic graph
21
Topological Sort
o Topological Sort (Relabel) Given a directed acyclic graph (DAG) relabel the vertices such that every directed edge points from a lower-numbered vertex to a higher numbered one
5
4
6
2 8
3
1
7
1
2
4
5 3
6
7
8
22
Topological Sort
o Topological Sort (rearrange) Given a directed acyclic graph (DAG) rearrange its vertices on a horizontal line such that all the directed edges points from left to right
6 45 2 8 317
1
2
4
5 3
6
7
8
23
webmitedujorlinwww15082AnimationsTopological_Sortingppt
Following slides are taken from
24
Initialization1
2
4
5 3
6
7
8
next 0
1 2 3 4 5 6 7 8
2 2 3 2 1 1 0 2
Node
Indegree
Determine the indegree of each node
LIST is the set of nodes with indegree of 0
ldquoNextrdquo will be the label of nodes in the topological order
LIST
7
25
Select a node from LIST
next 0
1 2 3 4 5 7 8
2 2 3 2 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
015
6
1
26
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
27
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
01
2
3
28
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
29
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
1
5
5
2 1
30
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
46
6
3
0 2
2
1
1
4
0 1
3
4
1
5
5
1
4
3
2
6
01
6
8
31
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
83
32
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
3
8
8
List is empty
The algorithm terminates with a topological order of the nodes
3
33
Example
o Consider the following DAG with six vertices
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
12
Representation of Graphs
o Adjacency matrix
o Adjacency list
13
Representation of Graphs
o Adjacency list
14
Topological Sort
o Ordering of vertices in a directed acyclic graph such that if there is a path from vi to vj the vj appears after vi in the ordering
15
Topological Sort
o Applicationo Given a number of tasks there are often a
number of constraints between the taskso task A must be completed before task B can
start
o These tasks together with the constraints form a directed acyclic graph
o A topological sort of the graph gives an order in which the tasks can be scheduled while still satisfying the constraints
16
Topological Sort
o Applicationo Consider someone getting ready to go
out for dinneroHe must wear the following
o jacket shirt briefs socks tie Blackberry etc
oThere are certain constraintso the pants really should go on after the briefso the Blackberry must be clipped on the belto socks are put on before shoes
17
Topological Sort
o Applicationo Getting dress graph
18
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
19
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
another possible solution
briefs socks pants shirt belt tie jacket
wallet keys Blackberry iPod watch shoes
Not unique
20
Topological Sort
o Course prerequisite structure represented in an acyclic graph
21
Topological Sort
o Topological Sort (Relabel) Given a directed acyclic graph (DAG) relabel the vertices such that every directed edge points from a lower-numbered vertex to a higher numbered one
5
4
6
2 8
3
1
7
1
2
4
5 3
6
7
8
22
Topological Sort
o Topological Sort (rearrange) Given a directed acyclic graph (DAG) rearrange its vertices on a horizontal line such that all the directed edges points from left to right
6 45 2 8 317
1
2
4
5 3
6
7
8
23
webmitedujorlinwww15082AnimationsTopological_Sortingppt
Following slides are taken from
24
Initialization1
2
4
5 3
6
7
8
next 0
1 2 3 4 5 6 7 8
2 2 3 2 1 1 0 2
Node
Indegree
Determine the indegree of each node
LIST is the set of nodes with indegree of 0
ldquoNextrdquo will be the label of nodes in the topological order
LIST
7
25
Select a node from LIST
next 0
1 2 3 4 5 7 8
2 2 3 2 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
015
6
1
26
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
27
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
01
2
3
28
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
29
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
1
5
5
2 1
30
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
46
6
3
0 2
2
1
1
4
0 1
3
4
1
5
5
1
4
3
2
6
01
6
8
31
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
83
32
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
3
8
8
List is empty
The algorithm terminates with a topological order of the nodes
3
33
Example
o Consider the following DAG with six vertices
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
13
Representation of Graphs
o Adjacency list
14
Topological Sort
o Ordering of vertices in a directed acyclic graph such that if there is a path from vi to vj the vj appears after vi in the ordering
15
Topological Sort
o Applicationo Given a number of tasks there are often a
number of constraints between the taskso task A must be completed before task B can
start
o These tasks together with the constraints form a directed acyclic graph
o A topological sort of the graph gives an order in which the tasks can be scheduled while still satisfying the constraints
16
Topological Sort
o Applicationo Consider someone getting ready to go
out for dinneroHe must wear the following
o jacket shirt briefs socks tie Blackberry etc
oThere are certain constraintso the pants really should go on after the briefso the Blackberry must be clipped on the belto socks are put on before shoes
17
Topological Sort
o Applicationo Getting dress graph
18
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
19
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
another possible solution
briefs socks pants shirt belt tie jacket
wallet keys Blackberry iPod watch shoes
Not unique
20
Topological Sort
o Course prerequisite structure represented in an acyclic graph
21
Topological Sort
o Topological Sort (Relabel) Given a directed acyclic graph (DAG) relabel the vertices such that every directed edge points from a lower-numbered vertex to a higher numbered one
5
4
6
2 8
3
1
7
1
2
4
5 3
6
7
8
22
Topological Sort
o Topological Sort (rearrange) Given a directed acyclic graph (DAG) rearrange its vertices on a horizontal line such that all the directed edges points from left to right
6 45 2 8 317
1
2
4
5 3
6
7
8
23
webmitedujorlinwww15082AnimationsTopological_Sortingppt
Following slides are taken from
24
Initialization1
2
4
5 3
6
7
8
next 0
1 2 3 4 5 6 7 8
2 2 3 2 1 1 0 2
Node
Indegree
Determine the indegree of each node
LIST is the set of nodes with indegree of 0
ldquoNextrdquo will be the label of nodes in the topological order
LIST
7
25
Select a node from LIST
next 0
1 2 3 4 5 7 8
2 2 3 2 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
015
6
1
26
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
27
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
01
2
3
28
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
29
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
1
5
5
2 1
30
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
46
6
3
0 2
2
1
1
4
0 1
3
4
1
5
5
1
4
3
2
6
01
6
8
31
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
83
32
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
3
8
8
List is empty
The algorithm terminates with a topological order of the nodes
3
33
Example
o Consider the following DAG with six vertices
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
14
Topological Sort
o Ordering of vertices in a directed acyclic graph such that if there is a path from vi to vj the vj appears after vi in the ordering
15
Topological Sort
o Applicationo Given a number of tasks there are often a
number of constraints between the taskso task A must be completed before task B can
start
o These tasks together with the constraints form a directed acyclic graph
o A topological sort of the graph gives an order in which the tasks can be scheduled while still satisfying the constraints
16
Topological Sort
o Applicationo Consider someone getting ready to go
out for dinneroHe must wear the following
o jacket shirt briefs socks tie Blackberry etc
oThere are certain constraintso the pants really should go on after the briefso the Blackberry must be clipped on the belto socks are put on before shoes
17
Topological Sort
o Applicationo Getting dress graph
18
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
19
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
another possible solution
briefs socks pants shirt belt tie jacket
wallet keys Blackberry iPod watch shoes
Not unique
20
Topological Sort
o Course prerequisite structure represented in an acyclic graph
21
Topological Sort
o Topological Sort (Relabel) Given a directed acyclic graph (DAG) relabel the vertices such that every directed edge points from a lower-numbered vertex to a higher numbered one
5
4
6
2 8
3
1
7
1
2
4
5 3
6
7
8
22
Topological Sort
o Topological Sort (rearrange) Given a directed acyclic graph (DAG) rearrange its vertices on a horizontal line such that all the directed edges points from left to right
6 45 2 8 317
1
2
4
5 3
6
7
8
23
webmitedujorlinwww15082AnimationsTopological_Sortingppt
Following slides are taken from
24
Initialization1
2
4
5 3
6
7
8
next 0
1 2 3 4 5 6 7 8
2 2 3 2 1 1 0 2
Node
Indegree
Determine the indegree of each node
LIST is the set of nodes with indegree of 0
ldquoNextrdquo will be the label of nodes in the topological order
LIST
7
25
Select a node from LIST
next 0
1 2 3 4 5 7 8
2 2 3 2 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
015
6
1
26
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
27
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
01
2
3
28
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
29
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
1
5
5
2 1
30
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
46
6
3
0 2
2
1
1
4
0 1
3
4
1
5
5
1
4
3
2
6
01
6
8
31
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
83
32
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
3
8
8
List is empty
The algorithm terminates with a topological order of the nodes
3
33
Example
o Consider the following DAG with six vertices
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
15
Topological Sort
o Applicationo Given a number of tasks there are often a
number of constraints between the taskso task A must be completed before task B can
start
o These tasks together with the constraints form a directed acyclic graph
o A topological sort of the graph gives an order in which the tasks can be scheduled while still satisfying the constraints
16
Topological Sort
o Applicationo Consider someone getting ready to go
out for dinneroHe must wear the following
o jacket shirt briefs socks tie Blackberry etc
oThere are certain constraintso the pants really should go on after the briefso the Blackberry must be clipped on the belto socks are put on before shoes
17
Topological Sort
o Applicationo Getting dress graph
18
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
19
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
another possible solution
briefs socks pants shirt belt tie jacket
wallet keys Blackberry iPod watch shoes
Not unique
20
Topological Sort
o Course prerequisite structure represented in an acyclic graph
21
Topological Sort
o Topological Sort (Relabel) Given a directed acyclic graph (DAG) relabel the vertices such that every directed edge points from a lower-numbered vertex to a higher numbered one
5
4
6
2 8
3
1
7
1
2
4
5 3
6
7
8
22
Topological Sort
o Topological Sort (rearrange) Given a directed acyclic graph (DAG) rearrange its vertices on a horizontal line such that all the directed edges points from left to right
6 45 2 8 317
1
2
4
5 3
6
7
8
23
webmitedujorlinwww15082AnimationsTopological_Sortingppt
Following slides are taken from
24
Initialization1
2
4
5 3
6
7
8
next 0
1 2 3 4 5 6 7 8
2 2 3 2 1 1 0 2
Node
Indegree
Determine the indegree of each node
LIST is the set of nodes with indegree of 0
ldquoNextrdquo will be the label of nodes in the topological order
LIST
7
25
Select a node from LIST
next 0
1 2 3 4 5 7 8
2 2 3 2 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
015
6
1
26
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
27
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
01
2
3
28
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
29
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
1
5
5
2 1
30
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
46
6
3
0 2
2
1
1
4
0 1
3
4
1
5
5
1
4
3
2
6
01
6
8
31
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
83
32
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
3
8
8
List is empty
The algorithm terminates with a topological order of the nodes
3
33
Example
o Consider the following DAG with six vertices
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
16
Topological Sort
o Applicationo Consider someone getting ready to go
out for dinneroHe must wear the following
o jacket shirt briefs socks tie Blackberry etc
oThere are certain constraintso the pants really should go on after the briefso the Blackberry must be clipped on the belto socks are put on before shoes
17
Topological Sort
o Applicationo Getting dress graph
18
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
19
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
another possible solution
briefs socks pants shirt belt tie jacket
wallet keys Blackberry iPod watch shoes
Not unique
20
Topological Sort
o Course prerequisite structure represented in an acyclic graph
21
Topological Sort
o Topological Sort (Relabel) Given a directed acyclic graph (DAG) relabel the vertices such that every directed edge points from a lower-numbered vertex to a higher numbered one
5
4
6
2 8
3
1
7
1
2
4
5 3
6
7
8
22
Topological Sort
o Topological Sort (rearrange) Given a directed acyclic graph (DAG) rearrange its vertices on a horizontal line such that all the directed edges points from left to right
6 45 2 8 317
1
2
4
5 3
6
7
8
23
webmitedujorlinwww15082AnimationsTopological_Sortingppt
Following slides are taken from
24
Initialization1
2
4
5 3
6
7
8
next 0
1 2 3 4 5 6 7 8
2 2 3 2 1 1 0 2
Node
Indegree
Determine the indegree of each node
LIST is the set of nodes with indegree of 0
ldquoNextrdquo will be the label of nodes in the topological order
LIST
7
25
Select a node from LIST
next 0
1 2 3 4 5 7 8
2 2 3 2 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
015
6
1
26
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
27
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
01
2
3
28
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
29
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
1
5
5
2 1
30
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
46
6
3
0 2
2
1
1
4
0 1
3
4
1
5
5
1
4
3
2
6
01
6
8
31
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
83
32
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
3
8
8
List is empty
The algorithm terminates with a topological order of the nodes
3
33
Example
o Consider the following DAG with six vertices
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
17
Topological Sort
o Applicationo Getting dress graph
18
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
19
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
another possible solution
briefs socks pants shirt belt tie jacket
wallet keys Blackberry iPod watch shoes
Not unique
20
Topological Sort
o Course prerequisite structure represented in an acyclic graph
21
Topological Sort
o Topological Sort (Relabel) Given a directed acyclic graph (DAG) relabel the vertices such that every directed edge points from a lower-numbered vertex to a higher numbered one
5
4
6
2 8
3
1
7
1
2
4
5 3
6
7
8
22
Topological Sort
o Topological Sort (rearrange) Given a directed acyclic graph (DAG) rearrange its vertices on a horizontal line such that all the directed edges points from left to right
6 45 2 8 317
1
2
4
5 3
6
7
8
23
webmitedujorlinwww15082AnimationsTopological_Sortingppt
Following slides are taken from
24
Initialization1
2
4
5 3
6
7
8
next 0
1 2 3 4 5 6 7 8
2 2 3 2 1 1 0 2
Node
Indegree
Determine the indegree of each node
LIST is the set of nodes with indegree of 0
ldquoNextrdquo will be the label of nodes in the topological order
LIST
7
25
Select a node from LIST
next 0
1 2 3 4 5 7 8
2 2 3 2 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
015
6
1
26
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
27
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
01
2
3
28
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
29
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
1
5
5
2 1
30
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
46
6
3
0 2
2
1
1
4
0 1
3
4
1
5
5
1
4
3
2
6
01
6
8
31
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
83
32
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
3
8
8
List is empty
The algorithm terminates with a topological order of the nodes
3
33
Example
o Consider the following DAG with six vertices
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
18
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
19
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
another possible solution
briefs socks pants shirt belt tie jacket
wallet keys Blackberry iPod watch shoes
Not unique
20
Topological Sort
o Course prerequisite structure represented in an acyclic graph
21
Topological Sort
o Topological Sort (Relabel) Given a directed acyclic graph (DAG) relabel the vertices such that every directed edge points from a lower-numbered vertex to a higher numbered one
5
4
6
2 8
3
1
7
1
2
4
5 3
6
7
8
22
Topological Sort
o Topological Sort (rearrange) Given a directed acyclic graph (DAG) rearrange its vertices on a horizontal line such that all the directed edges points from left to right
6 45 2 8 317
1
2
4
5 3
6
7
8
23
webmitedujorlinwww15082AnimationsTopological_Sortingppt
Following slides are taken from
24
Initialization1
2
4
5 3
6
7
8
next 0
1 2 3 4 5 6 7 8
2 2 3 2 1 1 0 2
Node
Indegree
Determine the indegree of each node
LIST is the set of nodes with indegree of 0
ldquoNextrdquo will be the label of nodes in the topological order
LIST
7
25
Select a node from LIST
next 0
1 2 3 4 5 7 8
2 2 3 2 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
015
6
1
26
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
27
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
01
2
3
28
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
29
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
1
5
5
2 1
30
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
46
6
3
0 2
2
1
1
4
0 1
3
4
1
5
5
1
4
3
2
6
01
6
8
31
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
83
32
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
3
8
8
List is empty
The algorithm terminates with a topological order of the nodes
3
33
Example
o Consider the following DAG with six vertices
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
19
Topological Sort
o Applicationo Getting dress graph
One topological sort is
briefs pants wallet keys belt Blackberry socks shoes shirt tie jacket iPod watch
another possible solution
briefs socks pants shirt belt tie jacket
wallet keys Blackberry iPod watch shoes
Not unique
20
Topological Sort
o Course prerequisite structure represented in an acyclic graph
21
Topological Sort
o Topological Sort (Relabel) Given a directed acyclic graph (DAG) relabel the vertices such that every directed edge points from a lower-numbered vertex to a higher numbered one
5
4
6
2 8
3
1
7
1
2
4
5 3
6
7
8
22
Topological Sort
o Topological Sort (rearrange) Given a directed acyclic graph (DAG) rearrange its vertices on a horizontal line such that all the directed edges points from left to right
6 45 2 8 317
1
2
4
5 3
6
7
8
23
webmitedujorlinwww15082AnimationsTopological_Sortingppt
Following slides are taken from
24
Initialization1
2
4
5 3
6
7
8
next 0
1 2 3 4 5 6 7 8
2 2 3 2 1 1 0 2
Node
Indegree
Determine the indegree of each node
LIST is the set of nodes with indegree of 0
ldquoNextrdquo will be the label of nodes in the topological order
LIST
7
25
Select a node from LIST
next 0
1 2 3 4 5 7 8
2 2 3 2 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
015
6
1
26
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
27
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
01
2
3
28
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
29
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
1
5
5
2 1
30
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
46
6
3
0 2
2
1
1
4
0 1
3
4
1
5
5
1
4
3
2
6
01
6
8
31
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
83
32
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
3
8
8
List is empty
The algorithm terminates with a topological order of the nodes
3
33
Example
o Consider the following DAG with six vertices
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
20
Topological Sort
o Course prerequisite structure represented in an acyclic graph
21
Topological Sort
o Topological Sort (Relabel) Given a directed acyclic graph (DAG) relabel the vertices such that every directed edge points from a lower-numbered vertex to a higher numbered one
5
4
6
2 8
3
1
7
1
2
4
5 3
6
7
8
22
Topological Sort
o Topological Sort (rearrange) Given a directed acyclic graph (DAG) rearrange its vertices on a horizontal line such that all the directed edges points from left to right
6 45 2 8 317
1
2
4
5 3
6
7
8
23
webmitedujorlinwww15082AnimationsTopological_Sortingppt
Following slides are taken from
24
Initialization1
2
4
5 3
6
7
8
next 0
1 2 3 4 5 6 7 8
2 2 3 2 1 1 0 2
Node
Indegree
Determine the indegree of each node
LIST is the set of nodes with indegree of 0
ldquoNextrdquo will be the label of nodes in the topological order
LIST
7
25
Select a node from LIST
next 0
1 2 3 4 5 7 8
2 2 3 2 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
015
6
1
26
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
27
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
01
2
3
28
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
29
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
1
5
5
2 1
30
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
46
6
3
0 2
2
1
1
4
0 1
3
4
1
5
5
1
4
3
2
6
01
6
8
31
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
83
32
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
3
8
8
List is empty
The algorithm terminates with a topological order of the nodes
3
33
Example
o Consider the following DAG with six vertices
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
21
Topological Sort
o Topological Sort (Relabel) Given a directed acyclic graph (DAG) relabel the vertices such that every directed edge points from a lower-numbered vertex to a higher numbered one
5
4
6
2 8
3
1
7
1
2
4
5 3
6
7
8
22
Topological Sort
o Topological Sort (rearrange) Given a directed acyclic graph (DAG) rearrange its vertices on a horizontal line such that all the directed edges points from left to right
6 45 2 8 317
1
2
4
5 3
6
7
8
23
webmitedujorlinwww15082AnimationsTopological_Sortingppt
Following slides are taken from
24
Initialization1
2
4
5 3
6
7
8
next 0
1 2 3 4 5 6 7 8
2 2 3 2 1 1 0 2
Node
Indegree
Determine the indegree of each node
LIST is the set of nodes with indegree of 0
ldquoNextrdquo will be the label of nodes in the topological order
LIST
7
25
Select a node from LIST
next 0
1 2 3 4 5 7 8
2 2 3 2 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
015
6
1
26
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
27
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
01
2
3
28
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
29
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
1
5
5
2 1
30
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
46
6
3
0 2
2
1
1
4
0 1
3
4
1
5
5
1
4
3
2
6
01
6
8
31
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
83
32
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
3
8
8
List is empty
The algorithm terminates with a topological order of the nodes
3
33
Example
o Consider the following DAG with six vertices
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
22
Topological Sort
o Topological Sort (rearrange) Given a directed acyclic graph (DAG) rearrange its vertices on a horizontal line such that all the directed edges points from left to right
6 45 2 8 317
1
2
4
5 3
6
7
8
23
webmitedujorlinwww15082AnimationsTopological_Sortingppt
Following slides are taken from
24
Initialization1
2
4
5 3
6
7
8
next 0
1 2 3 4 5 6 7 8
2 2 3 2 1 1 0 2
Node
Indegree
Determine the indegree of each node
LIST is the set of nodes with indegree of 0
ldquoNextrdquo will be the label of nodes in the topological order
LIST
7
25
Select a node from LIST
next 0
1 2 3 4 5 7 8
2 2 3 2 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
015
6
1
26
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
27
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
01
2
3
28
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
29
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
1
5
5
2 1
30
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
46
6
3
0 2
2
1
1
4
0 1
3
4
1
5
5
1
4
3
2
6
01
6
8
31
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
83
32
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
3
8
8
List is empty
The algorithm terminates with a topological order of the nodes
3
33
Example
o Consider the following DAG with six vertices
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
23
webmitedujorlinwww15082AnimationsTopological_Sortingppt
Following slides are taken from
24
Initialization1
2
4
5 3
6
7
8
next 0
1 2 3 4 5 6 7 8
2 2 3 2 1 1 0 2
Node
Indegree
Determine the indegree of each node
LIST is the set of nodes with indegree of 0
ldquoNextrdquo will be the label of nodes in the topological order
LIST
7
25
Select a node from LIST
next 0
1 2 3 4 5 7 8
2 2 3 2 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
015
6
1
26
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
27
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
01
2
3
28
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
29
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
1
5
5
2 1
30
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
46
6
3
0 2
2
1
1
4
0 1
3
4
1
5
5
1
4
3
2
6
01
6
8
31
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
83
32
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
3
8
8
List is empty
The algorithm terminates with a topological order of the nodes
3
33
Example
o Consider the following DAG with six vertices
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
24
Initialization1
2
4
5 3
6
7
8
next 0
1 2 3 4 5 6 7 8
2 2 3 2 1 1 0 2
Node
Indegree
Determine the indegree of each node
LIST is the set of nodes with indegree of 0
ldquoNextrdquo will be the label of nodes in the topological order
LIST
7
25
Select a node from LIST
next 0
1 2 3 4 5 7 8
2 2 3 2 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
015
6
1
26
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
27
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
01
2
3
28
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
29
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
1
5
5
2 1
30
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
46
6
3
0 2
2
1
1
4
0 1
3
4
1
5
5
1
4
3
2
6
01
6
8
31
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
83
32
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
3
8
8
List is empty
The algorithm terminates with a topological order of the nodes
3
33
Example
o Consider the following DAG with six vertices
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
25
Select a node from LIST
next 0
1 2 3 4 5 7 8
2 2 3 2 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
015
6
1
26
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
27
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
01
2
3
28
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
29
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
1
5
5
2 1
30
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
46
6
3
0 2
2
1
1
4
0 1
3
4
1
5
5
1
4
3
2
6
01
6
8
31
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
83
32
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
3
8
8
List is empty
The algorithm terminates with a topological order of the nodes
3
33
Example
o Consider the following DAG with six vertices
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
26
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
27
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
01
2
3
28
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
29
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
1
5
5
2 1
30
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
46
6
3
0 2
2
1
1
4
0 1
3
4
1
5
5
1
4
3
2
6
01
6
8
31
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
83
32
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
3
8
8
List is empty
The algorithm terminates with a topological order of the nodes
3
33
Example
o Consider the following DAG with six vertices
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
27
Select a node from LIST
next 0
1 2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
01
2
3
28
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
29
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
1
5
5
2 1
30
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
46
6
3
0 2
2
1
1
4
0 1
3
4
1
5
5
1
4
3
2
6
01
6
8
31
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
83
32
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
3
8
8
List is empty
The algorithm terminates with a topological order of the nodes
3
33
Example
o Consider the following DAG with six vertices
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
28
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
29
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
1
5
5
2 1
30
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
46
6
3
0 2
2
1
1
4
0 1
3
4
1
5
5
1
4
3
2
6
01
6
8
31
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
83
32
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
3
8
8
List is empty
The algorithm terminates with a topological order of the nodes
3
33
Example
o Consider the following DAG with six vertices
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
29
Select a node from LIST
next 0
2 3 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
4
6
6
3
0
2
2
1
1
4
0
1
3
4
1
5
5
2 1
30
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
46
6
3
0 2
2
1
1
4
0 1
3
4
1
5
5
1
4
3
2
6
01
6
8
31
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
83
32
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
3
8
8
List is empty
The algorithm terminates with a topological order of the nodes
3
33
Example
o Consider the following DAG with six vertices
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
30
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
7
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0 5
5
2
1
6
0
4
210
2
46
6
3
0 2
2
1
1
4
0 1
3
4
1
5
5
1
4
3
2
6
01
6
8
31
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
83
32
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
3
8
8
List is empty
The algorithm terminates with a topological order of the nodes
3
33
Example
o Consider the following DAG with six vertices
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
31
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
83
32
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
3
8
8
List is empty
The algorithm terminates with a topological order of the nodes
3
33
Example
o Consider the following DAG with six vertices
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
32
Select a node from LIST
next 0
2 5 7 8
2 2 3 1 1 0 2
Node
Indegree
Select a node from LIST and delete it
LIST
next = next +1order(i) = next
update indegrees
update LIST1
1
1
2
4
5 3
6
7
8
7
0
5
2
1
6
0
4
210
2
6
3
0
2
1
1
4
0
3
4
1
5
5
1
4
3
2
6
01
6
8
7
7
0
3
8
8
List is empty
The algorithm terminates with a topological order of the nodes
3
33
Example
o Consider the following DAG with six vertices
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
33
Example
o Consider the following DAG with six vertices
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
34
Example
o Let us define the table of in-degrees
1 0
2 1
3 3
4 3
5 2
6 0
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
35
Example
o And a queue into which we can insert vertices 1 and 6
1 0
2 1
3 3
4 3
5 2
6 01 6Queue
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
36
Example
o We dequeue the head (1) decrement the in-degree of all adjacent vertices and enqueue 2
1 0
2 0
3 3
4 2
5 2
6 06 2Queue
Sort1
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
37
Example
o We dequeue 6 and decrement the in-degree of all adjacent vertices
1 0
2 0
3 2
4 2
5 1
6 02Queue
Sort1 6
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
38
Example
o We dequeue 2 decrement and enqueue vertex 5
1 0
2 0
3 1
4 1
5 0
6 05Queue
Sort1 6 2
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
39
Example
o We dequeue 5 decrement and enqueue vertex 3
1 0
2 0
3 0
4 1
5 0
6 03Queue
Sort1 6 2 5
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
40
Example
o We dequeue 3 decrement 4 and add 4 to the queue
1 0
2 0
3 0
4 0
5 0
6 04Queue
Sort1 6 2 5 3
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
41
Example
o We dequeue 4 there are no adjacent vertices to decrement the in degree
1 0
2 0
3 0
4 0
5 0
6 0Queue
Sort1 6 2 5 3 4
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
42
Example
o The queue is now empty so a topological sort is 1 6 2 5 3 4
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
43
Topological Sort
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
44
Topological Sort
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
45
Shortest-Path Algorithm
o Find the ldquoshortestrdquo path from point A to point Bo 1048708ldquoShortestrdquo in time distance cost hellipo 1048708Numerous applications
o Map navigationo Flight itinerarieso Circuit wiring
o Network routing
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
46
Shortest Path Problems
o Input is a weighted graph where each edge (vivj) has cost cij to traverse the edge
o 1048708Cost of a path v1v2hellipvN
o Unweighted path length is N-1 number of edges on path
1
11
N
iiic
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
47
Shortest Path Problems
o Single-source shortest path problemo Given a weighted graph G=(VE) and a start
vertex s find the minimum weighted path from s to every other vertex in G
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
48
Negative Weights
o Graphs can have negative weightso eg arbitrage
o Shortest positive-weight path is a net gaino Path may include individual losses
o Problem Negative weight cycleso Allow arbitrarily-low path costs
o Solutiono Detect presence of negative-weight cycles
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
49
Shortest Path Problems
o Unweighted shortest-path problem O(|E|+|V|)
o Weighted shortest-path problemo No negative edges O(|E| log |V|)o Negative edges O(|E|middot|V|)
o Acyclic graphs O(|E|+|V|)o No asymptotically faster algorithm for single-
sourcesingle-destination shortest path problem
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
50
Unweighted Shortest Paths
o No weights on edgeso Find shortest length pathso Same as weighted shortest path with all weights
equalo Breadth-first search
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
51
Unweighted Shortest Paths
o For each vertex keep track ofo Whether we have visited it (known)
o Its distance from the start vertex (dv)
o Its predecessor vertex along the shortest path from the start vertex (pv)
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
52
Unweighted Shortest PathsSolution 1 Repeatedly iterate through vertices looking for unvisited vertices at current distance from start vertex s
Running time O(|V|2)
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
53
Unweighted Shortest Paths
Solution 2 Ignore vertices that have already been visited by keeping only unvisited vertices (distance = infin) on the queueRunning time O(|E|+|V|)
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
54
Unweighted Shortest Paths
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
55
Weighted Shortest Paths
o Dijkstrarsquos algorithm
o Use priority queue to store unvisited vertices by distance from s
o After deleteMin v update distances of remaining vertices adjacent to v using decreaseKey
o Does not work with negative weights
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
56
Weighted Shortest Paths
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
57
Weighted Shortest Paths
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
58
Weighted Shortest Paths
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
59
Weighted Shortest Paths
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
60
Why Dijkstra Works
o Hypothesiso A least-cost path from X to Y contains least-cost paths
from X to every city on the path
o eg if XrarrC1rarrC2rarrC3rarrY is the least-cost path from X to Y then
o XrarrC1rarrC2rarrC3 is the least-cost path from X to C3o XC1rarrC2 is the least-cost path from X to C2o XrarrC1 is the least-cost path from X to C1
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
61
Why Dijkstra Works
o Assume hypothesis is false ie Given a least-cost path P from X to Y that goes through C there is a better path Prsquo from X to C than the one in P
o Show a contradictiono But we could replace the subpath from X to C in P with this
lesser-cost path Prsquoo The path cost from C to Y is the sameo Thus we now have a better path from X to Yo But this violates the assumption that P is the least-cost path
from X to Y
o Therefore the original hypothesis must be true
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
62
Network Flow
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
63
Network Flow Approach
o Let the waypoints (cities distribution centers) be vertices in a graph
o Let the routes (roads rails waterways airways) between waypoints be directed edges in the graph
o Each edge has a weight representing the routersquos capacity
o Choose a starting point s and an ending point t
o Determine the maximum rate (eg tonshour) at which we can flow freight from point s to point to Without the freight piling up anywhere along the way
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
64
Network Flow Application
o Freight flow through shipping networks
o Fluid flow through a network of pipes
o Data flow (bandwidth) through computer networks
o Nutrient flow through food networks
o Electricity flow through power distribution systems
o People flow through mass transportation systems
o Traffic flow through a city
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
65
Network Flow Problems
o Giveno Directed graph G=(VE) with edge capacities cvwo Source vertex so Sink vertex t
o Constraintso Flow along directed edge (vw) cannot exceed capacity cvwo At every vertex (except s and t) the total flow coming in must
equal the total flow going out
o FindMaximum amount of flow from s to t
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
66
Network Flow
o Example network graph (left) and its maximum flow (right)
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
67
Maximum Flow Algorithm
o Flow graph Gf
o Indicates the amount of flow on each edge in the network
o Residual graph Gr
o Indicates how much more flow can be added to each edge in the network
o Residual capacity = (capacity ndash current flow)o Edges with zero residual capacity removed
o Augmenting patho Path from s to t in Gr
o Edge with smallest residual capacity in the path indicates amount by which flow can increase along path
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
68
Maximum Flow Algorithm
Initial stage flow graph and residual graph
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
69
Maximum Flow Algorithm
Initial stage flow graph and residual graph
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
70
Maximum Flow Algorithm
o While an augmenting path exists in Gro Choose oneo Flow increase FI = minimum residual capacity
along augmenting patho Increase flows along augmenting path in flow
graph Gf by FIo Update residual graph Gr
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
71
Maximum Flow Algorithm
Example (cont) after choosing (sbdt)
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
72
Maximum Flow Algorithm
Example (cont) after choosing (sact)
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
73
Maximum Flow Algorithm
Example (cont) after choosing (sadt)
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
74
Maximum Flow Algorithm
o Problem Suppose we chose augmenting path (sadt) first
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
75
Maximum Flow Algorithm
o Solutiono Indicate potential for back flow in residual
grapho ie allow another augmenting path to undo
some of the flow used by a previous augmenting path
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
76
Maximum Flow Algorithm
o Example (cont) after choosing (sbdact)
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
77
Maximum Flow Algorithm
Analysis
o If edge capacities are rational numbers then this algorithm always terminates with maximum flow
o If capacities are integers and maximum flow is f then running time is O(f middot |E|)
o Flow always increases by at least 1 with each augmenting path
o Augmenting path can be found on O(|E|) time using unweighted shortest-path algorithm
o Problem Can be slow for large f
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
78
Maximum Flow Algorithm
o Variants
o Always choose augmenting path allowing largest increase in flow
o O(|E|) calls to O(|E| log |V|) Dijkstra algorithmo Running time O(|E|2log |V|)
o Always choose the augmenting path with the fewest edges (unweighted shortest path)
o At most O(|E||V|) augmenting steps each costing O(|E|) for call to BFS
o Running time O((|E|2|V|)
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
79
Maximum Flow Algorithm
o Variants
o Multiple sources and sinkso Create super-source with infinite-capacity links to each
sourceo Create super-sink with infinite-capacity links from each
sink
o Min-cost flowo Each edge has capacity and costo Find maximum flow with minimum costo No known fast solution
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
80
Minimum Spanning Trees
o Find a minimum-cost set of edges that connect all vertices of a graph
o Applicationso Connecting ldquonodesrdquo with a minimum of ldquowirerdquo
o Networkingo Circuit design
o Collecting nearby nodeso Clustering taxonomy construction
o Approximating graphso Most graph algorithms are faster on trees
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
81
Minimum Spanning Trees
o A tree is an acyclic undirected connected graph
o A spanning tree of a graph is a tree containing all vertices from the graph
o A minimum spanning tree is a spanning tree where the sum of the weights on the treersquos edges are minimal
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
82
Minimum Spanning Trees
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
83
Minimum Spanning Trees
o Problemo Given an undirected weighted graph G=(VE)
with weights w(u v) for each (uv) isin E
o Find an acyclic connected graph Grsquo=(VErsquo) Ersquo subeE that minimizes Σ(uv) isin Ersquo w(u v)
o Grsquo is a minimum spanning treeo There can be more than one
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
84
Minimum Spanning Trees
o Solution 1
o Start with an empty tree To While T is not a spanning tree
o Find the lowest-weight edge that connects a vertex in T to a vertex not in T
o Add this edge to T
o T will be a minimum spanning tree
o Called Primrsquos algorithm (1957)
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
85
Primrsquos Algorithm Example
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
86
Primrsquos Algorithm
o Similar to Dijkstrarsquos shortest-path algorithm
o Except
o vknown = v in To vdist = weight of lowest-weight edge connecting v to
a known vertex in To vpath = last neighboring vertex changing (lowering)
vrsquos dist value (same as before)
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
87
Primrsquos Algorithm
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
88
Primrsquos Algorithm
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
89
Minimum Spanning Tree
o Solution 2o Start with T = V (no edges)o For each edge in increasing order by weight
o If adding edge to T does not create a cycleo Then add edge to T
o T will be a minimum spanning treeo Called Kruskalrsquos algorithm (1956)
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
90
Kruskalrsquos Algorithm Example
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
91
Kruskalrsquos Algorithm
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
92
Kruskalrsquos Algorithm Analysis
o Worst case O(|E| log |E|)
o Since |E| = O(|V|2) worst case also O(|E| log |V|)
o Running time dominated by heap operations
o Typically terminates before considering all edges so faster in practice
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
93
Minimum Spanning Tree Applications
o Feature extraction from remote sensing images (eg roads rivers etc)o Cosmological structure formation
o Cancer imaging Arrangement of cells in the epithelium (tissue surrounding organs)
o Approximate solution to traveling salesman problemo Most of above use Euclidian MSTIe weights are
Euclidean distances between vertices
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
94
Applications
o Depth-first searcho Biconnectivityo Euler circuitso Strongly-connected components
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
95
Depth-First Search
o Recursively visit every vertex in the graph
o Considers every edge in the grapho Assumes undirected edge (uv) is in ursquos and
vrsquos adjacency list
o Visited flag prevents infinite loops
o Running time O(|V|+|E|)
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
96
Depth-First Search
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
97
Biconnectivity
o A connected undirected graph is biconnected if the graph is still connected after removing any one vertexo ie when a ldquonoderdquo fails there is always an
alternative route
o If a graph is not biconnected the disconnecting vertices are called articulation points
oCritical points of interest in many applications
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
98
Biconnectivity
BiconnectedArticulation points
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
99
Biconnectivity
o Finding Articulation Points
o From any vertex v perform DFS and number vertices as they are visited
o Num(v) is the visit number
o Let Low(v) = lowest-numbered vertex reachable from v using 0 or more spanning tree edges and then at most one back edge
o Low(v) = minimum of Num(v)o Lowest Num(w) among all back edges (vw)o Lowest Low(w) among all tree edges (vw)
o Can compute Num(v) and Low(v) in O(|E|+|V|) time
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
100
Biconnectivity
o Finding Articulation Points
Depth-first tree starting at A with NumLow values
Original Graph
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
101
Biconnectivity
o Finding Articulation Points
o Root is articulation point iff it has more than one child
o Any other vertex v is an articulation point iff v has some child w such that Low(w) ge Num(v)o ie is there a child w of v that cannot reach
a vertex visited before vo If yes then removing v will disconnect w
(and v is an articulation point)
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
102
Biconnectivity
o Finding Articulation Points
Original Graph
Depth-first tree starting at C with NumLow values
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
103
Biconnectivity
o Finding Articulation Points
o High-level algorithmo Perform pre-order traversal to compute Numo Perform post-order traversal to compute Lowo Perform another post-order traversal to detect
articulation points
o Last two post-order traversals can be combined
o In fact all three traversals can be combined in one recursive algorithm
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
104
Biconnectivity
o Finding Articulation Points
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
105
Biconnectivity
o Finding Articulation Points
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
106
Biconnectivity
o Finding Articulation Points
Check for root omitted
Test for articulation points in one depth-first search
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
107
Euler Circuits
Puzzle challengeo Can you draw a figure using a pen drawing
each line exactly once without lifting the pen from the paper
o And can you finish where you started
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
108
Euler Circuits
o Solved by Leonhard Euler in 1736 using a graph approach (DFS)o Also called an ldquoEuler pathrdquo or ldquoEuler tourrdquoo Marked the beginning of graph theory
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
109
Euler Circuit Problem
o Assign a vertex to each intersection in the drawingo Add an undirected edge for each line segment in the
drawingo Find a path in the graph that traverses each edge
exactly once and stops where it started
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
110
Euler Circuit Problem
o Necessary and sufficient conditionso Graph must be connectedo Each vertex must have an even degree
o Graph with two odd-degree vertices can have an Euler tour (not circuit)
o Any other graph has no Euler tour or circuit
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
111
Euler Circuit Problem
o Algorithm
o Perform DFS from some vertex v until you return to v along path p
o If some part of graph not included perform DFS from first vertex vrsquo on p that has an un-traversed edge (path prsquo)
o Splice prsquo into po Continue until all edges traversed
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
112
Euler Circuit Example
Start at vertex 5Suppose DFS visits 5 4 10 5
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
113
Euler Circuit ExampleGraph remaining after 5 4 10 5
Start at vertex 4Suppose DFS visits 4 1 3 7 4 11 10 7 9 3 4
Splicing into previous path 5 4 1 3 7 4 11 10 7 9 3 4 10 5
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
114
Euler Circuit Example
Graph remaining after 5 4 1 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 3Suppose DFS visits 3 2 8 9 6 3Splicing into previous path 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
115
Euler Circuit Example
Graph remaining after 5 4 1 3 2 8 9 6 3 7 4 11 10 7 9 3 4 10 5
Start at vertex 9Suppose DFS visits 9 12 10 9
Splicing into previous path 5 4 1 3 2 8 9 12 10 9 6 3 7 4 11 10 7 9 3 4 10 5
No more un-traversed edges so above path is an Euler circuit
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
116
Euler Circuit Algorithm
o Implementation detailso Maintain circuit as a linked list to support O(1) splicingo Maintain index on adjacency lists to avoid repeated
searches for un-traversed edges
o Analysiso Each edge considered only onceo Running time is O(|E|+|V|)
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
117
Strongly-Connected Components
o A graph is strongly connectedif every vertex can be reached from every other vertexo A strongly-connected componentof a graph is a
subgraph that is strongly connectedo Would like to detect if a graph is strongly connectedo Would like to identify strongly-connected components
of a grapho Can be used to identify weaknesses in a networko General approach Perform two DFSs
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
118
Strongly-Connected Components
o Algorithmo Perform DFS on graph G
o Number vertices according to a post-order traversal of the DF spanning forest
o Construct graph Grby reversing all edges in G
o Perform DFS on Gro Always start a new DFS (initial call to Visit) at the highest-
numbered vertex
o Each tree in resulting DF spanning forest is a strongly-connected component
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
119
Strongly-Connected Components
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
120
Strongly-Connected Components
o Correctnesso If v and w are in a strongly-connected componento Then there is a path from v to w and a path from w to vo Therefore there will also be a path between v and w in G and Gr
o Running timeo Two executions of DFSo O(|E|+|V|)
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique
121
Summary
o Graphs one of the most important data structureso Studied for centurieso Numerous applicationso Some of the hardest problems to solve are graph
problems eg Hamiltonian (simple) cycle Clique