Esempio n. 1
0
        public void DistanceToNeighborNodeIsEqualEdgeWeight()
        {
            var sut = new DijkstraNaive();

            var graph =
                new[]
            {
                new WeightedGraphVertex
                {
                    Edges = new System.Collections.Generic.List <WeightedGraphNodeEdge>
                    {
                        new WeightedGraphNodeEdge
                        {
                            Weight = 1,
                            To     = 1
                        }
                    }
                },
                new WeightedGraphVertex
                {
                }
            };

            var(minDistance, path) = sut.MinDistance(graph, 0, 1);

            Assert.Equal(1, minDistance);
            Assert.Equal(0, path[1]);
        }
Esempio n. 2
0
        public void DistanceIsCalculateForGraphWithCycles()
        {
            var sut = new DijkstraNaive();

            var graph =
                new[]
            {
                new WeightedGraphVertex
                {
                    Edges = new System.Collections.Generic.List <WeightedGraphNodeEdge>
                    {
                        new WeightedGraphNodeEdge
                        {
                            Weight = 1,
                            To     = 1
                        },
                        new WeightedGraphNodeEdge
                        {
                            Weight = 5,
                            To     = 2
                        }
                    }
                },
                new WeightedGraphVertex
                {
                    Edges = new System.Collections.Generic.List <WeightedGraphNodeEdge>
                    {
                        new WeightedGraphNodeEdge
                        {
                            Weight = 2,
                            To     = 2
                        }
                    }
                },
                new WeightedGraphVertex
                {
                    Edges = new System.Collections.Generic.List <WeightedGraphNodeEdge>
                    {
                        new WeightedGraphNodeEdge
                        {
                            Weight = 2,
                            To     = 0
                        }
                    }
                }
            };

            var(minDistance, path) = sut.MinDistance(graph, 0, 2);

            Assert.Equal(3, minDistance);
            Assert.Equal(0, path[1]);
            Assert.Equal(1, path[2]);
        }
Esempio n. 3
0
        public void DistanceToItselfIsZero()
        {
            var sut = new DijkstraNaive();

            var graph =
                new[]
            {
                new WeightedGraphVertex
                {
                }
            };

            var(minDistance, path) = sut.MinDistance(graph, 0, 0);

            Assert.Equal(0, minDistance);
            Assert.Equal(0, path[0]);
        }
Esempio n. 4
0
        public void DistanceIsRecalculatedWhenCheaperPathIsFound()
        {
            var sut = new DijkstraNaive();

            var graph =
                new[]
            {
                new WeightedGraphVertex
                {
                    Edges = new System.Collections.Generic.List <WeightedGraphNodeEdge>
                    {
                        new WeightedGraphNodeEdge
                        {
                            Weight = 1,
                            To     = 1
                        },
                        new WeightedGraphNodeEdge
                        {
                            Weight = 5,
                            To     = 2
                        }
                    }
                },
                new WeightedGraphVertex
                {
                    Edges = new System.Collections.Generic.List <WeightedGraphNodeEdge>
                    {
                        new WeightedGraphNodeEdge
                        {
                            Weight = 2,
                            To     = 2
                        }
                    }
                },
                new WeightedGraphVertex
                {
                }
            };

            var(minDistance, path) = sut.MinDistance(graph, 0, 2);

            Assert.Equal(3, minDistance);
            Assert.Equal(1, path[2]);
        }