SlideShare a Scribd company logo
2
Most read
3
Most read
9
Most read
Prim's Algorithm
    on minimum spanning tree



Submitted by:
Abdullah Al Mamun (Oronno)
Department of Computer Science & Engineering,
University of Dhaka.
2nd Year, Session: 2006-07
What is Minimum Spanning Tree?
• Given a connected, undirected graph, a
  spanning tree of that graph is a subgraph
  which is a tree and connects all the
  vertices together.
• A single graph can have many different
  spanning trees.
• A minimum spanning tree is then
  a spanning tree with weight less
  than or equal to the weight of
  every other spanning tree.
graph G




Spanning Tree from Graph G
2            2

    4    3             4     5


1            1          1
Algorithm for finding
  Minimum Spanning Tree


• The Prim's Algorithm
• Kruskal's Algorithm
• Baruvka's Algorithm
About Prim’s Algorithm
The algorithm was discovered in 1930 by
mathematician Vojtech Jarnik and later independently
by computer scientist Robert C. Prim in 1957.
The algorithm continuously increases the size of a
tree starting with a single vertex until it spans all the
vertices.
 Prim's algorithm is faster on dense
graphs.
Prim's algorithm runs in O(n*n)
But the running time can be reduce
using a simple binary heap data structure
and an adjacency list representation
• Prim's algorithm for finding a minimal
  spanning tree parallels closely the depth-
  and breadth-first traversal algorithms. Just
  as these algorithms maintained a closed
  list of nodes and the paths leading to
  them, Prim's algorithm maintains a closed
  list of nodes and the edges that link them
  into the minimal spanning tree.
• Whereas the depth-first algorithm used a
  stack as its data structure to maintain the
  list of open nodes and the breadth-first
  traversal used a queue, Prim's uses a
  priority queue.
Let’s see an example to
       understand
   Prim’s Algorithm.
Lets….
 At first we declare an array named: closed list.

 And consider the open list as a priority queue
  with min-heap.
 Adding a node and its edge to the closed list
  indicates that we have found an edge that links
  the node into the minimal spanning
  tree. As a node is added to the
  closed list, its successors
  (immediately adjacent nodes)
  are examined and added to a
  priority queue of open nodes.
Total Cost: 0




Open List: d
Close List:
Total Cost: 0




Open List: a, f, e, b
Close List: d
Total Cost: 5




Open List: f, e, b
Close List: d, a
Total Cost: 11




Open List: b, e, g
Close List: d, a, f
Total Cost: 18




Open List: e, g, c
Close List: d, a, f, b
Total Cost: 25




Open List: c, g
Close List: d, a, f, b, e
Total Cost: 30




Open List: g
Close List: d, a, f, b, e, c
Total Cost: 39




Open List:
Close List: d, a, f, b, e, c
PSEUDO-CODE FOR PRIM'S
     ALGORITHM
   Designate one node as the start node
   Add the start node to the priority queue of open nodes.
   WHILE (there are still nodes to be added to the closed list)
    {
      Remove a node from priority queue of open nodes, designate it as current
      node.
      IF (the current node is not already in the closed list)
         {
         IF the node is not the first node removed from the priority queue, add the
        minimal edge connecting it with a closed node to the minimal spanning
        tree.
         Add the current node to the closed list.
         FOR each successor of current node
              IF (the successor is not already in the closed list OR the successor is
             now connected to a closed node by an edge of lesser weight than
             before)
                    Add that successor to the priority queue of open nodes;
         }
    }
