An algorithm for finding a graph's spanning tree of minimum length. It sorts the edges
of a graph in order of increasing cost and then repeatedly adds edges that bridge
separate components until the graph is fully connected (Pemmaraju and Skiena 2003,
p. 336). By negating the weights for each edge, the algorithm can also be used
to find a maximum spanning tree.