The document describes three algorithms for finding minimum cost spanning trees in graphs: Prim's algorithm, Kruskal's algorithm, and an optimal randomized algorithm. Prim's algorithm finds the minimum spanning tree by building the tree edge by edge in a greedy manner. Kruskal's algorithm finds the minimum spanning tree by adding edges in order of increasing weight, skipping edges that would create cycles. The randomized algorithm samples edges from the graph randomly and finds minimum spanning trees on the induced subgraph to eliminate edges that cannot be in the optimal solution.