Sample C++ Implementation
•   void prim(graph &g, vert s) {                              •   int minvertex(graph &g, int *d) {
                                                                •     int v;
•       int dist[g.num_nodes];
•       int vert[g.num_nodes];                                  •       for (i = 0; i < g.num_nodes; i++)
                                                                •         if (g.is_marked(i, UNVISITED)) {
•       for (int i = 0; i < g.num_nodes; i++) {                 •           v = i; break;
•         dist[i] = INFINITY;                                   •         }

•       dist[s.number()] = 0;                                   •    for (i = 0; i < g.num_nodes; i++)
                                                                •      if ((g.is_marked(i, UNVISITED)) && (dist[i] <
                                                                    dist[v])) v = i;
•       for (i = 0; i < g.num_nodes; i++) {
•         vert v = minvertex(g, dist);
                                                                •       return (v);
                                                                •   }
•           g.mark(v, VISITED);
•           if (v != s) add_edge_to_MST(vert[v], v);
•           if (dist[v] == INFINITY) return;

•           for (edge w = g.first_edge; g.is_edge(w), w = g.next_edge(w)) {
•             if (dist[g.first_vert(w)] = g.weight(w)) {
•                dist[g.second_vert(w)] = g.weight(w);
•                   vert[g.second_vert(w)] = v;
•             }
•           }
•       }
•   }
Complexity Analysis
 Minimum edge weight data     Time complexity (total)
        structure

adjacency matrix, searching   O(V*V)


binary heap and adjacency     O((V + E) log(V)) = O(E
list                          log(V))

Fibonacci heap and            O(E + V log(V))
adjacency list
Application
 One practical application of a MST would be in the design of a
  network. For instance, a group of individuals, who are
  separated by varying distances, wish to be connected together
  in a telephone network. Because the cost between two terminal
  is different, if we want to reduce our expenses, Prim's
  Algorithm is a way to solve it
 Connect all computers in a computer science building using
  least amount of cable.
 A less obvious application is that the minimum spanning tree
  can be used to approximately solve the traveling salesman
  problem. A convenient formal way of defining this problem is
  to find the shortest path that visits each point at least once.
 Another useful application of MST would be finding airline
  routes. The vertices of the graph would represent cities, and
  the edges would represent routes between the cities.
  Obviously, the further one has to travel, the more it will cost,
  so MST can be applied to optimize airline routes by finding
  the least costly paths with no cycles.
Reference
Book:
  Introduction to Algorithm
  By: Thomas H. Cormen
Website:
• mathworld.wolfram.com
• www-b2.is.tokushima-u.ac.jp/suuri/Prim.shtml
• www.cprogramming.com/tutorial/
  computersciencetheory/mst.html
• en.wikipedia.org/wiki/Prim's_algorithm
• www.unf.edu/~wkloster/foundations/
  PrimApplet/PrimApplet.htm
Thank you for being with me…


     Any question?????

More Related Content

PPT
Prim Algorithm and kruskal algorithm
PPTX
Prims and kruskal algorithms
PPTX
Kruskal & Prim's Algorithm
PPT
SINGLE-SOURCE SHORTEST PATHS
PDF
Minimum spanning tree
PPTX
Spanning trees & applications
PPTX
Kruskal's algorithm
PDF
Shortest Path in Graph
Prim Algorithm and kruskal algorithm
Prims and kruskal algorithms
Kruskal & Prim's Algorithm
SINGLE-SOURCE SHORTEST PATHS
Minimum spanning tree
Spanning trees & applications
Kruskal's algorithm
Shortest Path in Graph

What's hot (20)

PPT
Spanning trees
PPTX
Prim's algorithm
PPTX
Data structure - Graph
PDF
Prims Algorithm
PPTX
Astar algorithm
PPTX
Topological Sorting
PPTX
Dijkstra’S Algorithm
PPTX
Bfs and Dfs
PPT
Lec 17 heap data structure
PPTX
PRIM'S ALGORITHM
PPTX
Graph representation
PPTX
All pair shortest path
PPTX
A presentation on prim's and kruskal's algorithm
PPTX
DFS & BFS Graph
PPTX
Dijkstra's algorithm presentation
PDF
List,tuple,dictionary
PPTX
Bellman ford Algorithm
PPT
Breadth first search and depth first search
PPTX
Ai 8 puzzle problem
PPTX
Kruskal Algorithm
Spanning trees
Prim's algorithm
Data structure - Graph
Prims Algorithm
Astar algorithm
Topological Sorting
Dijkstra’S Algorithm
Bfs and Dfs
Lec 17 heap data structure
PRIM'S ALGORITHM
Graph representation
All pair shortest path
A presentation on prim's and kruskal's algorithm
DFS & BFS Graph
Dijkstra's algorithm presentation
List,tuple,dictionary
Bellman ford Algorithm
Breadth first search and depth first search
Ai 8 puzzle problem
Kruskal Algorithm
Ad

Similar to Prim's Algorithm on minimum spanning tree (20)

PDF
Topological Sort
PDF
Skiena algorithm 2007 lecture13 minimum spanning trees
PPTX
ExploringPrimsAlgorithmforMinimumSpanningTreesinC.pptx
PPTX
Lecture 16 data structures and algorithms
PPT
Minimum Spanning Tree
PPTX
Graph Algorithms
PPTX
GRAPH APPLICATION - MINIMUM SPANNING TREE (MST)
PDF
Algorithm chapter 9
PPT
Unit27_MinimumSpanningTree.ppt data structure programming
PDF
Algorithms explained
PPT
2.4 mst prim’s algorithm
PPTX
Unit 4 dsuc
PPT
Unit 5 graphs minimum spanning trees
PPTX
Graph Representation, DFS and BFS Presentation.pptx
PDF
Chap10 slides
PPTX
UNIT II - Graph Algorithms techniques.pptx
PPT
Data Structures-Non Linear DataStructures-Graphs
PDF
Day 5 application of graph ,biconnectivity fdp on ds
Topological Sort
Skiena algorithm 2007 lecture13 minimum spanning trees
ExploringPrimsAlgorithmforMinimumSpanningTreesinC.pptx
Lecture 16 data structures and algorithms
Minimum Spanning Tree
Graph Algorithms
GRAPH APPLICATION - MINIMUM SPANNING TREE (MST)
Algorithm chapter 9
Unit27_MinimumSpanningTree.ppt data structure programming
Algorithms explained
2.4 mst prim’s algorithm
Unit 4 dsuc
Unit 5 graphs minimum spanning trees
Graph Representation, DFS and BFS Presentation.pptx
Chap10 slides
UNIT II - Graph Algorithms techniques.pptx
Data Structures-Non Linear DataStructures-Graphs
Day 5 application of graph ,biconnectivity fdp on ds
Ad

Recently uploaded (20)

PPTX
Cell Types and Its function , kingdom of life
PDF
Complications of Minimal Access Surgery at WLH
PDF
Abdominal Access Techniques with Prof. Dr. R K Mishra
PPTX
Introduction to Child Health Nursing – Unit I | Child Health Nursing I | B.Sc...
PDF
FourierSeries-QuestionsWithAnswers(Part-A).pdf
PDF
TR - Agricultural Crops Production NC III.pdf
PDF
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
PPTX
Week 4 Term 3 Study Techniques revisited.pptx
PDF
2.FourierTransform-ShortQuestionswithAnswers.pdf
PDF
01-Introduction-to-Information-Management.pdf
PPTX
PPH.pptx obstetrics and gynecology in nursing
PPTX
Final Presentation General Medicine 03-08-2024.pptx
PPTX
Renaissance Architecture: A Journey from Faith to Humanism
PDF
Pre independence Education in Inndia.pdf
PPTX
The Healthy Child – Unit II | Child Health Nursing I | B.Sc Nursing 5th Semester
PDF
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
PPTX
Pharmacology of Heart Failure /Pharmacotherapy of CHF
PPTX
Cell Structure & Organelles in detailed.
PDF
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
PPTX
Pharma ospi slides which help in ospi learning
Cell Types and Its function , kingdom of life
Complications of Minimal Access Surgery at WLH
Abdominal Access Techniques with Prof. Dr. R K Mishra
Introduction to Child Health Nursing – Unit I | Child Health Nursing I | B.Sc...
FourierSeries-QuestionsWithAnswers(Part-A).pdf
TR - Agricultural Crops Production NC III.pdf
Physiotherapy_for_Respiratory_and_Cardiac_Problems WEBBER.pdf
Week 4 Term 3 Study Techniques revisited.pptx
2.FourierTransform-ShortQuestionswithAnswers.pdf
01-Introduction-to-Information-Management.pdf
PPH.pptx obstetrics and gynecology in nursing
Final Presentation General Medicine 03-08-2024.pptx
Renaissance Architecture: A Journey from Faith to Humanism
Pre independence Education in Inndia.pdf
The Healthy Child – Unit II | Child Health Nursing I | B.Sc Nursing 5th Semester
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
Pharmacology of Heart Failure /Pharmacotherapy of CHF
Cell Structure & Organelles in detailed.
BÀI TẬP BỔ TRỢ 4 KỸ NĂNG TIẾNG ANH 9 GLOBAL SUCCESS - CẢ NĂM - BÁM SÁT FORM Đ...
Pharma ospi slides which help in ospi learning

Prim's Algorithm on minimum spanning tree

  • 1. Prim's Algorithm on minimum spanning tree Submitted by: Abdullah Al Mamun (Oronno) Department of Computer Science & Engineering, University of Dhaka. 2nd Year, Session: 2006-07
  • 2. What is Minimum Spanning Tree? • Given a connected, undirected graph, a spanning tree of that graph is a subgraph which is a tree and connects all the vertices together. • A single graph can have many different spanning trees. • A minimum spanning tree is then a spanning tree with weight less than or equal to the weight of every other spanning tree.
  • 3. graph G Spanning Tree from Graph G 2 2 4 3 4 5 1 1 1
  • 4. Algorithm for finding Minimum Spanning Tree • The Prim's Algorithm • Kruskal's Algorithm • Baruvka's Algorithm
  • 5. About Prim’s Algorithm The algorithm was discovered in 1930 by mathematician Vojtech Jarnik and later independently by computer scientist Robert C. Prim in 1957. The algorithm continuously increases the size of a tree starting with a single vertex until it spans all the vertices. Prim's algorithm is faster on dense graphs. Prim's algorithm runs in O(n*n) But the running time can be reduce using a simple binary heap data structure and an adjacency list representation
  • 6. • Prim's algorithm for finding a minimal spanning tree parallels closely the depth- and breadth-first traversal algorithms. Just as these algorithms maintained a closed list of nodes and the paths leading to them, Prim's algorithm maintains a closed list of nodes and the edges that link them into the minimal spanning tree. • Whereas the depth-first algorithm used a stack as its data structure to maintain the list of open nodes and the breadth-first traversal used a queue, Prim's uses a priority queue.
  • 7. Let’s see an example to understand Prim’s Algorithm.
  • 8. Lets….  At first we declare an array named: closed list.  And consider the open list as a priority queue with min-heap.  Adding a node and its edge to the closed list indicates that we have found an edge that links the node into the minimal spanning tree. As a node is added to the closed list, its successors (immediately adjacent nodes) are examined and added to a priority queue of open nodes.
  • 9. Total Cost: 0 Open List: d Close List:
  • 10. Total Cost: 0 Open List: a, f, e, b Close List: d
  • 11. Total Cost: 5 Open List: f, e, b Close List: d, a
  • 12. Total Cost: 11 Open List: b, e, g Close List: d, a, f
  • 13. Total Cost: 18 Open List: e, g, c Close List: d, a, f, b
  • 14. Total Cost: 25 Open List: c, g Close List: d, a, f, b, e
  • 15. Total Cost: 30 Open List: g Close List: d, a, f, b, e, c
  • 16. Total Cost: 39 Open List: Close List: d, a, f, b, e, c
  • 17. PSEUDO-CODE FOR PRIM'S ALGORITHM  Designate one node as the start node  Add the start node to the priority queue of open nodes.  WHILE (there are still nodes to be added to the closed list) { Remove a node from priority queue of open nodes, designate it as current node. IF (the current node is not already in the closed list) { IF the node is not the first node removed from the priority queue, add the minimal edge connecting it with a closed node to the minimal spanning tree. Add the current node to the closed list. FOR each successor of current node IF (the successor is not already in the closed list OR the successor is now connected to a closed node by an edge of lesser weight than before) Add that successor to the priority queue of open nodes; } }
  • 18. Sample C++ Implementation • void prim(graph &g, vert s) { • int minvertex(graph &g, int *d) { • int v; • int dist[g.num_nodes]; • int vert[g.num_nodes]; • for (i = 0; i < g.num_nodes; i++) • if (g.is_marked(i, UNVISITED)) { • for (int i = 0; i < g.num_nodes; i++) { • v = i; break; • dist[i] = INFINITY; • } • dist[s.number()] = 0; • for (i = 0; i < g.num_nodes; i++) • if ((g.is_marked(i, UNVISITED)) && (dist[i] < dist[v])) v = i; • for (i = 0; i < g.num_nodes; i++) { • vert v = minvertex(g, dist); • return (v); • } • g.mark(v, VISITED); • if (v != s) add_edge_to_MST(vert[v], v); • if (dist[v] == INFINITY) return; • for (edge w = g.first_edge; g.is_edge(w), w = g.next_edge(w)) { • if (dist[g.first_vert(w)] = g.weight(w)) { • dist[g.second_vert(w)] = g.weight(w); • vert[g.second_vert(w)] = v; • } • } • } • }
  • 19. Complexity Analysis Minimum edge weight data Time complexity (total) structure adjacency matrix, searching O(V*V) binary heap and adjacency O((V + E) log(V)) = O(E list log(V)) Fibonacci heap and O(E + V log(V)) adjacency list
  • 20. Application  One practical application of a MST would be in the design of a network. For instance, a group of individuals, who are separated by varying distances, wish to be connected together in a telephone network. Because the cost between two terminal is different, if we want to reduce our expenses, Prim's Algorithm is a way to solve it  Connect all computers in a computer science building using least amount of cable.  A less obvious application is that the minimum spanning tree can be used to approximately solve the traveling salesman problem. A convenient formal way of defining this problem is to find the shortest path that visits each point at least once.  Another useful application of MST would be finding airline routes. The vertices of the graph would represent cities, and the edges would represent routes between the cities. Obviously, the further one has to travel, the more it will cost, so MST can be applied to optimize airline routes by finding the least costly paths with no cycles.
  • 21. Reference Book: Introduction to Algorithm By: Thomas H. Cormen Website: • mathworld.wolfram.com • www-b2.is.tokushima-u.ac.jp/suuri/Prim.shtml • www.cprogramming.com/tutorial/ computersciencetheory/mst.html • en.wikipedia.org/wiki/Prim's_algorithm • www.unf.edu/~wkloster/foundations/ PrimApplet/PrimApplet.htm
  • 22. Thank you for being with me… Any question?????