def test_dijkstra_single_source_single_target(): dg = DirectGraph() a = Vertex('a') b = Vertex('b') c = Vertex('c') d = Vertex('d') e = Vertex('e') f = Vertex('f') g = Vertex('g') dg.add_vertex(a) dg.add_vertex(b) dg.add_vertex(c) dg.add_vertex(d) dg.add_vertex(e) dg.add_vertex(f) dg.add_vertex(g) dg.add_edge(a, b, 2) dg.add_edge(d, a, 3) dg.add_edge(b, c, 3) dg.add_edge(c, d, 5) dg.add_edge(c, e, 6) dg.add_edge(c, f, 4) dg.add_edge(g, e, 1) dg.add_edge(f, g, 2) dg.add_edge(b, e, 2) dg.add_edge(e, g, 3) s, t = a, g d, pai = dijkstra_single_source_single_target(dg, s, t) print(d, pai) print('=======') print_shortest_path(pai, s, t)
def test_dijkstra(): dg = DirectGraph() a = Vertex('a') b = Vertex('b') c = Vertex('c') d = Vertex('d') e = Vertex('e') f = Vertex('f') g = Vertex('g') dg.add_vertex(a) dg.add_vertex(b) dg.add_vertex(c) dg.add_vertex(d) dg.add_vertex(e) dg.add_vertex(f) dg.add_vertex(g) dg.add_edge(a, b, 2) dg.add_edge(d, a, 3) dg.add_edge(b, c, 3) dg.add_edge(c, d, 5) dg.add_edge(c, e, 6) dg.add_edge(c, f, 4) dg.add_edge(g, e, 1) dg.add_edge(f, g, 2) dg.add_edge(b, e, 2) dg.add_edge(e, g, 3) d, pai = dijkstra(dg, a) print(d, pai)
def test_topology(): dag = DirectGraph() a = Vertex('a') b = Vertex('b') c = Vertex('c') d = Vertex('d') e = Vertex('e') f = Vertex('f') g = Vertex('g') dag.add_vertex(a) dag.add_vertex(b) dag.add_vertex(c) dag.add_vertex(d) dag.add_vertex(e) dag.add_vertex(f) dag.add_vertex(g) dag.add_edge(a, b) dag.add_edge(b, c) dag.add_edge(c, d) dag.add_edge(e, c) dag.add_edge(c, g) dag.add_edge(c, f) dag.add_edge(d, f) order = topology(dag) print(order)
def test(): # 以下图中有两条关键路径 # 1: a-->b-->e-->g-->h # 2: a-->b-->e-->f-->h dag = DirectGraph() a = Vertex('a') b = Vertex('b') c = Vertex('c') d = Vertex('d') e = Vertex('e') f = Vertex('f') g = Vertex('g') h = Vertex('h') i = Vertex('i') dag.add_vertex(a) dag.add_vertex(b) dag.add_vertex(c) dag.add_vertex(d) dag.add_vertex(e) dag.add_vertex(f) dag.add_vertex(g) dag.add_vertex(h) dag.add_vertex(i) dag.add_edge(a, b, 6) dag.add_edge(a, c, 4) dag.add_edge(a, d, 5) dag.add_edge(b, e, 1) dag.add_edge(c, e, 1) dag.add_edge(d, i, 2) dag.add_edge(e, f, 9) dag.add_edge(e, g, 7) dag.add_edge(f, h, 2) dag.add_edge(g, h, 4) dag.add_edge(i, g, 4) key_path = find_key_path(dag) print(key_path)
def test_cycle(): dag = DirectGraph() a = Vertex('a') b = Vertex('b') c = Vertex('c') d = Vertex('d') e = Vertex('e') f = Vertex('f') g = Vertex('g') h = Vertex('h') dag.add_vertex(a) dag.add_vertex(b) dag.add_vertex(c) dag.add_vertex(d) dag.add_vertex(e) dag.add_vertex(f) dag.add_vertex(g) dag.add_vertex(h) dag.add_edge(a, b, 2) dag.add_edge(d, a, 3) dag.add_edge(b, c, 3) dag.add_edge(c, d, 5) dag.add_edge(c, e, 6) dag.add_edge(c, f, 4) dag.add_edge(g, e, 1) dag.add_edge(f, g, 2) dag.add_edge(b, e, 2) dag.add_edge(e, g, 3) dag.add_edge(g, c, 3) order = topology(dag) print(order)
def test_floyd(): dag = DirectGraph() a = Vertex('a') b = Vertex('b') c = Vertex('c') d = Vertex('d') e = Vertex('e') f = Vertex('f') g = Vertex('g') h = Vertex('h') dag.add_vertex(a) dag.add_vertex(b) dag.add_vertex(c) dag.add_vertex(d) dag.add_vertex(e) dag.add_vertex(f) dag.add_vertex(g) # dag.add_vertex(h) dag.add_edge(a, b, 2) dag.add_edge(d, a, 3) dag.add_edge(b, c, 3) dag.add_edge(c, d, 5) dag.add_edge(c, e, 6) dag.add_edge(c, f, 4) dag.add_edge(g, e, 1) dag.add_edge(f, g, 2) dag.add_edge(b, e, 2) dag.add_edge(e, g, 3) dag.add_edge(g, c, 3) d, p, vexes = floyd(dag) pprint.pprint(vexes) pprint.pprint(d) pprint.pprint(p)
def test(): dag = DirectGraph() a = Vertex('a') b = Vertex('b') c = Vertex('c') d = Vertex('d') e = Vertex('e') f = Vertex('f') g = Vertex('g') h = Vertex('h') dag.add_vertex(a) dag.add_vertex(b) dag.add_vertex(c) dag.add_vertex(d) dag.add_vertex(e) dag.add_vertex(f) dag.add_vertex(g) dag.add_vertex(h) dag.add_edge(a, b, 2) dag.add_edge(d, a, 3) dag.add_edge(b, c, 3) dag.add_edge(c, d, 5) dag.add_edge(c, e, 6) dag.add_edge(c, f, 4) dag.add_edge(g, e, 1) dag.add_edge(f, g, 2) dag.add_edge(b, e, 2) dag.add_edge(e, g, 3) dag.add_edge(g, c, 3) try: df, db, paif, paib, n = bi_dijkstra(dag, g, a) print('df: ', df) print('db: ', db) print('paif: ', paif) print('paib ', paib) print_shortest_path(paif, paib, n) except NoPathException as e: print(e)