Branch and Bound
Start with an initial tree T with cost c(T).
Systematically search through all forests by recursively (branching) adding new edges to the current forest.
Discontinue a search if the forest cannot be contained in a spanning tree of smaller cost. (This is the bounding step).
This is better than exhaustive search, but it is still only valuable on very small problems.