8.2. Prim's Algorithm
This section discusses Prim's Algorithm that finds a minimum spanning tree in an undirected graph.
public class MSTPrim implements MST {
@Override
public SpanningTree getMinimumSpanningTree(Graph graph) {
PriorityQueue<Edge> queue = new PriorityQueue<>();
SpanningTree tree = new SpanningTree();
Set<Integer> visited = new HashSet<>();
Edge edge;
add(queue, visited, graph, 0);
while (!queue.isEmpty()) {
edge = queue.poll();
if (!visited.contains(edge.getSource())) {
tree.addEdge(edge);
if (tree.size() + 1 == graph.size()) break;
add(queue, visited, graph, edge.getSource());
}
}
return tree;
}
}Last updated
Was this helpful?