public void BredthFirstSearchWorks() { Graph.Graph g = new Graph.UndirectedGraph(9); g.AddEdge(0, 2); g.AddEdge(0, 1); g.AddEdge(0, 5); g.AddEdge(1,2); g.AddEdge(2,4); g.AddEdge(2,3); g.AddEdge(3,4); g.AddEdge(3,5); //create another path to 3 that is really long g.AddEdge(1, 6); g.AddEdge(6,7); g.AddEdge(7,8); g.AddEdge(8,3); Graph.BreadthFirstSearch dfs = new Graph.BreadthFirstSearch(g, 0); Assert.AreEqual(dfs.edgeTo[1], 0); Assert.AreEqual(dfs.edgeTo[2], 0); Assert.AreEqual(dfs.edgeTo[3], 2); Assert.AreEqual(dfs.edgeTo[4], 2); Assert.AreEqual(dfs.edgeTo[5], 0); //I have no idea how to implement distance to, the stupid course didn't explain it Assert.AreEqual(dfs.disTo[1], 1); Assert.AreEqual(dfs.disTo[2], 1); Assert.AreEqual(dfs.disTo[3], 2); Assert.AreEqual(dfs.disTo[4], 2); Assert.AreEqual(dfs.disTo[5], 1); }
public void DirectedBredthFirstSearchWorks() { Graph.Graph g = new Graph.DirectedGraph(9); g.AddEdge(0, 2); g.AddEdge(0, 1); g.AddEdge(2, 4); g.AddEdge(5, 0); g.AddEdge(1, 2); g.AddEdge(3, 2); g.AddEdge(4, 3); g.AddEdge(3, 5); g.AddEdge(3, 5); Graph.BreadthFirstSearch dfs = new Graph.BreadthFirstSearch(g, 0); Assert.AreEqual(dfs.edgeTo[1], 0); Assert.AreEqual(dfs.edgeTo[2], 0); Assert.AreEqual(dfs.edgeTo[3], 4); Assert.AreEqual(dfs.edgeTo[4], 2); Assert.AreEqual(dfs.edgeTo[5], 3); Assert.AreEqual(dfs.disTo[1], 1); Assert.AreEqual(dfs.disTo[2], 1); Assert.AreEqual(dfs.disTo[3], 3); Assert.AreEqual(dfs.disTo[4], 2); Assert.AreEqual(dfs.disTo[5], 4); }