Today we will focus on proof. They are not trivial. They are constructive, might be useful in future studies.
Spanning Tree
Spanning tree of a graph is a tree that contains all the vertices of the graph, and edges of the trees are a subset of edges on the graph, spanning tree is a subgraph of the original graph.
DFS / BFS trees are spanning trees
minimum spanning tree on undirected weighted graph is the spanning tree with minimum sum of weight on edges
Minimum Spanning tree algorithm
Given a weighted undirected graph G, find a spanning tree of graph G such that the sum of weights is minimized
Prim’s Algorithm
Greedy algorithm
Initialize a tree with a single vertex, chosen arbitrarily from the graph
Grow the tree by one edge: of the eges that connect the tree to vertices not yet in the tree, find the minimum-weight edge, and transfer it to the tree.
Repeat last step, until all vertices are in the tree.
https://www.geeksforgeeks.org/prims-minimum-spanning-tree-mst-greedy-algo-5/
The solution is not unique. Ties are broken arbitrarily.
Prim’s algorithm 1
Let S = {1}
(*) choose a minimum weighted edge (a,b) from V-S to S, add a to S
repeat (*) until S = V
cost of (*) step added together, note that there are |E| many edges in total, if we use HEAP + linked list, we will add and remove at most 2|E| edges from heap which costs |E| log |V|
Prim’s algorithm 2
Let S = { 1 }
(*) Choose a minimum weighted edge (a, b) from V – S to S, add a to S
Implement by adjacency matrix
repeat (*) until S = V
O(|V|^2)
Claim: each step k of (*)[^1]( Choose a minimum weighted edge (a, b) from V – S to S, add a to S ) , let U_k be the set of edges selected, then there is a MST T T T such taht for all k, U k ⊂ T U_k \subset T