Esempio n. 1
0
        public void CorrectMatrixTest()
        {
            var graph = new DirectedWeightedGraph <int>(10);

            var vertex1 = graph.AddVertex(1);

            var vertex2 = graph.AddVertex(2);

            var vertex3 = graph.AddVertex(3);

            var vertex4 = graph.AddVertex(4);

            var vertex5 = graph.AddVertex(5);

            graph.AddEdge(vertex1, vertex2, 3);

            graph.AddEdge(vertex1, vertex5, -4);

            graph.AddEdge(vertex1, vertex3, 8);

            graph.AddEdge(vertex2, vertex5, 7);

            graph.AddEdge(vertex2, vertex4, 1);

            graph.AddEdge(vertex3, vertex2, 4);

            graph.AddEdge(vertex4, vertex3, -5);

            graph.AddEdge(vertex4, vertex1, 2);

            graph.AddEdge(vertex5, vertex4, 6);

            var actualDistances = new double[, ]
            {
                { 0, 1, -3, 2, -4 },
                { 3, 0, -4, 1, -1 },
                { 7, 4, 0, 5, 3 },
                { 2, -1, -5, 0, -2 },
                { 8, 5, 1, 6, 0 },
            };

            var floydWarshaller = new FloydWarshall <int>();

            floydWarshaller.Run(graph).Should().Equal(actualDistances);
        }
 private static bool[] RunFloydWarshall(Vertex[] vertices, int source)
 {
     int[,] depths = FloydWarshall.Run(vertices);
     return(Enumerable.Range(0, vertices.Length).Select(i => depths[source, i] != int.MaxValue).ToArray());
 }
Esempio n. 3
0
 private static int[,] RunFloydWarshall(Vertex[] vertices)
 {
     return(FloydWarshall.Run(vertices));
 }