CHAPTER 25 Weighted Graphs and Applications Objectives ⢠To ...
CHAPTER 25 Weighted Graphs and Applications Objectives ⢠To ...
CHAPTER 25 Weighted Graphs and Applications Objectives ⢠To ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
3<br />
4 #include "Tree.h" // Defined in Listing 24.4<br />
5<br />
6 class MST : public Tree<br />
7 {<br />
8 public:<br />
9 // Create an empty MST<br />
10 MST()<br />
11 {<br />
12 }<br />
13<br />
14 // Construct a tree with root, parent, searchOrders,<br />
15 // <strong>and</strong> total weight<br />
16 MST(int root, vector& parent, vector& searchOrders,<br />
17 double totalWeight) : Tree(root, parent, searchOrders)<br />
18 {<br />
19 this->totalWeight = totalWeight;<br />
20 }<br />
21<br />
22 // Return the total weight of the tree<br />
23 double get<strong>To</strong>talWeight()<br />
24 {<br />
<strong>25</strong> return totalWeight;<br />
26 }<br />
27<br />
28 private:<br />
29 double totalWeight;<br />
30 };<br />
31 #endif<br />
The getMinimumSpanningTree function was implemented in lines 127–185 in Listing <strong>25</strong>.2. The<br />
getMinimumSpanningTree() function picks vertex 0 as the starting vertex <strong>and</strong> invokes the<br />
getMinimumSpanningTree(0) function to return the MST starting from 0 (line 130).<br />
The getMinimumSpanningTree(startingVertex) function sets cost[startingVertex] to 0 (line<br />
150) <strong>and</strong> cost[v] to infinity for all other vertices (lines 146-149). It then repeatedly finds the vertex with the<br />
smallest cost in V-T (lines 156-166) <strong>and</strong> adds it to T (lines 168. After a vertex u is added to T, the cost <strong>and</strong><br />
parent for each vertex v in V-T adjacent to u may be adjusted (lines 171-182).<br />
After a new vertex is added to T (line 193), totalWeight is updated (line 169). Once all vertices are<br />
added to T, an instance of MST is created (line 184).<br />
22