1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the...

66
1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges of G A spanning subgraph of G is a subgraph that contains all the vertices of G Subgraph Spanning subgraph

Transcript of 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the...

Page 1: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

1

SubgraphsA subgraph S of a graph G is a graph such that

The vertices of S are a subset of the vertices of G

The edges of S are a subset of the edges of G

A spanning subgraph of G is a subgraph that contains all the vertices of G

Subgraph

Spanning subgraph

Page 2: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

2

Connectivity

A graph is connected if there is a path between every pair of verticesA connected component of a graph G is a maximal connected subgraph of G

Connected graph

Non connected graph with two connected components

Page 3: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

3

Trees and ForestsA (free) tree is an undirected graph T such that

T is connected T has no cyclesThis definition of tree is

different from the one of a rooted tree

A forest is an undirected graph without cyclesThe connected components of a forest are trees

Tree

Forest

Page 4: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

4

Spanning Trees and Forests

A spanning tree of a connected graph is a spanning subgraph that is a treeA spanning tree is not unique unless the graph is a treeSpanning trees have applications to the design of communication networksA spanning forest of a graph is a spanning subgraph that is a forest

Graph

Spanning tree

Page 5: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

Breadth-First Search

Can be used to attempt to visit all nodes of a graph in a systematic mannerWorks with directed and undirected graphsWorks with weighted and unweighted graphs

Page 6: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Overview

Task: Conduct a breadth-first search of the graph starting with node D

Each node has one of the three statuses: unvisited, visited (or discovered), processed

Breadth-first search starts with given node

0

Page 7: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Overview

Nodes visited: D

Nodes processed:

Breadth-first search starts with given node

Then visits nodes adjacent in some specified order (e.g., alphabetical)

Like ripples in a pond

0

1

Page 8: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Overview

Nodes visited: D, C

Nodes processed:

Breadth-first search starts with given node

Then visits nodes adjacent in some specified order (e.g., alphabetical)

Like ripples in a pond

0

1

Page 9: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Overview

Nodes visited: D, C, E

Nodes processed:

Breadth-first search starts with given node

Then visits nodes adjacent in some specified order (e.g., alphabetical)

Like ripples in a pond

0

1

Page 10: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Overview

Nodes visited: D, C, E, F

Nodes processed: D

Breadth-first search starts with given node

Then visits nodes adjacent in some specified order (e.g., alphabetical)

Like ripples in a pond

0

1

Page 11: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Overview

Nodes visited: D, C, E, F, G

Nodes processed: D, C, E

When all nodes in ripple are visited, visit nodes in next ripples

0

2 1

Page 12: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Overview

Nodes visited: D, C, E, F, G, H

Nodes processed: D, C, E, F, G

When all nodes in ripple are visited, visit nodes in next ripples

0

2 1

3

Page 13: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Overview

Nodes visited: D, C, E, F, G, H, A

Nodes processed: D, C, E, F, G

When all nodes in ripple are visited, visit nodes in next ripples

0

2 1

3

4

Page 14: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Overview

Nodes visited: D, C, E, F, G, H, A, B

Nodes processed: D, C, E, F, G, H, A, B

When all nodes in ripple are visited, visit nodes in next ripples

0

2 1

3

4

Page 15: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughEnqueued Array

A

B

C

D

E

F

G

H

How is this accomplished? Using a queue for visited but not yet processed nodes!

Rules: (1) Maintain an enqueued array. (2) Process node when dequeued.

Q :

Page 16: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughEnqueued Array

A

B

C

D √

E

F

G

H

Enqueue D. Notice, D not yet visited.

Q : D

Nodes visited:

Page 17: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughEnqueued Array

A

B

C √

D √

E √

F √

G

H

Dequeue D. Visit D. Enqueue unenqueued nodes adjacent to D.

Q : C E F

Nodes visited: D

Page 18: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughEnqueued Array

A

B

C √

D √

E √

F √

G

H

Dequeue C. Visit C. Enqueue unenqueued nodes adjacent to C.

Q : E F

Nodes visited: D, C

Page 19: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughEnqueued Array

A

B

C √

D √

E √

F √

G

