public void DirectedSparseGraphWithoutPath() { var testCase = new TestCase(); testCase .AddVertex("n1") .AddVertex("n2") .AddVertex("n3") .AddVertex("n4") .AddVertex("n5") .AddVertex("n6"); testCase .AddDirectedEdge("n1", "n2", 10) .AddDirectedEdge("n2", "n3", 8) .AddDirectedEdge("n3", "n4", 11) .AddDirectedEdge("n4", "n5", 6) .AddDirectedEdge("n5", "n6", 9) .AddDirectedEdge("n1", "n6", 3) .AddDirectedEdge("n2", "n6", 5) .AddDirectedEdge("n3", "n6", 18) .AddDirectedEdge("n3", "n5", 21); var tsp = new TSP <string, EquatableEdge <string>, BidirectionalGraph <string, EquatableEdge <string> > >( testCase.Graph, testCase.GetWeightsFunc()); tsp.Compute(); Assert.AreEqual(tsp.BestCost, double.PositiveInfinity); Assert.IsNull(tsp.ResultPath); }
public void DirectedSparseGraph() { var testCase = new TestCase(); testCase .AddVertex("n1") .AddVertex("n2") .AddVertex("n3") .AddVertex("n4") .AddVertex("n5") .AddVertex("n6"); testCase .AddDirectedEdge("n1", "n2", 10) .AddDirectedEdge("n2", "n3", 8) .AddDirectedEdge("n3", "n4", 11) .AddDirectedEdge("n4", "n5", 6) .AddDirectedEdge("n5", "n6", 9) .AddDirectedEdge("n1", "n6", 3) .AddDirectedEdge("n2", "n6", 5) .AddDirectedEdge("n3", "n6", 18) .AddDirectedEdge("n3", "n5", 21) .AddDirectedEdge("n6", "n1", 1); var tsp = new TSP <string, EquatableEdge <string>, BidirectionalGraph <string, EquatableEdge <string> > >( testCase.Graph, testCase.GetWeightsFunc()); tsp.Compute(); Assert.AreEqual(45, tsp.BestCost); Assert.IsNotNull(tsp.ResultPath); Assert.IsFalse(tsp.ResultPath.IsDirectedAcyclicGraph()); }
public void UndirectedFullGraph() { var testCase = new TestCase(); testCase .AddVertex("n1") .AddVertex("n2") .AddVertex("n3") .AddVertex("n4") .AddVertex("n5"); testCase .AddUndirectedEdge("n1", "n2", 16) .AddUndirectedEdge("n1", "n3", 9) .AddUndirectedEdge("n1", "n4", 15) .AddUndirectedEdge("n1", "n5", 3) .AddUndirectedEdge("n2", "n3", 14) .AddUndirectedEdge("n2", "n4", 4) .AddUndirectedEdge("n2", "n5", 5) .AddUndirectedEdge("n3", "n4", 4) .AddUndirectedEdge("n3", "n5", 2) .AddUndirectedEdge("n4", "n5", 1); var tsp = new TSP <string, EquatableEdge <string>, BidirectionalGraph <string, EquatableEdge <string> > >( testCase.Graph, testCase.GetWeightsFunc()); tsp.Compute(); Assert.AreEqual(tsp.BestCost, 25); Assert.IsNotNull(tsp.ResultPath); Assert.IsFalse(tsp.ResultPath.IsDirectedAcyclicGraph()); }