The document demonstrates a depth-first search algorithm on a graph. It starts by visiting vertex 0, and then recursively visits its adjacent unvisited vertices 6, 2, 1, and 5 in that order, marking each as visited. It continues recursively exploring all vertices accessible from 0 until all are visited.
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Graph dfs-and-path
1. 14
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
Graph g
myG.txt
13
13
0 5
4 3
0 1
9 12
6 4
5 4
0 2
11 12
9 10
0 6
7 8
9 11
5 3
V
E
V-E lists
Adjacency lists
adj[]
0
1
2
3
4
5
6
6
3
5
5
2
0
1 5
0
4
6 3
0 4
4 0
2. 15
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
visit 0: Which one first?
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 F -
4 F -
5 F -
6 F -
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
3. 16
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
visit 0: check 6, check 2, check 1, and check 5
Adjacency lists
adj[]
0
1
2
3
4
5
6
6
3
5
5
2
0
1 5
0
4
6 3
0 4
4 0
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 F -
4 F -
5 F -
6 F -
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
4. 17
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
visit 6: check 0, check 4
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 F -
4 F -
5 F -
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
Adjacency lists
adj[]
0
1
2
3
4
5
6
6
3
5
5
2
0
1 5
0
4
6 3
0 4
4 0
5. 18
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
visit 4: check 5, check 6, check 3
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 F -
4 T 6
5 F -
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
adj[]
0
1
2
3
4
5
6
6
3
5
5
2
0
1 5
0
4
6 3
0 4
4 0
6. 19
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
visit 5: check 3, check 4, check 0
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 F -
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
adj[]
0
1
2
3
4
5
6
6
3
5
5
2
0
1 5
0
4
6 3
0 4
4 0
7. 20
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
visit 5: check 3, check 4, check 0
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 F -
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
8. 21
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
visit 5: check 3, check 4, check 0
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
9. 22
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
visit 3: check 5, check 4
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
Adjacency lists
adj[]
0
1
2
3
4
5
6
6
3
5
5
2
0
1 5
0
4
6 3
0 4
4 0
10. 23
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
visit 3: check 5, check 4
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
11. 24
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
visit 3: check 5, check 4
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
12. 25
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
visit 3: check 5, check 4
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
13. 26
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
3 done:
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
14. 27
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
visit 5: check 3, check 4, check 0
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
done
adj[]
0
1
2
3
4
5
6
6
3
5
5
2
0
1 5
0
4
6 3
0 4
4 0
15. 28
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
visit 5: check 3, check 4, check 0
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
done
16. 29
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
visit 5: check 3, check 4, check 0
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
done
17. 30
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
visit 5: check 3, check 4, check 0
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
done
18. 31
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
5 done
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
19. 32
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
visit 4: check 5, check 6, check 3
20. 33
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
visit 4: check 5, check 6, check 3
21. 34
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
visit 6: check 0, check 4
22. 35
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
v marked[] edgeTo[v]
0 T -
1 F -
2 F -
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
visit 6: check 0, check 4
done 6
23. 36
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
v marked[] edgeTo[v]
0 T -
1 F -
2 T 0
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
visit 0: check 6, check 2, check 1, and check 5
Adjacency lists
adj[]
0
1
2
3
4
5
6
6
3
5
5
2
0
1 5
0
4
6 3
0 4
4 0
24. 37
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
v marked[] edgeTo[v]
0 T -
1 F -
2 T 0
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
visit 2: check 0
Adjacency lists
adj[]
0
1
2
3
4
5
6
6
3
5
5
2
0
1 5
0
4
6 3
0 4
4 0
25. 38
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
v marked[] edgeTo[v]
0 T -
1 F -
2 T 0
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
visit 2: check 0
26. 39
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
v marked[] edgeTo[v]
0 T -
1 F -
2 T 0
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
visit 0: check 6, check 2, check 1, and check 5
27. 40
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
v marked[] edgeTo[v]
0 T -
1 T 0
2 T 0
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
visit 1: check 0
28. 41
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
v marked[] edgeTo[v]
0 T -
1 T 0
2 T 0
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
visit 0: check 6, check 2, check 1, and check 5
29. 42
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
v marked[] edgeTo[v]
0 T -
1 T 0
2 T 0
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
visit 0: check 6, check 2, check 1, and check 5
0 done
30. 43
Depth-first search demo
To visit a vertex v:
• Mark vertex v as visited.
• Recursively visit all unmarked vertices adjacent to v.
0
1 2 6
5
3 4
7 8
9 10
11 12
v marked[] edgeTo[v]
0 T -
1 T 0
2 T 0
3 T 5
4 T 6
5 T 4
6 T 0
7 F -
8 F -
9 F -
10 F -
11 F -
12 F -
• found vertices reachable from 0 – dfs:0, 6, 4, 5, 3, 2, 1
• built a data structure edgeTo[v]