Data Structures and Algorithms Ver. 1.0 Session 17 Objectives In this session, you will learn to:...
-
Upload
augustus-short -
Category
Documents
-
view
218 -
download
0
Transcript of Data Structures and Algorithms Ver. 1.0 Session 17 Objectives In this session, you will learn to:...
Data Structures and Algorithms
Ver. 1.0 Session 17
Objectives
In this session, you will learn to:Implement a graph
Apply graphs to solve programming problems
Data Structures and Algorithms
Ver. 1.0 Session 17
To implement a graph, you need to first represent the given information in the form of a graph.
The two most commonly used ways of representing a graph are as follows:
Adjacency Matrix
Adjacency List
Representing a Graph
Data Structures and Algorithms
Ver. 1.0 Session 17
Consider the following
graph:
Adjacency Matrix
Adjacency Matrix Representation
v1 v2 v3 v4
v1 0 1 0 0
v2 0 0 1 0
v3 0 0 0 0
v4 1 0 1 0
Data Structures and Algorithms
Ver. 1.0 Session 17
Consider the following
graph:
Adjacency List
Adjacency List Representation
Data Structures and Algorithms
Ver. 1.0 Session 17
Traversing a graph means visiting all the vertices in a graph.
You can traverse a graph with the help of the following two methods:
Depth First Search (DFS)
Breadth First Search (BFS)
Traversing a Graph
Data Structures and Algorithms
Ver. 1.0 Session 17
Algorithm: DFS(v)1. Push the starting vertex, v into the stack.
2. Repeat until the stack becomes empty:
DFS
a. Pop a vertex from the stack.
b. Visit the popped vertex.
c. Push all the unvisited vertices adjacent to the popped vertex into the stack.
Data Structures and Algorithms
Ver. 1.0 Session 17
DFS (Contd.)
v1
Push the starting vertex, v1 into the stack
Data Structures and Algorithms
Ver. 1.0 Session 17
DFS (Contd.)
v1
Pop a vertex, v1 from the stack
Visit v1
Push all unvisited vertices adjacent to v1 into the stack
v1
Visited:
Data Structures and Algorithms
Ver. 1.0 Session 17
DFS (Contd.)
v4
Pop a vertex, v1 from the stack
Visit v1
Push all unvisited vertices adjacent to v1 into the stack
v1
Visited:
v2
Data Structures and Algorithms
Ver. 1.0 Session 17
DFS (Contd.)
Visited:
Pop a vertex, v2 from the stack
Visit v2
Push all unvisited vertices adjacent to v2 into the stack
v1 v2
v4
v2
Data Structures and Algorithms
Ver. 1.0 Session 17
DFS (Contd.)
Visited:
Pop a vertex, v2 from the stack
Visit v2
Push all unvisited vertices adjacent to v2 into the stack
v1 v2
v3
v6
v4
Data Structures and Algorithms
Ver. 1.0 Session 17
DFS (Contd.)
Visited:
Pop a vertex, v6 from the stack
Visit v6
Push all unvisited vertices adjacent to v6 into the stack
v1 v2 v6
There are no unvisited vertices adjacent to v6
v3
v6
v4
Data Structures and Algorithms
Ver. 1.0 Session 17
DFS (Contd.)
Visited:
Pop a vertex, v3 from the stack
Visit v3
Push all unvisited vertices adjacent to v3 into the stack
v1 v2 v6 v3
v3
v4
Data Structures and Algorithms
Ver. 1.0 Session 17
DFS (Contd.)
Visited:
Pop a vertex, v3 from the stack
Visit v3
Push all unvisited vertices adjacent to v3 into the stack
v1 v2
v5
v6 v3
v4
Data Structures and Algorithms
Ver. 1.0 Session 17
DFS (Contd.)
Visited:
Pop a vertex, v5 from the stack
Visit v5
Push all unvisited vertices adjacent to v5 into the stack
v1 v2 v6 v3 v5
There are no unvisited vertices adjacent to v5
v5
v4
Data Structures and Algorithms
Ver. 1.0 Session 17
DFS (Contd.)
Visited:
Pop a vertex, v4 from the stack
Visit v4
Push all unvisited vertices adjacent to v4 into the stack
v1 v2 v6 v3 v5
There are no unvisited vertices adjacent to v4
v4
v4
Data Structures and Algorithms
Ver. 1.0 Session 17
DFS (Contd.)
Visited:
The stack is now empty
Therefore, traversal is complete
v1 v2 v6 v3 v5 v4
Data Structures and Algorithms
Ver. 1.0 Session 17
DFS (Contd.)
Although the preceding algorithm provides a simple and convenient method to traverse a graph, the algorithm will not work correctly if the graph is not connected.
In such a case, you will not be able to traverse all the vertices from one single starting vertex.
Data Structures and Algorithms
Ver. 1.0 Session 17
DFS (Contd.)
To solve this problem, you need to execute the preceding algorithm repeatedly for all unvisited vertices in the graph.
1. Repeat step 2 for each vertex, v in the graph
2. If v is not visited: a. Call DFS(v)
Data Structures and Algorithms
Ver. 1.0 Session 17
Algorithm: BFS(v)1. Visit the starting vertex, v and insert it into a queue.
2. Repeat step 3 until the queue becomes empty.
3. Delete the front vertex from the queue, visit all its unvisited adjacent vertices, and insert them into the queue.
BFS
Data Structures and Algorithms
Ver. 1.0 Session 17
BFS (Contd.)
Visit v1
Insert v1 into the queue
v1
v1
Data Structures and Algorithms
Ver. 1.0 Session 17
BFS (Contd.)
Remove a vertex v1 from the queue
Visit all unvisited vertices adjacent to v1 and insert them in the queue
v1
v1
Visited:
Data Structures and Algorithms
Ver. 1.0 Session 17
BFS (Contd.)
Remove a vertex v1 from the queue
Visit all unvisited vertices adjacent to v1 and insert them in the queue
v2
v1 v2 v4
v4
Data Structures and Algorithms
Ver. 1.0 Session 17
BFS (Contd.)
Remove a vertex v2 from the queue
Visit all unvisited vertices adjacent to v2 and insert them in the queue
v2
v1 v2 v4
v4
Data Structures and Algorithms
Ver. 1.0 Session 17
BFS (Contd.)
Remove a vertex v2 from the queue
Visit all unvisited vertices adjacent to v2 and insert them in the queue
v1 v2 v4
v4
v3
v3
v6
v6
Data Structures and Algorithms
Ver. 1.0 Session 17
BFS (Contd.)
Remove a vertex v4 from the queue
Visit all unvisited vertices adjacent to v4 and insert them in the queue
v1 v2 v4
v4
v3
v3
v6
v6
v5
v5
Data Structures and Algorithms
Ver. 1.0 Session 17
BFS (Contd.)
Remove a vertex v3 from the queue
Visit all unvisited vertices adjacent to v3 and insert them in the queue
v1 v2 v4 v3
v3
v6
v6
v5
v5
v3 does not have any unvisited adjacent vertices
Data Structures and Algorithms
Ver. 1.0 Session 17
BFS (Contd.)
Remove a vertex v6 from the queue
Visit all unvisited vertices adjacent to v6 and insert them in the queue
v1 v2 v4 v3 v6
v6
v5
v5
v3 does not have any unvisited adjacent vertices
Data Structures and Algorithms
Ver. 1.0 Session 17
BFS (Contd.)
Remove a vertex v6 from the queue
Visit all unvisited vertices adjacent to v6 and insert them in the queue
v1 v2 v4 v3 v6 v5
v5
v6 does not have any unvisited adjacent vertices
Data Structures and Algorithms
Ver. 1.0 Session 17
BFS (Contd.)
Remove a vertex v5 from the queue
Visit all unvisited vertices adjacent to v5 and insert them in the queue
v1 v2 v4 v3 v6 v5
v5
v6 does not have any unvisited adjacent vertices
Data Structures and Algorithms
Ver. 1.0 Session 17
BFS (Contd.)
Remove a vertex v5 from the queue
Visit all unvisited vertices adjacent to v5 and insert them in the queue
v1 v2 v4 v3 v6 v5
v5 does not have any unvisited adjacent vertices
Data Structures and Algorithms
Ver. 1.0 Session 17
BFS (Contd.)
The queue is now empty
Therefore, traversal is complete
v1 v2 v4 v3 v6 v5
v5 does not have any unvisited adjacent vertices
Data Structures and Algorithms
Ver. 1.0 Session 17
BFS (Contd.)
Although the preceding algorithm provides a simple and convenient method to traverse a graph, the algorithm will not work correctly if the graph is not connected.
In such a case, you will not be able to traverse all the vertices from one single starting vertex.
Data Structures and Algorithms
Ver. 1.0 Session 17
BFS (Contd.)
To solve this problem, you need to execute the preceding algorithm repeatedly for all unvisited vertices in the graph.
1. Repeat step 2 for each vertex, v in the graph
2. If v is not visited: a. Call BFS(v)
Data Structures and Algorithms
Ver. 1.0 Session 17
Problem Statement:You have to represent a set of cities and the distances between them in the form of a graph. Write a program to represent the graph in the form of an adjacency matrix.
Activity: Implementing a Graph by Using Adjacency Matrix Representation
Data Structures and Algorithms
Ver. 1.0 Session 17
Many problems can be easily solved by reducing them in the form of a graph
Graph theory has been instrumental in analyzing and solving problems in areas as diverse as computer network design, urban planning, finding shortest paths and molecular biology.
Applications of Graphs
Data Structures and Algorithms
Ver. 1.0 Session 17
Solving the Shortest Path Problem
The shortest path problem can be solved by applying the Dijkstra’s algorithm on a graph
The Dijkstra’s algorithm is based on the greedy approach
The steps in the Dijkstra’s algorithm are as follows: 1. Choose vertex v corresponding to the smallest distance
recorded in the DISTANCE array such that v is not already in
FINAL.
2. Add v to FINAL.
3. Repeat for each vertex w in the graph that is not in FINAL: a. If the path from v1 to w via v is shorter than the previously
recorded distance from v1 to w (If ((DISTANCE[v] + weight of
edge(v,w)) < DISTANCE[w])): i. Set DISTANCE[w]=DISTANCE[v] + weight of edge(v,w).
4. If FINAL does not contain all the vertices, go to step 1.
Data Structures and Algorithms
Ver. 1.0 Session 17
Solving the Shortest Path Problem (Contd.)
5
2
3 4 6
3
36
DISTANCE
v1 v2 v3 v4 v5 v6
FINAL
0 ∞ 3 ∞ ∞5
v1
Suppose you need to find the shortest distance of all the vertices from vertex v1.
Add v1 to the FINAL array.
Data Structures and Algorithms
Ver. 1.0 Session 17
5
2
3 4 6
3
36
v1 v2 v3 v4 v5 v6
0 ∞ 3 ∞ ∞5
v1
In the DISTANCE array, vertex v4 has the shortest distance from vertex v1.
Therefore, v4 is added to the FINAL array.
v4
Solving the Shortest Path Problem (Contd.)
DISTANCE
FINAL
Data Structures and Algorithms
Ver. 1.0 Session 17
5
2
3 4 6
3
36
v1 v2 v3 v4 v5 v6
0 ∞ 3 ∞ ∞5
v1 v4
v1 → v2 = 5
v1 → v4 → v2 = 3 + ∞ = ∞
∞ > 5
Therefore, no change is made.
Solving the Shortest Path Problem (Contd.)
DISTANCE
FINAL
Data Structures and Algorithms
Ver. 1.0 Session 17
5
5
2
3 4 6
3
36
v1 v2 v3 v4 v5 v6
0 ∞ 3 ∞ ∞5
v1 v4
Therefore, the entry corresponding to v3 in the DISTANCE array is changed to 5.
v1 → v3 = ∞
v1 → v4 → v3 = 3 + 2 = 5
5 < ∞
Solving the Shortest Path Problem (Contd.)
DISTANCE
FINAL
Data Structures and Algorithms
Ver. 1.0 Session 17
∞9
5
2
3 4 6
3
36
v1 v2 v3 v4 v5 v6
0 3 ∞5
v1 v4
5
v1 → v5 = ∞
v1 → v4 → v5 = 3 + 6 = 9
9 < ∞
Therefore, the entry corresponding to v5 in the DISTANCE array is changed to 9.
Solving the Shortest Path Problem (Contd.)
DISTANCE
FINAL
Data Structures and Algorithms
Ver. 1.0 Session 17
5
2
3 4 6
3
36
v1 v2 v3 v4 v5 v6
0 3 ∞5
v1 v4
5 9
Both the values are equal.
Therefore, no change is made.
v1 → v6 = ∞
v1 → v4 → v6 = 3 + ∞ = ∞
PASS 1 complete
Solving the Shortest Path Problem (Contd.)
DISTANCE
FINAL
Data Structures and Algorithms
Ver. 1.0 Session 17
5
2
3 4 6
3
36
v1 v2 v3 v4 v5 v6
0 3 ∞5
v1 v4
5 9
From the DISTANCE array, select the vertex with the shortest distance from v1, such that the selected vertex is not in the FINAL array.
v2 and v3 have the shortest and the same distance from v1.
Let us select v2 and add it to the FINAL array.
v2
Solving the Shortest Path Problem (Contd.)
DISTANCE
FINAL
Data Structures and Algorithms
Ver. 1.0 Session 17
5
2
3 4 6
3
36
v1 v2 v3 v4 v5 v6
0 3 ∞5
v1 v4
5 9
v2
v1 → v3 = 5
v1 → v2 → v3 = 5 + 4 = 9
9 > 5
Therefore, no change is made.
Solving the Shortest Path Problem (Contd.)
DISTANCE
FINAL
Data Structures and Algorithms
Ver. 1.0 Session 17
5
2
3 4 6
3
36
v1 v2 v3 v4 v5 v6
0 3 ∞5
v1 v4
5 9
v2
v1 → v5 = 9
v1 → v2 → v5 = 5 + ∞ = ∞
∞ > 9
Therefore, no change is made.
Solving the Shortest Path Problem (Contd.)
DISTANCE
FINAL
Data Structures and Algorithms
Ver. 1.0 Session 17
∞11
5
2
3 4 6
3
36
v1 v2 v3 v4 v5 v6
0 35
v1 v4
5 9
v2
v1 → v6 = ∞
v1 → v2 → v6 = 5 + 6 = 11
11 < ∞
Therefore, the entry corresponding to v6 in the DISTANCE array is changed to 11.
Pass 2 complete
Solving the Shortest Path Problem (Contd.)
DISTANCE
FINAL
Data Structures and Algorithms
Ver. 1.0 Session 17
5
2
3 4 6
3
36
v1 v2 v3 v4 v5 v6
0 35
v1 v4
5 9
v2
11
v3
From the DISTANCE array, select the vertex with the shortest distance from v1, such that the selected vertex is not in the FINAL array.
Let us select v3 and add it to the FINAL array.
Solving the Shortest Path Problem (Contd.)
DISTANCE
FINAL
Data Structures and Algorithms
Ver. 1.0 Session 17
5
2
3 4 6
3
36
v1 v2 v3 v4 v5 v6
0 35
v1 v4
5 9
v2
11
v3
8
v1 → v5 = 9
v1 → v3 → v5 = 5 + 3 = 8
8 < 9
Therefore, the entry corresponding to v5 in the DISTANCE array is changed to 8.
Solving the Shortest Path Problem (Contd.)
DISTANCE
FINAL
Data Structures and Algorithms
Ver. 1.0 Session 17
8
5
2
3 4 6
3
36
v1 v2 v3 v4 v5 v6
0 35
v1 v4
5
v2 v3
8
v1 → v6 = 11
v1 → v3 → v6 = 5 + 3 = 8
8 < 11
Therefore, the entry corresponding to v6 in the DISTANCE array is changed to 8.
Pass 3 complete
Solving the Shortest Path Problem (Contd.)
DISTANCE
FINAL
11
Data Structures and Algorithms
Ver. 1.0 Session 17
5
2
3 4 6
3
36
v1 v2 v3 v4 v5 v6
0 35
v1 v4
5
v2 v3
8 8
v5
From the DISTANCE array, select the vertex with the shortest distance from v1, such that the selected vertex is not in the FINAL array.
Let us select v5 and add it to the FINAL array.
Solving the Shortest Path Problem (Contd.)
DISTANCE
FINAL
Data Structures and Algorithms
Ver. 1.0 Session 17
5
2
3 4 6
3
36
v1 v2 v3 v4 v5 v6
0 35
v1 v4
5
v2 v3
8 8
v5
v1 → v6 = 8
v1 → v5 → v6 = 8 + ∞ = ∞
∞ > 8
Therefore, no change is made.
Pass 4 complete
Solving the Shortest Path Problem (Contd.)
DISTANCE
FINAL
Data Structures and Algorithms
Ver. 1.0 Session 17
5
2
3 4 6
3
36
v1 v2 v3 v4 v5 v6
0 35
v1 v4
5
v2 v3
8 8
v5
Now add the only remaining vertex, v6 to the FINAL array.
v6
All vertices have been added to the FINAL array.
This means that the DISTANCE array now contains the shortest distances from vertex v1 to all other vertices.
Solving the Shortest Path Problem (Contd.)
DISTANCE
FINAL
Data Structures and Algorithms
Ver. 1.0 Session 17
Problem Statement:In the previous activity, you created a program to represent a set of cities and the distances between them in the form of a graph. Extend the program to include the functionality for finding the shortest path from a given city to all the other cities.
Activity: Solving the Shortest Path Problem
Data Structures and Algorithms
Ver. 1.0 Session 17
In this session, you learned that:The two most commonly used ways of representing a graph are as follows:
Adjacency matrix
Adjacency list
Traversing a graph means visiting all the vertices in the graph.
In a graph, there is no special vertex designated as the starting vertex. Therefore, traversal of the graph may start from any vertex.
You can traverse a graph with the help of the following two methods:
DFS
BFS
Summary
Data Structures and Algorithms
Ver. 1.0 Session 17
Graph theory has been instrumental in analyzing and solving problems in areas as diverse as computer network design, urban planning, finding shortest paths and molecular biology.
Summary (Contd.)