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
示例#2
0
def load_graph_to_work_on(args):
    g = DirectedGraph()

    if args.load:
        g.load(args.load)

    elif args.n:
        g.add_nodes(int(args.n))
        if args.l:
            g.add_random_edges(int(args.l))
        elif args.p:
            g.connect_random(float(args.p))

    if args.w is not None:
        if args.w[0]:
            g.assign_random_weights(int(args.w[0][0]), int(args.w[0][1]))
        else:
            g.assign_random_weights()
    return g
示例#3
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)