depth-first search lecture 24 comp171 fall 2006. graph / slide 2 depth-first search (dfs) * dfs is...
Post on 22-Dec-2015
218 views
TRANSCRIPT
![Page 1: Depth-First Search Lecture 24 COMP171 Fall 2006. Graph / Slide 2 Depth-First Search (DFS) * DFS is another popular graph search strategy n Idea is similar](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d7d5503460f94a60574/html5/thumbnails/1.jpg)
Depth-First Search
Lecture 24
COMP171
Fall 2006
![Page 2: Depth-First Search Lecture 24 COMP171 Fall 2006. Graph / Slide 2 Depth-First Search (DFS) * DFS is another popular graph search strategy n Idea is similar](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d7d5503460f94a60574/html5/thumbnails/2.jpg)
Graph / Slide 2
Depth-First Search (DFS) DFS is another popular graph search strategy
Idea is similar to pre-order traversal (visit node, then visit children recursively)
DFS can provide certain information about the graph that BFS cannot It can tell whether we have encountered a cycle or
not
![Page 3: Depth-First Search Lecture 24 COMP171 Fall 2006. Graph / Slide 2 Depth-First Search (DFS) * DFS is another popular graph search strategy n Idea is similar](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d7d5503460f94a60574/html5/thumbnails/3.jpg)
Graph / Slide 3
DFS Algorithm
DFS will continue to visit neighbors in a recursive pattern Whenever we visit v from u, we recursively visit all
unvisited neighbors of v. Then we backtrack (return) to u.
Note: it is possible that w2 was unvisited when we recursively visit w1, but became visited by the time we return from the recursive call.
u
v
w1 w2
w3
![Page 4: Depth-First Search Lecture 24 COMP171 Fall 2006. Graph / Slide 2 Depth-First Search (DFS) * DFS is another popular graph search strategy n Idea is similar](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d7d5503460f94a60574/html5/thumbnails/4.jpg)
Graph / Slide 4
DFS Algorithm
Flag all vertices as notvisited
Flag yourself as visited
For unvisited neighbors,call RDFS(w) recursively
We can also record the paths using pred[ ].
![Page 5: Depth-First Search Lecture 24 COMP171 Fall 2006. Graph / Slide 2 Depth-First Search (DFS) * DFS is another popular graph search strategy n Idea is similar](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d7d5503460f94a60574/html5/thumbnails/5.jpg)
Graph / Slide 5
Example
2
4
3
5
1
76
9
8
0Adjacency List
source
0
1
2
3
4
5
6
7
8
9
Visited Table (T/F)
F
F
F
F
F
F
F
F
F
F
Initialize visitedtable (all False)
Initialize Pred to -1
-
-
-
-
-
-
-
-
-
-
Pred
![Page 6: Depth-First Search Lecture 24 COMP171 Fall 2006. Graph / Slide 2 Depth-First Search (DFS) * DFS is another popular graph search strategy n Idea is similar](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d7d5503460f94a60574/html5/thumbnails/6.jpg)
Graph / Slide 6
2
4
3
5
1
76
9
8
0
Adjacency List
source
0
1
2
3
4
5
6
7
8
9
Visited Table (T/F)
F
F
T
F
F
F
F
F
F
F
Mark 2 as visited
-
-
-
-
-
-
-
-
-
-
Pred
RDFS( 2 )Now visit RDFS(8)
![Page 7: Depth-First Search Lecture 24 COMP171 Fall 2006. Graph / Slide 2 Depth-First Search (DFS) * DFS is another popular graph search strategy n Idea is similar](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d7d5503460f94a60574/html5/thumbnails/7.jpg)
Graph / Slide 7
2
4
3
5
1
76
9
8
0Adjacency List
source
0
1
2
3
4
5
6
7
8
9
Visited Table (T/F)
F
F
T
F
F
F
F
F
T
F
Mark 8 as visited
mark Pred[8]
-
-
-
-
-
-
-
-
2
-
Pred
RDFS( 2 ) RDFS(8)
2 is already visited, so visit RDFS(0)
Recursivecalls
![Page 8: Depth-First Search Lecture 24 COMP171 Fall 2006. Graph / Slide 2 Depth-First Search (DFS) * DFS is another popular graph search strategy n Idea is similar](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d7d5503460f94a60574/html5/thumbnails/8.jpg)
Graph / Slide 8
2
4
3
5
1
76
9
8
0Adjacency List
source
0
1
2
3
4
5
6
7
8
9
Visited Table (T/F)
T
F
T
F
F
F
F
F
T
F
Mark 0 as visited
Mark Pred[0]
8
-
-
-
-
-
-
-
2
-
Pred
RDFS( 2 ) RDFS(8)
RDFS(0) -> no unvisited neighbors, return to call RDFS(8)
Recursivecalls
![Page 9: Depth-First Search Lecture 24 COMP171 Fall 2006. Graph / Slide 2 Depth-First Search (DFS) * DFS is another popular graph search strategy n Idea is similar](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d7d5503460f94a60574/html5/thumbnails/9.jpg)
Graph / Slide 9
2
4
3
5
1
76
9
8
0Adjacency List
source
0
1
2
3
4
5
6
7
8
9
Visited Table (T/F)
T
F
T
F
F
F
F
F
T
F
8
-
-
-
-
-
-
-
2
-
Pred
RDFS( 2 ) RDFS(8)
Now visit 9 -> RDFS(9)
Recursivecalls
Back to 8
![Page 10: Depth-First Search Lecture 24 COMP171 Fall 2006. Graph / Slide 2 Depth-First Search (DFS) * DFS is another popular graph search strategy n Idea is similar](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d7d5503460f94a60574/html5/thumbnails/10.jpg)
Graph / Slide 10
2
4
3
5
1
76
9
8
0Adjacency List
source
0
1
2
3
4
5
6
7
8
9
Visited Table (T/F)
T
F
T
F
F
F
F
F
T
T
Mark 9 as visited
Mark Pred[9]
8
-
-
-
-
-
-
-
2
8
Pred
RDFS( 2 ) RDFS(8)
RDFS(9) -> visit 1, RDFS(1)
Recursivecalls
![Page 11: Depth-First Search Lecture 24 COMP171 Fall 2006. Graph / Slide 2 Depth-First Search (DFS) * DFS is another popular graph search strategy n Idea is similar](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d7d5503460f94a60574/html5/thumbnails/11.jpg)
Graph / Slide 11
2
4
3
5
1
76
9
8
0Adjacency List
source
0
1
2
3
4
5
6
7
8
9
Visited Table (T/F)
T
T
T
F
F
F
F
F
T
T
Mark 1 as visited
Mark Pred[1]
8
9
-
-
-
-
-
-
2
8
Pred
RDFS( 2 ) RDFS(8)
RDFS(9) RDFS(1)
visit RDFS(3)
Recursivecalls
![Page 12: Depth-First Search Lecture 24 COMP171 Fall 2006. Graph / Slide 2 Depth-First Search (DFS) * DFS is another popular graph search strategy n Idea is similar](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d7d5503460f94a60574/html5/thumbnails/12.jpg)
Graph / Slide 12
2
4
3
5
1
76
9
8
0Adjacency List
source
0
1
2
3
4
5
6
7
8
9
Visited Table (T/F)
T
T
T
T
F
F
F
F
T
T
Mark 3 as visited
Mark Pred[3]
8
9
-
1
-
-
-
-
2
8
Pred
RDFS( 2 ) RDFS(8)
RDFS(9) RDFS(1)
RDFS(3) visit RDFS(4)
Recursivecalls
![Page 13: Depth-First Search Lecture 24 COMP171 Fall 2006. Graph / Slide 2 Depth-First Search (DFS) * DFS is another popular graph search strategy n Idea is similar](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d7d5503460f94a60574/html5/thumbnails/13.jpg)
Graph / Slide 13
RDFS( 2 ) RDFS(8)
RDFS(9) RDFS(1)
RDFS(3) RDFS(4) STOP all of 4’s neighbors have been visited return back to call RDFS(3)
2
4
3
5
1
76
9
8
0Adjacency List
source
0
1
2
3
4
5
6
7
8
9
Visited Table (T/F)
T
T
T
T
T
F
F
F
T
T
Mark 4 as visited
Mark Pred[4]
8
9
-
1
3
-
-
-
2
8
Pred
Recursivecalls
![Page 14: Depth-First Search Lecture 24 COMP171 Fall 2006. Graph / Slide 2 Depth-First Search (DFS) * DFS is another popular graph search strategy n Idea is similar](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d7d5503460f94a60574/html5/thumbnails/14.jpg)
Graph / Slide 14
2
4
3
5
1
76
9
8
0Adjacency List
source
0
1
2
3
4
5
6
7
8
9
Visited Table (T/F)
T
T
T
T
T
F
F
F
T
T
8
9
-
1
3
-
-
-
2
8
PredRDFS( 2 ) RDFS(8)
RDFS(9) RDFS(1)
RDFS(3) visit 5 -> RDFS(5)
Recursivecalls
Back to 3
![Page 15: Depth-First Search Lecture 24 COMP171 Fall 2006. Graph / Slide 2 Depth-First Search (DFS) * DFS is another popular graph search strategy n Idea is similar](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d7d5503460f94a60574/html5/thumbnails/15.jpg)
Graph / Slide 15
2
4
3
5
1
76
9
8
0Adjacency List
source
0
1
2
3
4
5
6
7
8
9
Visited Table (T/F)
T
T
T
T
T
T
F
F
T
T
8
9
-
1
3
3
-
-
2
8
PredRDFS( 2 ) RDFS(8)
RDFS(9) RDFS(1)
RDFS(3) RDFS(5) 3 is already visited, so visit 6 -> RDFS(6)
Recursivecalls
Mark 5 as visited
Mark Pred[5]
![Page 16: Depth-First Search Lecture 24 COMP171 Fall 2006. Graph / Slide 2 Depth-First Search (DFS) * DFS is another popular graph search strategy n Idea is similar](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d7d5503460f94a60574/html5/thumbnails/16.jpg)
Graph / Slide 16
2
4
3
5
1
76
9
8
0Adjacency List
source
0
1
2
3
4
5
6
7
8
9
Visited Table (T/F)
T
T
T
T
T
T
T
F
T
T
8
9
-
1
3
3
5
-
2
8
PredRDFS( 2 ) RDFS(8)
RDFS(9) RDFS(1)
RDFS(3) RDFS(5) RDFS(6) visit 7 -> RDFS(7)
Recursivecalls
Mark 6 as visited
Mark Pred[6]
![Page 17: Depth-First Search Lecture 24 COMP171 Fall 2006. Graph / Slide 2 Depth-First Search (DFS) * DFS is another popular graph search strategy n Idea is similar](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d7d5503460f94a60574/html5/thumbnails/17.jpg)
Graph / Slide 17
2
4
3
5
1
76
9
8
0Adjacency List
source
0
1
2
3
4
5
6
7
8
9
Visited Table (T/F)
T
T
T
T
T
T
T
T
T
T
8
9
-
1
3
3
5
6
2
8
PredRDFS( 2 ) RDFS(8)
RDFS(9) RDFS(1)
RDFS(3) RDFS(5) RDFS(6) RDFS(7) -> Stop no more unvisited neighbors
Recursivecalls
Mark 7 as visited
Mark Pred[7]
![Page 18: Depth-First Search Lecture 24 COMP171 Fall 2006. Graph / Slide 2 Depth-First Search (DFS) * DFS is another popular graph search strategy n Idea is similar](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d7d5503460f94a60574/html5/thumbnails/18.jpg)
Graph / Slide 18
Adjacency List
0
1
2
3
4
5
6
7
8
9
Visited Table (T/F)
T
T
T
T
T
T
T
T
T
T
8
9
-
1
3
3
5
6
2
8
PredRDFS( 2 ) RDFS(8)
RDFS(9) RDFS(1)
RDFS(3) RDFS(5) RDFS(6) -> Stop
Recursivecalls
2
4
3
5
1
76
9
8
0
source
![Page 19: Depth-First Search Lecture 24 COMP171 Fall 2006. Graph / Slide 2 Depth-First Search (DFS) * DFS is another popular graph search strategy n Idea is similar](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d7d5503460f94a60574/html5/thumbnails/19.jpg)
Graph / Slide 19
Adjacency List
0
1
2
3
4
5
6
7
8
9
Visited Table (T/F)
T
T
T
T
T
T
T
T
T
T
8
9
-
1
3
3
5
6
2
8
PredRDFS( 2 ) RDFS(8)
RDFS(9) RDFS(1)
RDFS(3) RDFS(5) -> Stop
Recursivecalls
2
4
3
5
1
76
9
8
0
source
![Page 20: Depth-First Search Lecture 24 COMP171 Fall 2006. Graph / Slide 2 Depth-First Search (DFS) * DFS is another popular graph search strategy n Idea is similar](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d7d5503460f94a60574/html5/thumbnails/20.jpg)
Graph / Slide 20
Adjacency List
0
1
2
3
4
5
6
7
8
9
Visited Table (T/F)
T
T
T
T
T
T
T
T
T
T
8
9
-
1
3
3
5
6
2
8
PredRDFS( 2 ) RDFS(8)
RDFS(9) RDFS(1)
RDFS(3) -> Stop
Recursivecalls
2
4
3
5
1
76
9
8
0
source
![Page 21: Depth-First Search Lecture 24 COMP171 Fall 2006. Graph / Slide 2 Depth-First Search (DFS) * DFS is another popular graph search strategy n Idea is similar](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d7d5503460f94a60574/html5/thumbnails/21.jpg)
Graph / Slide 21
Adjacency List
0
1
2
3
4
5
6
7
8
9
Visited Table (T/F)
T
T
T
T
T
T
T
T
T
T
8
9
-
1
3
3
5
6
2
8
PredRDFS( 2 ) RDFS(8)
RDFS(9) RDFS(1) -> Stop
Recursivecalls
2
4
3
5
1
76
9
8
0
source
![Page 22: Depth-First Search Lecture 24 COMP171 Fall 2006. Graph / Slide 2 Depth-First Search (DFS) * DFS is another popular graph search strategy n Idea is similar](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d7d5503460f94a60574/html5/thumbnails/22.jpg)
Graph / Slide 22
Adjacency List
0
1
2
3
4
5
6
7
8
9
Visited Table (T/F)
T
T
T
T
T
T
T
T
T
T
8
9
-
1
3
3
5
6
2
8
PredRDFS( 2 ) RDFS(8)
RDFS(9) -> Stop
Recursivecalls
2
4
3
5
1
76
9
8
0
source
![Page 23: Depth-First Search Lecture 24 COMP171 Fall 2006. Graph / Slide 2 Depth-First Search (DFS) * DFS is another popular graph search strategy n Idea is similar](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d7d5503460f94a60574/html5/thumbnails/23.jpg)
Graph / Slide 23
Adjacency List
0
1
2
3
4
5
6
7
8
9
Visited Table (T/F)
T
T
T
T
T
T
T
T
T
T
8
9
-
1
3
3
5
6
2
8
PredRDFS( 2 ) RDFS(8) -> Stop
Recursivecalls
2
4
3
5
1
76
9
8
0
source
![Page 24: Depth-First Search Lecture 24 COMP171 Fall 2006. Graph / Slide 2 Depth-First Search (DFS) * DFS is another popular graph search strategy n Idea is similar](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d7d5503460f94a60574/html5/thumbnails/24.jpg)
Graph / Slide 24
Example FinishedAdjacency List
0
1
2
3
4
5
6
7
8
9
Visited Table (T/F)
T
T
T
T
T
T
T
T
T
T
8
9
-
1
3
3
5
6
2
8
PredRDFS( 2 ) -> Stop
Recursive calls finished
2
4
3
5
1
76
9
8
0
source
![Page 25: Depth-First Search Lecture 24 COMP171 Fall 2006. Graph / Slide 2 Depth-First Search (DFS) * DFS is another popular graph search strategy n Idea is similar](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d7d5503460f94a60574/html5/thumbnails/25.jpg)
Graph / Slide 25
DFS Path TrackingAdjacency List
0
1
2
3
4
5
6
7
8
9
Visited Table (T/F)
T
T
T
T
T
T
T
T
T
T
8
9
-
1
3
3
5
6
2
8
Pred
Try some examples.Path(0) ->Path(6) ->Path(7) ->
DFS find out path too
2
4
3
5
1
76
9
8
0
source
![Page 26: Depth-First Search Lecture 24 COMP171 Fall 2006. Graph / Slide 2 Depth-First Search (DFS) * DFS is another popular graph search strategy n Idea is similar](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d7d5503460f94a60574/html5/thumbnails/26.jpg)
Graph / Slide 26
DFS TreeResulting DFS-tree.Notice it is much “deeper”than the BFS tree.
Captures the structure of the recursive calls- when we visit a neighbor w of v, we add w as child of v- whenever DFS returns from a vertex v, we climb up in the tree from v to its parent
![Page 27: Depth-First Search Lecture 24 COMP171 Fall 2006. Graph / Slide 2 Depth-First Search (DFS) * DFS is another popular graph search strategy n Idea is similar](https://reader035.vdocuments.site/reader035/viewer/2022062516/56649d7d5503460f94a60574/html5/thumbnails/27.jpg)
Graph / Slide 27
Time Complexity of DFS(Using adjacency list)
We never visited a vertex more than once
We had to examine all edges of the vertices We know Σvertex v degree(v) = 2m where m is the number of
edges
So, the running time of DFS is proportional to the number of edges and number of vertices (same as BFS) O(n + m)
You will also see this written as: O(|v|+|e|) |v| = number of vertices (n)
|e| = number of edges (m)