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
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
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)