H

Dequeue E. Visit E. Enqueue unenqueued nodes adjacent to E.

Q : F G

Nodes visited: D, C, E

Page 20: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughEnqueued Array

A

B

C √

D √

E √

F √

G √

H

Dequeue F. Visit F. Enqueue unenqueued nodes adjacent to F.

Q : G

Nodes visited: D, C, E, F

Page 21: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughEnqueued Array

A

B

C √

D √

E √

F √

G √

H √

Dequeue G. Visit G. Enqueue unenqueued nodes adjacent to G.

Q : H

Nodes visited: D, C, E, F, G

Page 22: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughEnqueued Array

A √

B √

C √

D √

E √

F √

G √

H √

Dequeue H. Visit H. Enqueue unenqueued nodes adjacent to H.

Q : A B

Nodes visited: D, C, E, F, G, H

Page 23: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughEnqueued Array

A √

B √

C √

D √

E √

F √

G √

H √

Dequeue A. Visit A. Enqueue unenqueued nodes adjacent to A.

Q : B

Nodes visited: D, C, E, F, G, H, A

Page 24: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughEnqueued Array

A √

B √

C √

D √

E √

F √

G √

H √

Dequeue B. Visit B. Enqueue unenqueued nodes adjacent to B.

Q : (empty)

Nodes visited: D, C, E, F, G, H, A, B

Page 25: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughEnqueued Array

A √

B √

C √

D √

E √

F √

G √

H √

Q empty. Algorithm done.

Q is empty

Nodes visited: D, C, E, F, G, H, A, B

Page 26: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

Consider Trees1. What do we call a breadth-first traversal on

trees?

2. If we consider only each edge (u, v) where node v is visited for the first time by DFS from node u. What do we call the subgraph consisted of these edges?

Page 27: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

Consider Trees1. What do we call a breadth-first traversal on

trees? Preorder traversal

2. If we consider only each edge (u, v) where node v is visited for the first time by BFS from node u. What do we call the subgraph consisted of these edges? The BFS tree.

A

HB

F

E

D

C

G

Page 28: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

Depth-First Search

Also called Depth-First SearchCan be used to attempt to visit all nodes of a graph in a systematic mannerWorks with directed and undirected graphsWorks with weighted and unweighted graphs

Page 29: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughVisited Array

A

B

C

D

E

F

G

H

Task: Conduct a depth-first search of the graph starting with node D

Page 30: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughVisited Array

A

B

C

D √

E

F

G

H

Visit D

DThe order nodes are visited:

D

Page 31: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughVisited Array

A

B

C

D √

E

F

G

H

Consider nodes adjacent to D, decide to visit C first (Rule:

visit adjacent nodes in alphabetical order)

DThe order nodes are visited:

D

Page 32: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughVisited Array

A

B

C √

D √

E

F

G

H

Visit C

C

DThe order nodes are visited:

D, C

Page 33: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughVisited Array

A

B

C √

D √

E

F

G

H

No nodes adjacent to C; cannot continue backtrack, i.e.,

pop stack and restore previous state

C

DThe order nodes are visited:

D, C

Page 34: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughVisited Array

A

B

C √

D √

E

F

G

H

Back to D – C has been visited, decide to visit E next

DThe order nodes are visited:

D, C

Page 35: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughVisited Array

A

B

C √

D √

E √

F

G

H

Back to D – C has been visited, decide to visit E next

E

DThe order nodes are visited:

D, C, E

Page 36: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughVisited Array

A

B

C √

D √

E √

F

G

H

Only G is adjacent to E

E

DThe order nodes are visited:

D, C, E

Page 37: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughVisited Array

A

B

C √

D √

E √

F

G √

H

Visit G

G

E

DThe order nodes are visited:

D, C, E, G

Page 38: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughVisited Array

A

B

C √

D √

E √

F

G √

H

Nodes D and H are adjacent to G. D has already been

visited. Decide to visit H.

G

E

DThe order nodes are visited:

D, C, E, G

Page 39: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughVisited Array

A

B

C √

D √

E √

F

G √

H √

Visit H

H

G

E

