public void ComputeMinimumSpanningTree_SimpleGraph_IsCorrect() { var g = CreateGraph(3, (0, 1, 1), (1, 2, 2)); var a = new PrimMinimumSpanningTreeAlgorithm <UndirectedGraph <Empty, int>, VertexIdx, EdgeIdx, int>(g, new IntCalculator()); var spanningTree = a.ComputeMinimumSpanningTree(new VertexIdx(0)); Assert.That(spanningTree.ToArray(), Is.EquivalentTo(Edges(0, 1))); }
public void ComputeMinimumSpanningTree_GraphWithoutEdges_IsEmpty() { var g = CreateGraph(1); var a = new PrimMinimumSpanningTreeAlgorithm <UndirectedGraph <Empty, int>, VertexIdx, EdgeIdx, int>(g, new IntCalculator()); var spanningTree = a.ComputeMinimumSpanningTree(new VertexIdx(0)); Assert.That(spanningTree.IsEmpty, Is.True); }
public void ComputeMinimumSpanningTree_WikipediaExample_IsCorrect() { var g = CreateGraph(6, (0, 1, 1), (0, 3, 4), (0, 4, 3), (1, 3, 4), (1, 4, 2), (2, 4, 4), (2, 5, 5), (3, 4, 4), (4, 5, 7)); var a = new PrimMinimumSpanningTreeAlgorithm <UndirectedGraph <Empty, int>, VertexIdx, EdgeIdx, int>(g, new IntCalculator()); var spanningTree = a.ComputeMinimumSpanningTree(new VertexIdx(0)); Assert.That(spanningTree.Length, Is.EqualTo(5)); Assert.That(spanningTree.ToArray().Sum(e => g.GetEdgeTag(e)), Is.EqualTo(16)); }