Пример #1
0
    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