def find_clusters(self): q = queue.Queue() first_cluster = Cluster() first_cluster.edges = self.edges first_cluster.vertices = self.vertices first_cluster.build_array() self.clusters.append(first_cluster) q.put(first_cluster) while not q.empty(): cluster = q.get() if cluster.should_cluster_be_split(): new_cluster = Cluster() cluster.split_cluster(new_cluster) self.clusters.append(new_cluster) if not cluster.verticies.__len__() > 0: q.put(cluster) if new_cluster.verticies.__len__() > 0: q.put(new_cluster)