from vorlesung.L08_graphen.graph import Graph, AdjacencyMatrixGraph from utils.project_dir import get_path import re def read_elektro_into_graph(graph: Graph, filename: str): pattern = re.compile(r'"([^"]+)";"([^"]+)";(\d+)') with (open(filename, "r") as file): for line in file: m = pattern.match(line) if m: start_name = m.group(1) end_name = m.group(2) cost = int(m.group(3)) graph.insert_vertex(start_name) graph.insert_vertex(end_name) graph.connect(start_name, end_name, cost) graph.connect(end_name, start_name, cost) if __name__ == "__main__": graph = AdjacencyMatrixGraph() read_elektro_into_graph(graph, get_path("data/elektro.txt")) parents, cost = graph.mst_prim() print(f"Kosten nach Prim: {cost}") for node, parent in parents.items(): if parent is not None: print(f"{node} - {parent}") edges, cost = graph.mst_kruskal() print(f"Kosten nach Kruskal: {cost}") for start_name, end_name, _ in edges: print(f"{start_name} - {end_name}")