def make_graph(self, init_state, max_depth=None): graph = Graph() new_nodes = [graph.node(init_state)] new_nodes[0].fillcolor = "gray" new_nodes[0].label = self.make_label(new_nodes[0].key) depth = 0 while new_nodes and (max_depth is None or depth < max_depth): nodes = new_nodes new_nodes = [] depth += 1 while nodes: node = nodes.pop() key = node.key node.label = self.make_label(key) for a in self.get_enabled_actions(key): s = self.step(key, a) if s is None: continue n, exists = graph.node_check(s) node.add_arc(n, a) if not exists: new_nodes.append(n) for node in new_nodes: node.label = self.make_label(node.key) return graph