def is_stable(coloring): for color_class in coloring.colors(): v = coloring[color_class][0] for u in coloring[color_class][1:]: if not checkNeighbourhood(u, v): return False return True
def isStable(self): for color_class in self.colors(): v = self.__colors[color_class][0] for u in self.__colors[color_class][1:]: if not checkNeighbourhood(u, v): return False return True
def getColoring(G): alpha = coloring() highestDegree = -1 for v in G.V(): alpha.put(v.get_degree(), v) if highestDegree < v.get_color_num(): highestDegree = v.get_color_num() changed = True buffer = alpha # De colour refinement: while changed: changed = False alpha = buffer.deepcopy() for color in alpha.colors(): colour_list = buffer.get(color) if len(colour_list) > 1: changelist = [] u = colour_list[0] for v in colour_list[1:]: if not checkNeighbourhood(u, v): changed = True changelist.append(v) for v in changelist: buffer.move(v, highestDegree + 1) if changed: highestDegree += 1 return buffer
def coloring_refinement(coloring, highest_degree = -1): if highest_degree == -1: for key in coloring.keys(): if key > highest_degree: highest_degree = key changed = True while changed: changed = False for colour_list in get_color_classes(coloring): change_list = [] u = colour_list[0] for v in colour_list[1:]: if not checkNeighbourhood(u, v): changed = True change_list.append(v) move_all(coloring, change_list, highest_degree + 1) if changed: highest_degree += 1 return coloring
def get_coloring(G): alpha = dict() highest_degree = -1 for v in G.V(): put(alpha, v.get_degree(), v) if highest_degree < v.get_color_num(): highest_degree = v.get_color_num() changed = True # De colour refinement: while changed: changed = False for colour_list in get_color_classes(alpha): change_list = [] u = colour_list[0] for v in colour_list[1:]: if not checkNeighbourhood(u, v): changed = True change_list.append(v) move_all(alpha, change_list, highest_degree + 1) if changed: highest_degree += 1 return alpha, len(G.V())
def getColoring2(G): alpha = coloring() highestDegree = -1 for v in G.V(): alpha.put(v.get_degree(), v) if highestDegree < v.get_color_num(): highestDegree = v.get_color_num() changed = True # De colour refinement: while changed: changed = False for colour_list in alpha.getColorClasses(): change_list = [] u = colour_list[0] for v in colour_list[1:]: if not checkNeighbourhood(u, v): changed = True change_list.append(v) alpha.moveAll(change_list, highestDegree + 1) if changed: highestDegree += 1 return alpha