def __init__(self, points, edges, n, d): assert points.n == n assert points.d == d self.point_set = points self.edges = edges self.n = n self.d = d self.solution = factories.create_solution_edges(n) self.connected_components = ConnectedComponents(n) self.lines = [] self.lines_registry = {} self.line_segments = {}
def compute_spanning_tree_on_ccs(self): new_solution_edges = set() remaining_points = range(self.n) while remaining_points: p = remaining_points.pop() spanning_tree_edges = self.spanning_tree(p) new_solution_edges.update(spanning_tree_edges) # TODO maybe use bfs with ccs instead to delete from remain.points for (i, j) in spanning_tree_edges: if i in remaining_points: remaining_points.remove(i) if j in remaining_points: remaining_points.remove(j) self.solution = factories.create_solution_edges(self.n) for (i, j) in new_solution_edges: self.solution.update(i, j, True) return