DThe order nodes are visited:

D, C, E, G, H

Page 40: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughVisited Array

A

B

C √

D √

E √

F

G √

H √

Nodes A and B are adjacent to F. Decide to visit A next.

H

G

E

DThe order nodes are visited:

D, C, E, G, H

Page 41: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughVisited Array

A √

B

C √

D √

E √

F

G √

H √

Visit A

A

H

G

E

DThe order nodes are visited:

D, C, E, G, H, A

Page 42: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughVisited Array

A √

B

C √

D √

E √

F

G √

H √

Only Node B is adjacent to A. Decide to visit B next.

A

H

G

E

DThe order nodes are visited:

D, C, E, G, H, A

Page 43: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughVisited Array

A √

B √

C √

D √

E √

F

G √

H √

Visit B

B

A

H

G

E

DThe order nodes are visited:

D, C, E, G, H, A, B

Page 44: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughVisited Array

A √

B √

C √

D √

E √

F

G √

H √

No unvisited nodes adjacent to B. Backtrack (pop the stack).

A

H

G

E

DThe order nodes are visited:

D, C, E, G, H, A, B

Page 45: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughVisited Array

A √

B √

C √

D √

E √

F

G √

H √

No unvisited nodes adjacent to A. Backtrack (pop the stack).

H

G

E

DThe order nodes are visited:

D, C, E, G, H, A, B

Page 46: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughVisited Array

A √

B √

C √

D √

E √

F

G √

H √

No unvisited nodes adjacent to H. Backtrack (pop the

stack).

G

E

DThe order nodes are visited:

D, C, E, G, H, A, B

Page 47: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughVisited Array

A √

B √

C √

D √

E √

F

G √

H √

No unvisited nodes adjacent to G. Backtrack (pop the

stack).

E

DThe order nodes are visited:

D, C, E, G, H, A, B

Page 48: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughVisited Array

A √

B √

C √

D √

E √

F

G √

H √

No unvisited nodes adjacent to E. Backtrack (pop the stack).

DThe order nodes are visited:

D, C, E, G, H, A, B

Page 49: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughVisited Array

A √

B √

C √

D √

E √

F

G √

H √

F is unvisited and is adjacent to D. Decide to visit F next.

DThe order nodes are visited:

D, C, E, G, H, A, B

Page 50: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughVisited Array

A √

B √

C √

D √

E √

F √

G √

H √

Visit F

F

DThe order nodes are visited:

D, C, E, G, H, A, B, F

Page 51: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughVisited Array

A √

B √

C √

D √

E √

F √

G √

H √

No unvisited nodes adjacent to F. Backtrack.

DThe order nodes are visited:

D, C, E, G, H, A, B, F

Page 52: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughVisited Array

A √

B √

C √

D √

E √

F √

G √

H √

No unvisited nodes adjacent to D. Backtrack.

The order nodes are visited:

D, C, E, G, H, A, B, F

Page 53: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Walk-ThroughVisited Array

A √

B √

C √

D √

E √

F √

G √

H √

Stack is empty. Depth-first traversal is done.

The order nodes are visited:

D, C, E, G, H, A, B, F

Page 54: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

54

Depth-First SearchDepth-first search (DFS) is a general technique for traversing a graphA DFS traversal of a graph G

Visits all the vertices and edges of G

Determines whether G is connected

Computes the connected components of G

Computes a spanning forest of G

DFS on a graph with n vertices and m edges takes O(nm ) timeDFS can be further extended to solve other graph problems

Find and report a path between two given vertices

Find a cycle in the graph

Page 55: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

55

DFS AlgorithmThe algorithm uses a mechanism for setting and getting “labels” of vertices and edges

Algorithm DFS(G, v)Input graph G and a start vertex v of G Output labeling of the edges of G

in the connected component of v as discovery edges and back edges

setLabel(v, VISITED)for all e G.incidentEdges(v)

if getLabel(e) UNEXPLOREDw opposite(v,e)if getLabel(w) UNVISITED

setLabel(e, DISCOVERY)DFS(G, w)

else if getLabel(w) VISITEDsetLabel(e, BACK)

