コード例 #1
0
ファイル: test_graph.py プロジェクト: misaka-10032/alg
def test_sssp():
    # sssp = single source shortest path
    # CLRS(2009) p659
    g = Graph()
    g.add_edge(Edge("s", "t", 10))
    g.add_edge(Edge("s", "y", 5))
    g.add_edge(Edge("t", "y", 2))
    g.add_edge(Edge("t", "x", 1))
    g.add_edge(Edge("x", "z", 4))
    g.add_edge(Edge("z", "x", 6))
    g.add_edge(Edge("z", "s", 7))
    g.add_edge(Edge("y", "t", 3))
    g.add_edge(Edge("y", "x", 9))
    g.add_edge(Edge("y", "z", 2))
    d, p = g.dijkstra("s")
    assert d["s"] == 0 and p["s"] is None
    assert d["t"] == 8 and p["t"] == "y"
    assert d["x"] == 9 and p["x"] == "t"
    assert d["z"] == 7 and p["z"] == "y"
    assert d["y"] == 5 and p["y"] == "s"
    d, p = g.bellmanford("s")
    assert d["s"] == 0 and p["s"] is None
    assert d["t"] == 8 and p["t"] == "y"
    assert d["x"] == 9 and p["x"] == "t"
    assert d["z"] == 7 and p["z"] == "y"
    assert d["y"] == 5 and p["y"] == "s"
コード例 #2
0
ファイル: test_graph.py プロジェクト: misaka-10032/alg
def test_bellmanford():
    g = Graph()
    g.add_edge(Edge("a", "x", 1))
    g.add_edge(Edge("x", "y", -1))
    g.add_edge(Edge("y", "z", -1))
    g.add_edge(Edge("z", "x", -1))
    d, p = g.bellmanford("a")
    assert d["a"] == 0 and p["a"] is None
    assert d["x"] == -np.inf and p["x"] == "z"
    assert d["y"] == -np.inf and p["y"] == "x"
    assert d["z"] == -np.inf and p["z"] == "y"