Depth-First Graph Traversal Algorithm. Alyce Brady CS 510: Computer Algorithms. Search: Look for a given node stop when node found, even if not all nodes were visited Traversal: Always visit all nodes. Search vs Traversal. Similar to Depth-first Traversal of a Binary Tree - PowerPoint PPT Presentation
Search: Look for a given nodeSearch: Look for a given node– stop when node found, even if not all stop when node found, even if not all
nodes were visitednodes were visited Traversal: Always visit all nodesTraversal: Always visit all nodes
Depth-first Search
Similar to Depth-first Traversal of a Similar to Depth-first Traversal of a Binary TreeBinary Tree
Choose a starting vertexChoose a starting vertex Do a depth-first search on each Do a depth-first search on each
adjacent vertexadjacent vertex
Pseudo-Code forDepth-First Search
depth-first-searchdepth-first-searchmark vertex as visitedmark vertex as visited
for each adjacent vertexfor each adjacent vertex
if unvisitedif unvisited
do a depth-first search on adjacent do a depth-first search on adjacent vertexvertex
Depth-First Search
A
B C
D E F G
Depth-First Search
A
B C
D E F G
AA
v
Depth-First Search
A
B C
D E F G
AA
v
Depth-First Search
A
B C
D E F G
A BA B
v
v
Depth-First Search
A
B C
D E F G
A BA B
v
v
Depth-First Search
A
B C
D E F G
A BA B
v
v
Depth-First Search
A
B C
D E F G
v
v
A B DA B D
v
Depth-First Search
A
B C
D E F G
v
v
A B DA B D
v
Depth-First Search
A
B C
D E F G
v
v
A B DA B D
v
Depth-First Search
A
B C
D E F G
v
v
v
A B D EA B D E
v
Depth-First Search
A
B C
D E F G
v
v
v
A B D EA B D E
v
Depth-First Search
A
B C
D E F G
v
v
v
A B D EA B D E
v
Depth-First Search
A
B C
D E F G
v
v
v
A B D EA B D E
Depth-First Search
A
B C
D E F G
v
v
v
A B D EA B D E
v
Depth-First Search
A
B C
D E F G
v
v
v
A B D EA B D E
v
Depth-First Search
A
B C
D E F G
v
v
v
A B D EA B D E
v
Depth-First Search
A
B C
D E F G
v
v
vv
v
A B D E FA B D E F
Depth-First Search
A
B C
D E F G
v
v
vv
v
A B D E FA B D E F
Depth-First Search
A
B C
D E F G
v
v
vv
v
A B D E FA B D E F
Depth-First Search
A
B C
D E F G
v
v
vv
v
A B D E F CA B D E F C
v
Depth-First Search
A
B C
D E F G
v
v
vv
v
A B D E F CA B D E F C
v
Depth-First Search
A
B C
D E F G
v
v
vv
v
A B D E F CA B D E F C
v
Depth-First Search
A
B C
D E F G
v
v
vv
v
A B D E F CA B D E F C
v
Depth-First Search
A
B C
D E F G
v
v
vv
v
v
A B D E F C GA B D E F C G
v
Depth-First Search
A
B C
D E F G
v
v
vv
v
v
A B D E F C GA B D E F C G
v
Depth-First Search
A
B C
D E F G
v
v
vv
v
v
A B D E F C GA B D E F C G
v
Depth-First Search
A
B C
D E F G
v
v
vv
v
v
A B D E F C GA B D E F C G
v
Depth-First Search
A
B C
D E F G
v
v
vv
v
v
A B D E F C GA B D E F C G
v
Depth-First Search
A
B C
D E F G
v
v
vv
v
v
A B D E F C GA B D E F C G
v
Depth-First Search
A
B C
D E F G
v
v
vv
v
v
A B D E F C GA B D E F C G
v
Depth-First Search
A
B C
D E F G
v
v
vv
v
v
A B D E F C GA B D E F C G
v
Depth-First Search
A
B C
D E F G
A B D E F C GA B D E F C G
Was this a true search?Was this a true search?– How would we make it a true search?How would we make it a true search?
Was this a true traversal?Was this a true traversal?– How would we make it a true traversal?How would we make it a true traversal?
Time and Space Complexityfor Depth-First Search
Time ComplexityTime Complexity– Adjacency ListsAdjacency Lists
Each node is marked visited onceEach node is marked visited once Each node is checked for each incoming edgeEach node is checked for each incoming edge O (v + e)O (v + e)
– Adjacency MatrixAdjacency Matrix Have to check all entries in matrix: O(nHave to check all entries in matrix: O(n22))
Space ComplexitySpace Complexity– Stack to handle nodes as they are Stack to handle nodes as they are
exploredexplored Worst case: all nodes put on stack (if graph is Worst case: all nodes put on stack (if graph is