コード例 #1
0
        neighbors = [
            neighbor.split(" <-> ")[1] for neighbor in graph.out_edge(node)
        ]
        for neighbor in sorted(neighbors):
            if neighbor not in visited:
                queue.append(neighbor)
                visited.add(neighbor)
                yield neighbor


if __name__ == "__main__":
    nodes = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
    G = GraphAL()
    for i in nodes:
        G.add_vertex(i)
    G.add_edge('a', 'b')
    G.add_edge('a', 'd')
    G.add_edge('a', 'c')
    G.add_edge('b', 'd')
    G.add_edge('b', 'g')
    G.add_edge('b', 'e')
    G.add_edge('c', 'd')
    G.add_edge('c', 'f')
    G.add_edge('d', 'g')
    G.add_edge('e', 'g')
    G.add_edge('f', 'g')
    traversal_graph(G)
    print("===========DFS-non-recursive==========")
    for i in DFS_traversal_graph(G):
        print(f"current node : {i}")
    print("===========BFS-non-recursive==========")
コード例 #2
0
        mst[edge_tuple.end_node] = EdgeTuple(edge_tuple.start_node, edge_tuple.end_node, -1 * edge_tuple.weight)
        edges_set.add(edge_tuple.end_node)
        for edge_ in graph.out_edge(edge_tuple.end_node):

            edge = edge_.split(split_sign)
            end_node = edge_.split(split_sign)[1]
            et = EdgeTuple(edge[0], edge[1], int(edge[2])*(-1))
            if mst.get(end_node, None) is None:
                candidates.enqueue(et)

    return mst


if __name__ == "__main__":
    graph = GraphAL()
    for i in "abcdefg":
        graph.add_vertex(i)
    graph.add_edge("a", "b", 5)
    graph.add_edge("a", "c", 11)
    graph.add_edge("a", "d", 5)
    graph.add_edge("b", "d", 3)
    graph.add_edge("b", "g", 7)
    graph.add_edge("b", "e", 9)
    graph.add_edge("c", "d", 7)
    graph.add_edge("c", "f", 6)
    graph.add_edge("d", "g", 20)
    graph.add_edge("e", "g", 8)
    graph.add_edge("f", "g", 8)
    print(kruskal(graph))
    print(prim(graph))