Пример #1
0
def test():

    g = Graph()

    for node in ["u", "y", "v", "x", "w", "y", "z"]:
        g.add_node(node)

    g.add_bi_edge("u", "v", 2)
    g.add_bi_edge("u", "x", 1)
    g.add_bi_edge("u", "w", 5)

    g.add_bi_edge("v", "x", 2)
    g.add_bi_edge("v", "w", 3)

    g.add_bi_edge("x", "w", 3)
    g.add_bi_edge("x", "y", 1)

    g.add_bi_edge("w", "z", 5)
    g.add_bi_edge("w", "y", 1)
    g.add_bi_edge("y", "z", 1)

    print list(g.iternodes())
    print list(g.iteredges())

    solver = DijkstraSolver(g)

    for node, dist in solver.shortest_paths("u"):
        print node, dist

    return 0
Пример #2
0
def test():
    

    g = Graph()

    for y in xrange(0, 4):
        for x in xrange(1, 5):
            node = y * 4 + x
            print node, {"x": x, "y": y+1}
            g.add_node(node, x=x, y=y+1)

    # 1
    g.add_bi_edge(1,2)
    g.add_bi_edge(1,5)

    # 2
    g.add_bi_edge(2,6)
    g.add_bi_edge(2,3)

    # 3
    g.add_bi_edge(3,7)
    g.add_bi_edge(3,4)

    # 4
    g.add_bi_edge(4,8)

    # 5
    g.add_bi_edge(5,9)
    g.add_bi_edge(5,6)

    # 6
    g.add_bi_edge(6,10)

    # 7
     
    # 8
    g.add_bi_edge(8, 12)

    # 9
    g.add_bi_edge(9, 13)

    # 10
    g.add_bi_edge(10, 14)
    g.add_bi_edge(10, 11)

    # 11

    # 12
    g.add_bi_edge(12, 16)

    # 13
    g.add_bi_edge(13, 14)

    # 14
    g.add_bi_edge(14, 15)

    # 15

    # 16
    

    def greedy_h(n1, n2):
        return abs(n1["x"] - n2["x"]) + abs(n1["y"] - n2["y"])

    astar_solver = AStarSolver(g, greedy_h)

    print
    print astar_solver.find_path(1, 16)
    print astar_solver.find_path(8, 16)
    print