else // getLabel(w) PROCESSED

setLabel(e, CROSS)setLabel(u, PROCESSED)

Algorithm DFS(G)Input graph GOutput labeling of the edges of G

as discovery edges andback edges

for all u G.vertices()setLabel(u, UNVISITED)

for all e G.edges()setLabel(e, UNEXPLORED)

for all v G.vertices()if getLabel(v) UNVISITED

DFS(G, v)

Page 56: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

56

Example (undirected graph)

DB

A

C

E

DB

A

C

E

DB

A

C

E

discovery edgeback edge

A visited vertex

A unvisited vertex

unexplored edge

Page 57: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

57

Example (cont.)

DB

A

C

E

DB

A

C

E

DB

A

C

E

DB

A

C

E

Page 58: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

A

HB

F

E

D

C

G

Classify edges by DFS

The order nodes are visited:

D, C, E, G, H, A, B, F

discovery edge

back edge

cross edge

(H,B) is labeled as CROSS, but it is a FORWARD edge.

Page 59: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

Classification of Edges of G with Spanning Tree T

An edge (u,v) of T is tree edgeAn edge (u,v) of G-T is back edge if u is a descendent of v.An edge (u,v) of G-T is forward edge if u is an ancestor of v.Else (u,v) is a cross edge

Page 60: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

Classification of Edges of G via DFS Spanning Tree T

1

6

2

4

3

5

7

8

G

1

6

2

4

3

5

7

8

T

Page 61: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

Classification of Edges of G via DFS Spanning Tree T

DFS tree T in an undirected graph has no cross or forward edges

Page 62: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

62

DFS and Maze Traversal The DFS algorithm is similar to a classic strategy for exploring a maze

We mark each intersection, corner and dead end (vertex) visited

We mark each corridor (edge ) traversed

We keep track of the path back to the entrance (start vertex) by means of a rope (recursion stack)

Page 63: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

63

Properties of DFS

Property 1DFS(G, v) visits all the vertices and edges in the connected component of v

Property 2The discovery edges labeled by DFS(G, v) form a spanning tree of the connected component of v

DB

A

C

E

Page 64: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

64

Analysis of DFSSetting/getting a vertex/edge label takes O(1) timeEach vertex is labeled twice

once as UNVISITED once as VISITED once as PROCESSED

Each edge is labeled twice once as UNEXPLORED once as DISCOVERY or BACK or CROSS

Method incidentEdges is called once for each vertexDFS runs in O(n m) time provided the graph is represented by the adjacency list structure

Note that v deg(v) 2m

Page 65: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

65

Path FindingWe can specialize the DFS algorithm to find a path between two given vertices u and z using the template method patternWe call DFS(G, u) with u as the start vertexWe use a stack S to keep track of the path between the start vertex and the current vertexAs soon as destination vertex z is encountered, we return the path as the contents of the stack

Algorithm pathDFS(G, v, z)setLabel(v, VISITED)S.push(v)if v z

return S.elements()for all e G.incidentEdges(v)

if getLabel(e) UNEXPLORED

w opposite(v,e)if getLabel(w)

UNEXPLORED setLabel(e, DISCOVERY)S.push(e)pathDFS(G, w, z)S.pop(e)

else setLabel(e, BACK)

S.pop(v)

Page 66: 1 Subgraphs A subgraph S of a graph G is a graph such that The vertices of S are a subset of the vertices of G The edges of S are a subset of the edges.

66

Cycle FindingWe can specialize the DFS algorithm to find a simple cycle using the template method patternWe use a stack S to keep track of the path between the start vertex and the current vertex

As soon as a back edge (v, w) is encountered, we return the cycle as the portion of the stack from the top to vertex w

Algorithm cycleDFS(G, v, z)setLabel(v, VISITED)S.push(v)for all e G.incidentEdges(v)

if getLabel(e) UNEXPLOREDw opposite(v,e)S.push(e)if getLabel(w) UNEXPLORED

setLabel(e, DISCOVERY)pathDFS(G, w, z)S.pop(e)

elseT new empty stackrepeat

o S.pop()T.push(o)

until o wreturn T.elements()

S.pop(v)