GraphTheory
MinimalSpanningTree
find least-weight path through graph
KruskalsAlgorithm
find least-weight path using Kruskal's algorithm
PrimsAlgorithm
find least-weight path using Prim's algorithm
Calling Sequence
Parameters
Description
Examples
MinimalSpanningTree(G)
MinimalSpanningTree(G,w,animate)
KruskalsAlgorithm(G,w,animate)
PrimsAlgorithm(G,w,animate)
G
-
an undirected graph, weighted or unweighted
w
(optional) name
animate
(optional) literal animate indicating that an animation of the algorithm should be returned instead of the tree.
MinimalSpanningTree, KruskalsAlgorithm, and PrimsAlgorithm all return a spanning tree of the undirected graph G with minimum possible weight. If the graph G is unweighted, each edge is considered to have weight 1.
If the optional parameter w is given, it is assigned the weight of the minimal spanning tree.
If the literal animate, or animate=true is given, an animation of the application of the algorithm will be returned instead of the minimal spanning tree.
The routine PrimsAlgorithm uses Prim's algorithm for computing the minimal spanning tree and the routine KruskalsAlgorithm uses Kruskal's algorithm. The routine MinimalSpanningTree uses Kruskal's algorithm.
Setting infolevel[KruskalsAlgorithm] := 4; and infolevel[PrimsAlgorithm] := 4; results in some information being printed out, indicating the steps of the respective algorithms.
with⁡GraphTheory:
with⁡RandomGraphs:
A≔Matrix⁡0,1,0,4,0,0,1,0,1,0,4,0,0,1,0,3,0,1,4,0,3,0,1,0,0,4,0,1,0,4,0,0,1,0,4,0:
G≔Graph⁡A:
T≔MinimalSpanningTree⁡G:
Edges⁡T,weights
1,2,1,2,3,1,3,4,3,3,6,1,4,5,1
add⁡GetEdgeWeight⁡G,e,e=Edges⁡T
7
S≔SpanningTree⁡G:
add⁡GetEdgeWeight⁡G,e,e=Edges⁡S
11
PrimsAlgorithm⁡G,w,animate
Note: To animate the example above, open this help page as a worksheet, click the plot in the worksheet, and use the controls in the animation toolbar above the worksheet.
G≔RandomGraph⁡100,0.5,weights=0...1.0,connected:
infolevelKruskalsAlgorithm≔4:
T≔KruskalsAlgorithm⁡G,w:
KruskalsAlgorithm: "constructing minimal spanning tree on 100 vertices." KruskalsAlgorithm: "using Kruskal's algorithm at time 1.653" KruskalsAlgorithm: "making heap of 2490 edges at time: 1.658" KruskalsAlgorithm: "finding the edges at time: 1.677" KruskalsAlgorithm: "exiting Kruskal's algorithm at time 1.693"
2.25620251143321
See Also
AllPairsDistance
Diameter
SpanningTree
WeightMatrix
Download Help Document