Professional Documents
Culture Documents
Fall, 2023
Discrete Mathematics
Lecture 11: Graph – Part 3
Search Algorithms
Ta Quang Hung
Part 1: Introduction
Contents
1 Introduction
2 Depth-First-Search (DFS) Algorithm
3 Breadth-First-Search (BFS) Algorithm
4 Summary
Search Algorithms
• Modern computing and the internet have made accessible a vast amount
of information. The ability to efficiently search through this information is
fundamental to processing it. This chapter describes classical searching
algorithms that have proven to be effective in numerous diverse
applications for decades. Without algorithms like these, the development
of the computational infrastructure that we enjoy in the modern world
would not have been possible.
• The term symbol table to describe an abstract mechanism where we
save information (a value) that we can later search for and retrieve by
specifying a key. The nature of the keys and the values depends upon
the application. There can be a huge number of keys and a huge amount
of information, so implementing an efficient symbol table is a significant
computational challenge.
}
} Part 3: Graph Theory Discrete % stack
Mathematics
The University P is
of New empty,
South all nodes are
Wales Page 6
Depth-First-Search Algorithm
Searching Breadth-First-Search Algorithm
1 0 5
Stack
2 6 7
3 4
Visited vertex
Unexplored vertex 0 1 2 3 4 5 6 7
Solving vertex
1 0 5
Stack
2 6 7
0
3 4
Visited vertex
Unexplored vertex 0 1 2 3 4 5 6 7
Solving vertex
1 0 5
Stack
2 6 7
3 4
Visited vertex
Unexplored vertex 0 1 2 3 4 5 6 7
Solving vertex 0
1 0 5
Stack
2 6 7
3 4
Visited vertex 0
Unexplored vertex 1 2 3 4 5 6 7
Solving vertex 0
1 0 5
Stack
2 6 7
2
3 4
Visited vertex 0
Unexplored vertex 1 2 3 4 5 6 7
Solving vertex 0
1 0 5
Stack
2 6 7
3
2
3 4
Visited vertex 0
Unexplored vertex 1 2 3 4 5 6 7
Solving vertex 0
1 0 5
Stack
2 6 7
5
3
2
3 4
Visited vertex 0
Unexplored vertex 1 2 3 4 5 6 7
Solving vertex 0
1 0 5
Stack
2 6 7
3
2
3 4
Visited vertex 0
Unexplored vertex 1 2 3 4 5 6 7
Solving vertex 5
1 0 5
Stack
2 6 7
3
2
3 4
Visited vertex 0 5
Unexplored vertex 1 2 3 4 6 7
Solving vertex 5
1 0 5
Stack
2 6 7
0
3
2
3 4
Visited vertex 0 5
Unexplored vertex 1 2 3 4 6 7
Solving vertex 5
1 0 5
Stack
2 6 7
4
0
3
3 4 2
Visited vertex 0 5
Unexplored vertex 1 2 3 4 6 7
Solving vertex 5
1 0 5
Stack
2 6 7
7
4
0
3 4 3
2
Visited vertex 0 5
Unexplored vertex 1 2 3 4 6 7
Solving vertex 5
1 0 5
Stack
2 6 7
4
0
3
3 4 2
Visited vertex 0 5
Unexplored vertex 1 2 3 4 6 7
Solving vertex 7
1 0 5
Stack
2 6 7
4
0
3
3 4 2
Visited vertex 0 5 7
Unexplored vertex 1 2 3 4 6
Solving vertex 7
1 0 5
Stack
2 6 7
4
4
0
3 4 3
2
Visited vertex 0 5 7
Unexplored vertex 1 2 3 4 6
Solving vertex 7
1 0 5
Stack
2 6 7
5
4
4
3 4 0
3
Visited vertex 0 5 7 2
Unexplored vertex 1 2 3 4 6
Solving vertex 7
1 0 5
Stack
2 6 7
4
4
0
3 4 3
2
Visited vertex 0 5 7
Unexplored vertex 1 2 3 4 6
Solving vertex 5
1 0 5
Stack
2 6 7
4
0
3
3 4 2
Visited vertex 0 5 7
Unexplored vertex 1 2 3 4 6
Solving vertex 4
1 0 5
Stack
2 6 7
4
0
3
3 4 2
Visited vertex 0 4 5 7
Unexplored vertex 1 2 3 6
Solving vertex 4
1 0 5
Stack
2 6 7
3
4
0
3 4 3
2
Visited vertex 0 4 5 7
Unexplored vertex 1 2 3 6
Solving vertex 4
1 0 5
Stack
2 6 7
5
3
4
3 4 0
3
Visited vertex 0 4 5 7 2
Unexplored vertex 1 2 3 6
Solving vertex 4
1 0 5
Stack
2 6 7
7
5
3
3 4 4
0
Visited vertex 0 4 5 7 3
Unexplored vertex 1 2 3 6 2
Solving vertex 4
1 0 5
Stack
2 6 7
5
3
4
3 4 0
3
Visited vertex 0 4 5 7 2
Unexplored vertex 1 2 3 6
Solving vertex 7
1 0 5
Stack
2 6 7
3
4
0
3 4 3
2
Visited vertex 0 4 5 7
Unexplored vertex 1 2 3 6
Solving vertex 5
1 0 5
Stack
2 6 7
4
0
3
3 4 2
Visited vertex 0 4 5 7
Unexplored vertex 1 2 3 6
Solving vertex 3
1 0 5
Stack
2 6 7
4
0
3
3 4 2
Visited vertex 0 3 4 5 7
Unexplored vertex 1 2 6
Solving vertex 3
1 0 5
Stack
2 6 7
0
4
0
3 4 3
2
Visited vertex 0 3 4 5 7
Unexplored vertex 1 2 6
Solving vertex 3
1 0 5
Stack
2 6 7
4
0
4
3 4 0
3
Visited vertex 0 3 4 5 7 2
Unexplored vertex 1 2 6
Solving vertex 3
1 0 5
Stack
2 6 7
6
4
0
3 4 4
0
Visited vertex 0 3 4 5 7 3
Unexplored vertex 1 2 6 2
Solving vertex 3
1 0 5
Stack
2 6 7
4
0
4
3 4 0
3
Visited vertex 0 3 4 5 7 2
Unexplored vertex 1 2 6
Solving vertex 6
1 0 5
Stack
2 6 7
4
0
4
3 4 0
3
Visited vertex 0 3 4 5 6 7 2
Unexplored vertex 1 2
Solving vertex 6
1 0 5
Stack
2 6 7
3
4
0
3 4 4
0
Visited vertex 0 3 4 5 6 7 3
Unexplored vertex 1 2 2
Solving vertex 6
1 0 5
Stack
2 6 7
4
0
4
3 4 0
3
Visited vertex 0 3 4 5 6 7 2
Unexplored vertex 1 2
Solving vertex 3
1 0 5
Stack
2 6 7
0
4
0
3 4 3
2
Visited vertex 0 3 4 5 6 7
Unexplored vertex 1 2
Solving vertex 4
1 0 5
Stack
2 6 7
4
0
3
3 4 2
Visited vertex 0 3 4 5 6 7
Unexplored vertex 1 2
Solving vertex 0
1 0 5
Stack
2 6 7
0
3
2
3 4
Visited vertex 0 3 4 5 6 7
Unexplored vertex 1 2
Solving vertex 4
1 0 5
Stack
2 6 7
3
2
3 4
Visited vertex 0 3 4 5 6 7
Unexplored vertex 1 2
Solving vertex 0
1 0 5
Stack
2 6 7
2
3 4
Visited vertex 0 3 4 5 6 7
Unexplored vertex 1 2
Solving vertex 3
1 0 5
Stack
2 6 7
3 4
Visited vertex 0 3 4 5 6 7
Unexplored vertex 1 2
Solving vertex 2
1 0 5
Stack
2 6 7
0
3 4
Visited vertex 0 2 3 4 5 6 7
Unexplored vertex 1
Solving vertex 2
1 0 5
Stack
2 6 7
1
0
3 4
Visited vertex 0 2 3 4 5 6 7
Unexplored vertex 1
Solving vertex 2
1 0 5
Stack
2 6 7
0
3 4
Visited vertex 0 2 3 4 5 6 7
Unexplored vertex 1
Solving vertex 1
1 0 5
Stack
2 6 7
2
0
3 4
Visited vertex 0 1 2 3 4 5 6 7
Unexplored vertex
Solving vertex 1
1 0 5
Stack
2 6 7
0
3 4
Visited vertex 0 1 2 3 4 5 6 7
Unexplored vertex
Solving vertex 2
1 0 5
Stack
2 6 7
3 4
Visited vertex 0 1 2 3 4 5 6 7
Unexplored vertex
Solving vertex 0
1 0 5
Stack
2 6 7
3 4
Visited vertex 0 1 2 3 4 5 6 7
Unexplored vertex
Solving vertex
}
} Part 3: Graph Theory Discrete % queue
of NewQSouth
Mathematics
The University is empty,
Walesall nodesPage
are 55
Depth-First-Search Algorithm
Searching Breadth-First-Search Algorithm
Queue
1
0 5
2
6 7
3 4
Visited vertex
Unexplored vertex 0 1 2 3 4 5 6 7
Solving vertex
Queue
1
0 5
2
6 7
3 4
Visited vertex
Unexplored vertex 0 1 2 3 4 5 6 7
0
Solving vertex
Queue
1
0 5
2
6 7
3 4
Visited vertex
Unexplored vertex 0 1 2 3 4 5 6 7
Solving vertex 0
Queue
1
0 5
2
6 7
3 4
Visited vertex 0
Unexplored vertex 1 2 3 4 5 6 7
Solving vertex 0
Queue
1
0 5
2
6 7
3 4
Visited vertex 0
Unexplored vertex 1 2 3 4 5 6 7
1
Solving vertex 0
Queue
1
0 5
2
6 7
3 4
Visited vertex 0
2
Unexplored vertex 1 2 3 4 5 6 7
1
Solving vertex 0
Queue
1
0 5
2
6 7
3 4
3
Visited vertex 0
2
Unexplored vertex 1 2 3 4 5 6 7
1
Solving vertex 0
Queue
1
0 5
2
6 7
3 4
5
3
Visited vertex 0
2
Unexplored vertex 1 2 3 4 5 6 7
1
Solving vertex 0
Queue
1
0 5
2
6 7
3 4
5
Visited vertex 0
3
Unexplored vertex 1 2 3 4 5 6 7
2
Solving vertex 1
Queue
1
0 5
2
6 7
3 4
5
Visited vertex 0 1
3
Unexplored vertex 2 3 4 5 6 7
2
Solving vertex 1
Queue
1
0 5
2
6 7
3 4
0
5
Visited vertex 0 1
3
Unexplored vertex 2 3 4 5 6 7
2
Solving vertex 1
Queue
1
0 5
2
6 7
2
3 4
0
5
Visited vertex 0 1
3
Unexplored vertex 2 3 4 5 6 7
2
Solving vertex 1
Queue
1
0 5
2
6 7
3 4
2
0
Visited vertex 0 1
5
Unexplored vertex 2 3 4 5 6 7
3
Solving vertex 2
Queue
1
0 5
2
6 7
3 4
2
0
Visited vertex 0 1 2
5
Unexplored vertex 3 4 5 6 7
3
Solving vertex 2
Queue
1
0 5
2
6 7
0
3 4
2
0
Visited vertex 0 1 2
5
Unexplored vertex 3 4 5 6 7
3
Solving vertex 2
Queue
1
0 5
2
6 7
1
0
3 4
2
0
Visited vertex 0 1 2
5
Unexplored vertex 3 4 5 6 7
3
Solving vertex 2
Queue
1
0 5
2
6 7
1
3 4
0
2
Visited vertex 0 1 2
0
Unexplored vertex 3 4 5 6 7
5
Solving vertex 3
Queue
1
0 5
2
6 7
1
3 4
0
2
Visited vertex 0 1 2 3
0
Unexplored vertex 4 5 6 7
5
Solving vertex 3
Queue
1
0 5
2
6 7
0
1
3 4
0
2
Visited vertex 0 1 2 3
0
Unexplored vertex 4 5 6 7
5
Solving vertex 3
Queue
1
0 5
2
6 7
4
0
1
3 4
0
2
Visited vertex 0 1 2 3
0
Unexplored vertex 4 5 6 7
5
Solving vertex 3
Queue
1
0 5
2 6
6 7
4
0
1
3 4
0
2
Visited vertex 0 1 2 3
0
Unexplored vertex 4 5 6 7
5
Solving vertex 3
Queue
1
0 5
2
6 7
6
4
0
3 4
1
0
Visited vertex 0 1 2 3
2
Unexplored vertex 4 5 6 7
0
Solving vertex 5
Queue
1
0 5
2
6 7
6
4
0
3 4
1
0
Visited vertex 0 1 2 3 5
2
Unexplored vertex 4 6 7
0
Solving vertex 5
Queue
1
0 5
2 0
6 7
6
4
0
3 4
1
0
Visited vertex 0 1 2 3 5
2
Unexplored vertex 4 6 7
0
Solving vertex 5
Queue
1
0 5
4
2 0
6 7
6
4
0
3 4
1
0
Visited vertex 0 1 2 3 5
2
Unexplored vertex 4 6 7
0
Solving vertex 5
Queue
1
0 5 6
4
2 0
6 7
6
4
0
3 4
1
0
Visited vertex 0 1 2 3 5
2
Unexplored vertex 4 6 7
0
Solving vertex 5
Queue
1
7
0 5 6
4
2 0
6 7
6
4
0
3 4
1
0
Visited vertex 0 1 2 3 5
2
Unexplored vertex 4 6 7
0
Solving vertex 5
Queue
1
0 5 7
6
2 4
6 7
0
6
4
3 4
0
1
Visited vertex 0 1 2 3 5
0
Unexplored vertex 4 6 7
2
Solving vertex 0
Queue
1
0 5
7
2 6
6 7
4
0
6
3 4
4
0
Visited vertex 0 1 2 3 5
1
Unexplored vertex 4 6 7
0
Solving vertex 2
Queue
1
0 5
2 7
6 7
6
4
0
3 4
6
4
Visited vertex 0 1 2 3 5
0
Unexplored vertex 4 6 7
1
Solving vertex 0
Queue
1
0 5
2
6 7
7
6
4
3 4
0
6
Visited vertex 0 1 2 3 5
4
Unexplored vertex 4 6 7
0
Solving vertex 1
Queue
1
0 5
2
6 7
7
6
3 4
4
0
Visited vertex 0 1 2 3 5
6
Unexplored vertex 4 6 7
4
Solving vertex 0
Queue
1
0 5
2
6 7
7
3 4
6
4
Visited vertex 0 1 2 3 5
0
Unexplored vertex 4 6 7
6
Solving vertex 4
Queue
1
0 5
2
6 7
7
3 4
6
4
Visited vertex 0 1 2 3 4 5
0
Unexplored vertex 6 7
6
Solving vertex 4
Queue
1
0 5
2
6 7
3
7
3 4
6
4
Visited vertex 0 1 2 3 4 5
0
Unexplored vertex 6 7
6
Solving vertex 4
Queue
1
0 5
2
6 7
5
3
7
3 4
6
4
Visited vertex 0 1 2 3 4 5
0
Unexplored vertex 6 7
6
Solving vertex 4
Queue
1
0 5
2 7
6 7
5
3
7
3 4
6
4
Visited vertex 0 1 2 3 4 5
0
Unexplored vertex 6 7
6
Solving vertex 4
Queue
1
0 5
2
6 7
7
5
3
3 4
7
6
Visited vertex 0 1 2 3 4 5
4
Unexplored vertex 6 7
0
Solving vertex 6
Queue
1
0 5
2
6 7
7
5
3
3 4
7
6
Visited vertex 0 1 2 3 4 5 6
4
Unexplored vertex 7
0
Solving vertex 6
Queue
1
0 5
2 3
6 7
7
5
3
3 4
7
6
Visited vertex 0 1 2 3 4 5 6
4
Unexplored vertex 7
0
Solving vertex 6
Queue
1
0 5
5
2 3
6 7
7
5
3
3 4
7
6
Visited vertex 0 1 2 3 4 5 6
4
Unexplored vertex 7
0
Solving vertex 6
Queue
1
0 5
2 5
6 7
3
7
5
3 4
3
7
Visited vertex 0 1 2 3 4 5 6
6
Unexplored vertex 7
4
Solving vertex 0
Queue
1
0 5
2
6 7
5
3
7
3 4
5
3
Visited vertex 0 1 2 3 4 5 6
7
Unexplored vertex 7
6
Solving vertex 4
Queue
1
0 5
2
6 7
5
3
3 4
7
5
Visited vertex 0 1 2 3 4 5 6
3
Unexplored vertex 7
7
Solving vertex 6
Queue
1
0 5
2
6 7
5
3 4
3
7
Visited vertex 0 1 2 3 4 5 6
5
Unexplored vertex 7
3
Solving vertex 7
Queue
1
0 5
2
6 7
5
3 4
3
7
Visited vertex 0 1 2 3 4 5 6 7
5
Unexplored vertex
3
Solving vertex 7
Queue
1
0 5
2
6 7
4
5
3 4
3
7
Visited vertex 0 1 2 3 4 5 6 7
5
Unexplored vertex
3
Solving vertex 7
Queue
1
0 5
2
6 7
5
4
5
3 4
3
7
Visited vertex 0 1 2 3 4 5 6 7
5
Unexplored vertex
3
Solving vertex 7
Queue
1
0 5
2
6 7
5
4
3 4
5
3
Visited vertex 0 1 2 3 4 5 6 7
7
Unexplored vertex
5
Solving vertex 3
Queue
1
0 5
2
6 7
5
3 4
4
5
Visited vertex 0 1 2 3 4 5 6 7
3
Unexplored vertex
7
Solving vertex 5
Queue
1
0 5
2
6 7
3 4
5
4
Visited vertex 0 1 2 3 4 5 6 7
5
Unexplored vertex
3
Solving vertex 7
Queue
1
0 5
2
6 7
3 4
5
Visited vertex 0 1 2 3 4 5 6 7
4
Unexplored vertex
5
Solving vertex 3
Queue
1
0 5
2
6 7
3 4
Visited vertex 0 1 2 3 4 5 6 7
5
Unexplored vertex
4
Solving vertex 5
Queue
1
0 5
2
6 7
3 4
Visited vertex 0 1 2 3 4 5 6 7
Unexplored vertex
5
Solving vertex 4
Queue
1
0 5
2
6 7
3 4
Visited vertex 0 1 2 3 4 5 6 7
Unexplored vertex
Solving vertex 5
Queue
1
0 5
2
6 7
3 4
Visited vertex 0 1 2 3 4 5 6 7
Unexplored vertex
Solving vertex