11 g64ads advanced data structures graph algorithms

121
1 G64ADS Advanced Data Structures Graph Algorithms

Upload: gervase-mcdaniel

Post on 11-Jan-2016

241 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 2: 11 G64ADS Advanced 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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 3: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 4: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 5: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 6: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 7: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 8: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 9: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 10: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 11: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 12: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 13: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 14: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 15: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 16: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 17: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 18: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 19: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 20: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 21: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 22: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 23: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 24: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 25: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 26: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 27: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 28: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 29: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 30: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 31: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 32: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 33: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 34: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 35: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 36: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 37: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 38: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 39: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 40: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 41: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 42: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 43: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 44: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 45: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 46: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 47: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 48: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 49: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 50: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 51: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 52: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 53: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 54: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 55: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 56: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 57: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 58: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 59: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 60: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 61: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 62: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 63: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 64: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 65: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 66: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 67: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 68: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 69: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 70: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 71: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 72: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 73: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 74: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 75: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 76: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 77: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 78: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 79: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 80: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 81: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 82: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 83: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 84: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 85: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 86: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 87: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 88: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 89: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 90: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 91: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 92: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 93: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 94: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 95: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 96: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 97: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 98: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 99: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 100: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 101: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 102: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 103: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 104: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 105: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 106: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 107: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 108: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 109: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 110: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 111: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 112: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 113: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 114: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 115: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 116: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 117: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 118: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 119: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 120: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary
Page 121: 11 G64ADS Advanced Data Structures Graph Algorithms

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

  • G64ADS Advanced Data Structures
  • Going from A to B hellip
  • Slide 3
  • Slide 4
  • Slide 5
  • Slide 6
  • Graphs
  • Simple Graphs
  • Directed Graphs
  • Weighted Graphs
  • Path and Cycle
  • Representation of Graphs
  • Slide 13
  • Topological Sort
  • Slide 15
  • Slide 16
  • Slide 17
  • Slide 18
  • Slide 19
  • Slide 20
  • Slide 21
  • Slide 22
  • webmitedujorlinwww15082AnimationsTopological_Sortingppt
  • Initialization
  • Select a node from LIST
  • Slide 26
  • Slide 27
  • Slide 28
  • Slide 29
  • Slide 30
  • Slide 31
  • Slide 32
  • Example
  • Slide 34
  • Slide 35
  • Slide 36
  • Slide 37
  • Slide 38
  • Slide 39
  • Slide 40
  • Slide 41
  • Slide 42
  • Slide 43
  • Slide 44
  • Shortest-Path Algorithm
  • Shortest Path Problems
  • Slide 47
  • Negative Weights
  • Slide 49
  • Unweighted Shortest Paths
  • Slide 51
  • Slide 52
  • Slide 53
  • Slide 54
  • Weighted Shortest Paths
  • Slide 56
  • Slide 57
  • Slide 58
  • Slide 59
  • Why Dijkstra Works
  • Slide 61
  • Network Flow
  • Network Flow Approach
  • Network Flow Application
  • Network Flow Problems
  • Slide 66
  • Maximum Flow Algorithm
  • Slide 68
  • Slide 69
  • Slide 70
  • Slide 71
  • Slide 72
  • Slide 73
  • Slide 74
  • Slide 75
  • Slide 76
  • Slide 77
  • Slide 78
  • Slide 79
  • Minimum Spanning Trees
  • Slide 81
  • Slide 82
  • Slide 83
  • Slide 84
  • Primrsquos Algorithm Example
  • Primrsquos Algorithm
  • Slide 87
  • Slide 88
  • Minimum Spanning Tree
  • Kruskalrsquos Algorithm Example
  • Kruskalrsquos Algorithm
  • Kruskalrsquos Algorithm Analysis
  • Minimum Spanning Tree Applications
  • Applications
  • Depth-First Search
  • Slide 96
  • Biconnectivity
  • Slide 98
  • Slide 99
  • Slide 100
  • Slide 101
  • Slide 102
  • Slide 103
  • Slide 104
  • Slide 105
  • Slide 106
  • Euler Circuits
  • Slide 108
  • Euler Circuit Problem
  • Slide 110
  • Slide 111
  • Euler Circuit Example
  • Slide 113
  • Slide 114
  • Slide 115
  • Euler Circuit Algorithm
  • Strongly-Connected Components
  • Slide 118
  • Slide 119
  • Slide 120
  • Summary