Exemple #1
0
def example04():
    g = DirectedGraph().from_adjacency_list(adjacency_list_2)
    print(g)
    rank = page_rank(g, algorithm="matrix")
    display_pagerank(rank)
    g.save("pr_matrix_2",
           "png",
           engine="dot",
           color_components=True,
           alphabetical=True)
    def test_incidence_matrix_file(self):
        g = DirectedGraph(8)
        g.add_random_edges(15)

        before = g.to_adjacency_matrix()
        g.save("test", "im")
        g.load("test.im")
        after = g.to_adjacency_matrix()

        assert before == after
Exemple #3
0
def example01():
    g = DirectedGraph().from_adjacency_list(adjacency_list_1)
    print(g)
    rank = page_rank(g, algorithm="random_walk")
    display_pagerank(rank)
    g.save(
        "pr_random_walk_1",
        "png",
        engine="dot",
        color_components=True,
        alphabetical=True,
    )
Exemple #4
0
def main():
    print("Wywołanie:\n./lab05.py gen save_dir N\n./lab05.py ff save_dir")
    print("Sieć przykładowa: ./lab05.py gen example\n")

    if len(sys.argv) < 2:
        return

    if sys.argv[1] == "gen":
        save_dir = sys.argv[2]

        if save_dir == "example":
            print(f"Używanie sieci przykładowej (z input_5.pdf)")
            g = get_example()
        else:
            N = int(sys.argv[3])
            print(f"Generowanie sieci przepływowej, N={N}")
            g = generate_network(N=N)
        prep_dir(save_dir)
        g.save(save_dir + "/G", file_format="am")
        g.save(save_dir + "/G", file_format="png", engine="dot")
        print(f"Zapisano do katalogu {save_dir}")

    elif sys.argv[1] == "ff":
        save_dir = sys.argv[2]

        g = DirectedGraph()
        g.load(save_dir + "/G.am")
        # odświeżenie diagramu w razie ręcznej edycji macierzy sąsiedztwa
        g.save(save_dir + "/G", file_format="png", engine="dot")
        print(f"Odczytano sieć przepływową z katalogu {save_dir}")

        f = ford_fulkerson(g, verbose=True)

        f_max = sum(weight for ((begin, end), weight) in f.items()
                    if begin == 1)
        print(f"maksymalny przepływ: {f_max}")

        labels = {(e.begin, e.end): f"{f[(e.begin, e.end)]}/{e.weight}"
                  for e in g.edges}
        g.save(save_dir + "/G-ff",
               file_format="png",
               engine="dot",
               edge_labels=labels)