Data Structures and Algorithms Ver. 1.0 Session 17 Objectives In this session, you will learn to:...

56
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

Transcript of Data Structures and Algorithms Ver. 1.0 Session 17 Objectives In this session, you will learn to:...

Page 1: 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

Objectives

In this session, you will learn to:Implement a graph

Apply graphs to solve programming problems

Page 2: 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

Page 3: 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

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

Page 4: 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

Consider the following

graph:

Adjacency List

Adjacency List Representation

Page 5: 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

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

Page 6: 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

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.

Page 7: 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

DFS (Contd.)

v1

Push the starting vertex, v1 into the stack

Page 8: 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

DFS (Contd.)

v1

Pop a vertex, v1 from the stack

Visit v1

Push all unvisited vertices adjacent to v1 into the stack

v1

Visited:

Page 9: 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

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

Page 10: 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

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

Page 11: 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

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

Page 12: 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

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

Page 13: 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

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

Page 14: 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

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

Page 15: 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

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

Page 16: 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

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

Page 17: 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

DFS (Contd.)

Visited:

The stack is now empty

Therefore, traversal is complete

v1 v2 v6 v3 v5 v4

Page 18: 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

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.

Page 19: 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

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)

Page 20: 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

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

Page 21: 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

BFS (Contd.)

Visit v1

Insert v1 into the queue

v1

v1

Page 22: 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

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:

Page 23: 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

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

Page 24: 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

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

Page 25: 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

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

Page 26: 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

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

Page 27: 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

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

Page 28: 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

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

Page 29: 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

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

Page 30: 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

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

Page 31: 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

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

Page 32: 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

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

Page 33: 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

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.

Page 34: 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

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)

Page 35: 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

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

Page 36: 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

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

Page 37: 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

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.

Page 38: 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

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.

Page 39: 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

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

Page 40: 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

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

Page 41: 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

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

Page 42: 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

∞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

Page 43: 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

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

Page 44: 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

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

Page 45: 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

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

Page 46: 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

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

Page 47: 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

∞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

Page 48: 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

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

Page 49: 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

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

Page 50: 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

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

Page 51: 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

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

Page 52: 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

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

Page 53: 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

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

Page 54: 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

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

Page 55: 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

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

Page 56: 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

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.)