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]); }
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]); }
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]); }
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]); }