SlideShare une entreprise Scribd logo
1  sur  22
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?????

Contenu connexe

Tendances

Prims Algorithm
Prims AlgorithmPrims Algorithm
Prims Algorithm
Sriram Raj
 

Tendances (20)

minimum spanning tree
minimum spanning tree minimum spanning tree
minimum spanning tree
 
Graphs bfs dfs
Graphs bfs dfsGraphs bfs dfs
Graphs bfs dfs
 
Bellman ford algorithm
Bellman ford algorithmBellman ford algorithm
Bellman ford algorithm
 
Spanning trees
Spanning treesSpanning trees
Spanning trees
 
Minimum spanning tree
Minimum spanning treeMinimum spanning tree
Minimum spanning tree
 
Prims Algorithm
Prims AlgorithmPrims Algorithm
Prims Algorithm
 
Kruskal & Prim's Algorithm
Kruskal & Prim's AlgorithmKruskal & Prim's Algorithm
Kruskal & Prim's Algorithm
 
Kruskal’s algorithm
Kruskal’s algorithmKruskal’s algorithm
Kruskal’s algorithm
 
Optimal binary search tree dynamic programming
Optimal binary search tree   dynamic programmingOptimal binary search tree   dynamic programming
Optimal binary search tree dynamic programming
 
Shortest path algorithm
Shortest path algorithmShortest path algorithm
Shortest path algorithm
 
PRIM’S AND KRUSKAL’S ALGORITHM
PRIM’S AND KRUSKAL’S  ALGORITHMPRIM’S AND KRUSKAL’S  ALGORITHM
PRIM’S AND KRUSKAL’S ALGORITHM
 
Bfs and Dfs
Bfs and DfsBfs and Dfs
Bfs and Dfs
 
The Floyd–Warshall algorithm
The Floyd–Warshall algorithmThe Floyd–Warshall algorithm
The Floyd–Warshall algorithm
 
Bellman ford algorithm
Bellman ford algorithmBellman ford algorithm
Bellman ford algorithm
 
Directed Acyclic Graph
Directed Acyclic Graph Directed Acyclic Graph
Directed Acyclic Graph
 
Dijkstra's Algorithm
Dijkstra's Algorithm Dijkstra's Algorithm
Dijkstra's Algorithm
 
Lecture optimal binary search tree
Lecture optimal binary search tree Lecture optimal binary search tree
Lecture optimal binary search tree
 
Kruskal’s Algorithm
Kruskal’s AlgorithmKruskal’s Algorithm
Kruskal’s Algorithm
 
SINGLE SOURCE SHORTEST PATH.ppt
SINGLE SOURCE SHORTEST PATH.pptSINGLE SOURCE SHORTEST PATH.ppt
SINGLE SOURCE SHORTEST PATH.ppt
 
Dijkstra's algorithm presentation
Dijkstra's algorithm presentationDijkstra's algorithm presentation
Dijkstra's algorithm presentation
 

Similaire à Prim's Algorithm on minimum spanning tree

Social network-analysis-in-python
Social network-analysis-in-pythonSocial network-analysis-in-python
Social network-analysis-in-python
Joe OntheRocks
 
lecture 17
lecture 17lecture 17
lecture 17
sajinsc
 
graphin-c1.pnggraphin-c1.txt1 22 3 83 44 5.docx
graphin-c1.pnggraphin-c1.txt1 22 3 83 44 5.docxgraphin-c1.pnggraphin-c1.txt1 22 3 83 44 5.docx
graphin-c1.pnggraphin-c1.txt1 22 3 83 44 5.docx
whittemorelucilla
 

Similaire à Prim's Algorithm on minimum spanning tree (20)

Topological Sort
Topological SortTopological Sort
Topological Sort
 
Ppt 1
Ppt 1Ppt 1
Ppt 1
 
Unit ii-ppt
Unit ii-pptUnit ii-ppt
Unit ii-ppt
 
Analysis of Pathfinding Algorithms
Analysis of Pathfinding AlgorithmsAnalysis of Pathfinding Algorithms
Analysis of Pathfinding Algorithms
 
Graph Analytics - From the Whiteboard to Your Toolbox - Sam Lerma
Graph Analytics - From the Whiteboard to Your Toolbox - Sam LermaGraph Analytics - From the Whiteboard to Your Toolbox - Sam Lerma
Graph Analytics - From the Whiteboard to Your Toolbox - Sam Lerma
 
