Exemple #1
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void testRun()
        public virtual void TestRun()
        {
            // make the graph
            Graph.makeEdgeChain("a,b1,c1,d1,e1,f1,g1");
            Graph.makeEdgeChain("a,b2,c2,d2,e2,f2,g2");
            Graph.makeEdgeChain("a,b3,c3,d3,e3,f3,g3");
            Graph.makeEdgeChain("b1,b2,b3,b1");
            Graph.makeEdgeChain("d1,d2,d3,d1");
            Graph.makeEdgeChain("f1,f2,f3,f1");
            // make the computation
            SingleSourceShortestPath <int> singleSource = GetSingleSourceAlgorithm(Graph.getNode("a"));

            // check a few distances
            assertEquals(0, ( int )singleSource.GetCost(Graph.getNode("a")));
            assertEquals(1, ( int )singleSource.GetCost(Graph.getNode("b2")));
            assertEquals(2, ( int )singleSource.GetCost(Graph.getNode("c3")));
            assertEquals(3, ( int )singleSource.GetCost(Graph.getNode("d1")));
            assertEquals(4, ( int )singleSource.GetCost(Graph.getNode("e2")));
            assertEquals(5, ( int )singleSource.GetCost(Graph.getNode("f3")));
            assertEquals(6, ( int )singleSource.GetCost(Graph.getNode("g1")));
            // check one path
            IList <Node> path = singleSource.GetPathAsNodes(Graph.getNode("g2"));

            assertEquals(7, path.Count);
            assertEquals(path[0], Graph.getNode("a"));
            assertEquals(path[1], Graph.getNode("b2"));
            assertEquals(path[2], Graph.getNode("c2"));
            assertEquals(path[3], Graph.getNode("d2"));
            assertEquals(path[4], Graph.getNode("e2"));
            assertEquals(path[5], Graph.getNode("f2"));
            assertEquals(path[6], Graph.getNode("g2"));
            // check it as relationships
            IList <Relationship> rpath = singleSource.GetPathAsRelationships(Graph.getNode("g2"));

            assertEquals(6, rpath.Count);
            assertEquals(rpath[0], Graph.getRelationship("a", "b2"));
            assertEquals(rpath[1], Graph.getRelationship("b2", "c2"));
            assertEquals(rpath[2], Graph.getRelationship("c2", "d2"));
            assertEquals(rpath[3], Graph.getRelationship("d2", "e2"));
            assertEquals(rpath[4], Graph.getRelationship("e2", "f2"));
            assertEquals(rpath[5], Graph.getRelationship("f2", "g2"));
            // check it as both
            IList <PropertyContainer> cpath = singleSource.GetPath(Graph.getNode("g2"));

            assertEquals(13, cpath.Count);
            assertEquals(cpath[0], Graph.getNode("a"));
            assertEquals(cpath[2], Graph.getNode("b2"));
            assertEquals(cpath[4], Graph.getNode("c2"));
            assertEquals(cpath[6], Graph.getNode("d2"));
            assertEquals(cpath[8], Graph.getNode("e2"));
            assertEquals(cpath[10], Graph.getNode("f2"));
            assertEquals(cpath[12], Graph.getNode("g2"));
            assertEquals(cpath[1], Graph.getRelationship("a", "b2"));
            assertEquals(cpath[3], Graph.getRelationship("b2", "c2"));
            assertEquals(cpath[5], Graph.getRelationship("c2", "d2"));
            assertEquals(cpath[7], Graph.getRelationship("d2", "e2"));
            assertEquals(cpath[9], Graph.getRelationship("e2", "f2"));
            assertEquals(cpath[11], Graph.getRelationship("f2", "g2"));
            Graph.clear();
        }
Exemple #2
0
        static void Main(string[] args)
        {
            string path = @"xml/Rete.xml";
            IGraph g    = new Graph();

            g.CreateFromXmlDocument(path);
            IVertex v = g.Vertices.FindByID("B");
            IVertex w = g.Vertices.FindByID("F");

            SingleSourceShortestPath sp = new SingleSourceShortestPath(g, v);

            sp.Compute();
            IPath p = sp.GetShortestPath(w);

            Console.WriteLine($"{p} (weight: {p.TotalWeight})");
            Console.ReadLine();
        }