Download presentation

Presentation is loading. Please wait.

Published byJemimah McGee Modified over 2 years ago

1
Graph Traversals

2
For solving most problems on graphs –Need to systematically visit all the vertices and edges of a graph Two major traversals –Breadth-First Search (BFS) –Depth-First Search(DFS)

3
BFS Starts at some source vertex s Discover every vertex that is reachable from s Also produces a BFS tree with root s and including all reachable vertices Discovers vertices in increasing order of distance from s –Distance between v and s is the minimum number of edges on a path from s to v i.e. discovers vertices in a series of layers

4
BFS : vertex colors stored in color[] Initially all undiscovered: white When first discovered: gray –They represent the frontier of vertices between discovered and undiscovered –Frontier vertices stored in a queue –Visits vertices across the entire breadth of this frontier When processed: black

5
Additional info stored (some applications of BFS need this info) pred[u]: points to the vertex which first discovered u d[u]: the distance from s to u

6
BFS(G=(V,E),s) for each (u in V) color[u] = white d[u] = infinity pred[u] = NIL color[s] = gray d[s] = 0 Q.enqueue(s) while (Q is not empty) do u = Q.dequeue() for each (v in Adj[u]) do if (color(v] == white) then color[v] = gray //discovered but not yet processed d[v] = d[u] + 1 pred[v] = u Q.enqueue(v) //added to the frontier color[u] = black //processed

7
Chapter 12: Graphs7 Example C B A E D discovery edge cross edge A visited vertex A identified vertex unexplored edge F CB A E D F CB A E D F

8
Chapter 12: Graphs8 Example (cont.) CB A E D F CB A E D F CB A E D F CB A E D F

9
Chapter 12: Graphs9 Example (cont.) CB A E D F L2L2 CB A E D F CB A E D F CB A E D F

10
Analysis Each vertex is enqued once and dequeued once : Θ(n) Each adjacency list is traversed once: Total: Θ(n+m)

11
BFS Tree predecessor pointers after BFS is completed define an inverted tree –Reverse edges: BFS tree rooted at s –The edges of the BFS tree are called : discovery (tree) edges –Remaining graph edges are called: cross edges

12
BFS and shortest paths Theorem: Let G=(V,E) be a directed or undirected graph, and suppose BFS is run on G starting from vertex s. During its execution BFS discovers every vertex v in V that is reachable from s. Let δ(s,v) denote the number of edges on the shortest path form s to v. Upon termination of BFS, d[v] = δ(s,v) for all v in V.

13
DFS Start at a source vertex s Search as far into the graph as possible and backtrack when there is no new vertices to discover –recursive

14
color[u] and pred[u] as before color[u] –Undiscovered: white –Discovered but not finished processing: gray –Finished: black pred[u] –Pointer to the vertex that first discovered u

15
Time stamps, We store two time stamps: –d[u]: the time vertex u is first discovered (discovery time) –f[u]: the time we finish processing vertex u (finish time)

16
DFS(G) for each (u in V) do color[u] = white pred[u] = NIL time = 0 for each (u in V) do if (color[u] == white) DFS-VISIT(u) //vertex u is just discovered color[u] = gray time = time +1 d[u] = time for each (v in Adj[u]) do //explore neighbor v if (color[v] == white) then //v is discovered by u pred[v] = u DFS-VISIT(v) color[u] = black // u is finished f[u] = time = time+ 1 DFS-VISIT invoked by each vertex exactly once. Θ(V+E)

17
DFS Forest Tree edges: inverse of pred[] pointers –Recursion tree, where the edge (u,v) arises when processing a vertex u, we call DFS-VISIT(v) Remaining graph edges are classified as: Back edges: (u, v) where v is an ancestor of u in the DFS forest (self loops are back edges) Forward edges: (u, v) where v is a proper descendent of u in the DFS forest Cross edges: (u,v) where u and v are not ancestors or descendents of one another. D B A C E s

18
If DFS run on an undirected graph No difference between back and forward edges: all called back edges No cross edges: can you see why?

19
Parenthesis Theorem In any DFS of a graph G= (V,E), for any two vertices u and v, exactly one of the following three conditions holds: –The intervals [d[u],f[u]] and [d[v],f[v]] are entirely disjoint and neither u nor v is a descendent of the other in the DFS forest – The interval [d[u],f[u]] is contained within interval [d[v],f[v]] and u is a descendent of v in the DFS forest –The interval [d[v],f[v]] is contained within interval [d[u],f[u]] and v is a descendent of u in the DFS forest

20
How can we use DFS to determine whether a graph contains any cycles?

Similar presentations

OK

Graphs-Part II Depth First Search (DFS). We Already Covered Breadth First Search(BFS) Traverses the graph one level at a time – Visit all outgoing edges.

Graphs-Part II Depth First Search (DFS). We Already Covered Breadth First Search(BFS) Traverses the graph one level at a time – Visit all outgoing edges.

© 2017 SlidePlayer.com Inc.

All rights reserved.

Ads by Google

Ppt on types of business communication Download ppt on eddy current brakes ppt Ppt on solar energy technology Ppt on waxes structure Ppt on save water save life Ppt on computer virus symptoms Ppt on different types of computer softwares for art Ppt on db2 introduction to accounting Ppt on atrial septal defect picture Best ppt on ozone layer