public void SimpleTest() { DataWeightedGraph <Vector2f> graph = new DataWeightedGraph <Vector2f>(); uint a1 = graph.AddNode(Vector2f.Zero); uint a2 = graph.AddNode(new Vector2f(1.0f, 0.0f)); uint a3 = graph.AddNode(new Vector2f(0.5f, 0.5f)); uint a4 = graph.AddNode(new Vector2f(2.0f, 0.5f)); uint a5 = graph.AddNode(new Vector2f(3.0f, 0.0f)); graph.Link(a1, a2, 1.0f); graph.Link(a2, a3, (new Vector2f(0.5f, 0.5f)).Length); graph.Link(a2, a4, (new Vector2f(1.5f, 0.0f)).Length); graph.Link(a4, a5, (new Vector2f(1.0f, 0.5f)).Length); AStarSearch aStar = new AStarSearch(graph, a1, a5, delegate(uint from, uint to) { return((graph[from] - graph[to]).Length); }); aStar.Search(); SearchResult result = aStar.Result; Assert.AreEqual(4, result.Count); }
public void SimpleTestChangeGoal() { DataWeightedGraph <string> graph = new DataWeightedGraph <string>(); uint a1 = graph.AddNode("1"); uint a2 = graph.AddNode("2"); uint a3 = graph.AddNode("3"); uint a4 = graph.AddNode("4"); uint a5 = graph.AddNode("5"); graph.Link(a1, a3, 1.0f); graph.Link(a1, a2, 3.0f); graph.Link(a3, a2, 1.0f); graph.Link(a2, a4, 2.0f); graph.Link(a4, a5, 1.0f); graph.Link(a1, a5, 7.0f); BellmanFordSearch bf = new BellmanFordSearch(graph, a1); bf.Search(); SearchResult result = bf[a4]; Assert.AreEqual(4.0, result.Cost); Assert.AreEqual(4, result.Count); }
public void SimpleTestChangeGoal() { DataWeightedGraph <string> graph = new DataWeightedGraph <string>(); uint a1 = graph.AddNode("1"); uint a2 = graph.AddNode("2"); uint a3 = graph.AddNode("3"); uint a4 = graph.AddNode("4"); uint a5 = graph.AddNode("5"); graph.Link(a1, a3, 1.0f); graph.Link(a1, a2, 3.0f); graph.Link(a3, a2, 1.0f); graph.Link(a2, a4, 2.0f); graph.Link(a4, a5, 1.0f); graph.Link(a1, a5, 7.0f); Dijkstra dijkstra = new Dijkstra(graph, a1, a5); dijkstra.Search(); dijkstra.ChangeGoal(a4); dijkstra.Search(); SearchResult result = dijkstra.Result; Assert.AreEqual(4.0, result.Cost); Assert.AreEqual(4, result.Count); }
public void AllPaths() { DataWeightedGraph <string> graph = new DataWeightedGraph <string>(); uint a1 = graph.AddNode("1"); uint a2 = graph.AddNode("2"); uint a3 = graph.AddNode("3"); uint a4 = graph.AddNode("4"); uint a5 = graph.AddNode("5"); graph.Link(a1, a3, 1.0f); graph.Link(a1, a2, 3.0f); graph.Link(a3, a2, 1.0f); graph.Link(a2, a4, 2.0f); graph.Link(a4, a5, 1.0f); graph.Link(a1, a5, 7.0f); FloydWarshallSearch floydMarshall = new FloydWarshallSearch(graph); floydMarshall.Search(); Assert.AreEqual(5.0f, floydMarshall[a1, a5]); }