Solution

ID: past-exam-of-the-year-1-of-the-computer-science-course-of-the-university-of-oxford/2017/functional-programming-design-and-analysis-of-algorithms/7/e/solution

The procedure is Borůvka's algorithm. In the first round, visiting singleton components in the order , the chosen edges are respectively
The set of new edges is : repeated selections of and insert no extra copy. The resulting two components are and . Each chooses in round two, producing the weight-36 tree from part (d). The within-round order of distinct insertions can therefore be , followed by in the next round; it need not be the globally sorted Kruskal order.
The required minimum spanning tree cut property says: for every nonempty proper subset , the unique minimum-weight edge crossing the cut belongs to every minimum spanning tree. Indeed, add this edge to a tree that lacks it. The resulting cycle contains another edge crossing the cut, which is strictly heavier; replacing that edge decreases the total weight.
For the general proof, assume all edge weights are distinct. Fix the components at the beginning of a round, as the given procedure does. Each selected edge is the unique lightest edge across one of their cuts, so belongs to every minimum spanning tree. Inductively, the entire selected set is contained in such a tree and is therefore acyclic. While there is more than one component, connectedness supplies an outgoing edge for each, so at least two components merge. The finite process terminates connected. A connected subgraph of a spanning tree must be that whole tree, proving that the returned set is a minimum spanning tree.

New to topics? Read the docs here!