dominikbraun / graph

A library for creating generic graph data structures and modifying, analyzing, and visualizing them.
https://graph.dominikbraun.io
Apache License 2.0
1.8k stars 94 forks source link

Shortest path is not the shortest #88

Closed dNaszta closed 1 year ago

dNaszta commented 1 year ago
func TestShortestPath(t *testing.T) {
    g := graph.New(graph.StringHash, graph.Weighted(), graph.Directed())

    g.AddVertex("start")
    g.AddVertex("a")
    g.AddVertex("b")
    g.AddVertex("fin")

    g.AddEdge("start", "a", graph.EdgeWeight(6))
    g.AddEdge("start", "b", graph.EdgeWeight(2))
    g.AddEdge("a", "fin", graph.EdgeWeight(1))
    g.AddEdge("b", "a", graph.EdgeWeight(3))
    g.AddEdge("b", "fin", graph.EdgeWeight(5))

    path, _ := graph.ShortestPath(g, "start", "fin")

    wanted := []string{"start", "b", "a", "fin"}
    if !reflect.DeepEqual(path, wanted) {
        t.Errorf("shortest path failed, result: %v, wanted: %v", path, wanted)
    }
}

shortest path failed, result: [start b fin], wanted: [start b a fin]

dominikbraun commented 1 year ago

Nice catch, thank you.

issue-88

dominikbraun commented 1 year ago

The fix has been released in v0.16.2.