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 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); }