Unit ix graph
Unit   ix    graph Unit   ix    graph
Unit ix graph
 
Unit 9 graph
Unit   9 graphUnit   9 graph
Unit 9 graph
 
Social network-analysis-in-python
Social network-analysis-in-pythonSocial network-analysis-in-python
Social network-analysis-in-python
 
Link Prediction in the Real World
Link Prediction in the Real WorldLink Prediction in the Real World
Link Prediction in the Real World
 
04 greedyalgorithmsii 2x2
04 greedyalgorithmsii 2x204 greedyalgorithmsii 2x2
04 greedyalgorithmsii 2x2
 
Graph Traversal Algorithms - Depth First Search Traversal
Graph Traversal Algorithms - Depth First Search TraversalGraph Traversal Algorithms - Depth First Search Traversal
Graph Traversal Algorithms - Depth First Search Traversal
 
Data structure and algorithm
Data structure and algorithmData structure and algorithm
Data structure and algorithm
 
lecture 17
lecture 17lecture 17
lecture 17
 
8150.graphs
8150.graphs8150.graphs
8150.graphs
 
hospital management
hospital managementhospital management
hospital management
 
Design and Analysis of Algorithms Lecture Notes
Design and Analysis of Algorithms Lecture NotesDesign and Analysis of Algorithms Lecture Notes
Design and Analysis of Algorithms Lecture Notes
 
graphin-c1.pnggraphin-c1.txt1 22 3 83 44 5.docx
graphin-c1.pnggraphin-c1.txt1 22 3 83 44 5.docxgraphin-c1.pnggraphin-c1.txt1 22 3 83 44 5.docx
graphin-c1.pnggraphin-c1.txt1 22 3 83 44 5.docx
 
Dijkstra
DijkstraDijkstra
Dijkstra
 
d
dd
d
 
FADML 06 PPC Graphs and Traversals.pdf
FADML 06 PPC Graphs and Traversals.pdfFADML 06 PPC Graphs and Traversals.pdf
FADML 06 PPC Graphs and Traversals.pdf
 

Dernier

Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in DelhiRussian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
kauryashika82
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
heathfieldcps1
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
QucHHunhnh
 
Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please Practise
AnaAcapella
 

Dernier (20)

Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17  How to Extend Models Using Mixin ClassesMixin Classes in Odoo 17  How to Extend Models Using Mixin Classes
Mixin Classes in Odoo 17 How to Extend Models Using Mixin Classes
 
Key note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdfKey note speaker Neum_Admir Softic_ENG.pdf
Key note speaker Neum_Admir Softic_ENG.pdf
 
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in DelhiRussian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
Russian Escort Service in Delhi 11k Hotel Foreigner Russian Call Girls in Delhi
 
psychiatric nursing HISTORY COLLECTION .docx
psychiatric  nursing HISTORY  COLLECTION  .docxpsychiatric  nursing HISTORY  COLLECTION  .docx
psychiatric nursing HISTORY COLLECTION .docx
 
PROCESS RECORDING FORMAT.docx
PROCESS      RECORDING        FORMAT.docxPROCESS      RECORDING        FORMAT.docx
PROCESS RECORDING FORMAT.docx
 
Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdf
 
Asian American Pacific Islander Month DDSD 2024.pptx
Asian American Pacific Islander Month DDSD 2024.pptxAsian American Pacific Islander Month DDSD 2024.pptx
Asian American Pacific Islander Month DDSD 2024.pptx
 
ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.
 
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
 
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
 
Python Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxPython Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docx
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
 
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
Explore beautiful and ugly buildings. Mathematics helps us create beautiful d...
 
Third Battle of Panipat detailed notes.pptx
Third Battle of Panipat detailed notes.pptxThird Battle of Panipat detailed notes.pptx
Third Battle of Panipat detailed notes.pptx
 
Understanding Accommodations and Modifications
Understanding  Accommodations and ModificationsUnderstanding  Accommodations and Modifications
Understanding Accommodations and Modifications
 
Spatium Project Simulation student brief
Spatium Project Simulation student briefSpatium Project Simulation student brief
Spatium Project Simulation student brief
 
Spellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please PractiseSpellings Wk 3 English CAPS CARES Please Practise
Spellings Wk 3 English CAPS CARES Please Practise
 
ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701ComPTIA Overview | Comptia Security+ Book SY0-701
ComPTIA Overview | Comptia Security+ Book SY0-701
 

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?????