コード例 #1
0
    def find_next_move(self, board, current_player):
        """
            Define an end time which will act as a terminating condition
        """

        tree = Tree()
        rootNode = tree.get_root()
        rootNode.state.board = board
        rootNode.state.set_player(current_player)
        self.opponent = 3 - current_player

        move_epochs = 50000
        for _ in range(move_epochs):

            promising_node = self.select_promising_node(rootNode)

            if promising_node.get_state().get_board().check_game_state() == -1:
                self.expand_node(promising_node)

            nodeToExplore = promising_node

            if len(promising_node.get_children()) > 0:
                nodeToExplore = promising_node.get_random_child()

            playoutResult = self.simulate_random_playout(nodeToExplore)
            self.back_propogation(nodeToExplore, playoutResult)

        winnerNode = rootNode.get_child_with_max_score()
        tree.set_root(winnerNode)

        newBoard = deepcopy(winnerNode.get_state().get_board())
        return newBoard
コード例 #2
0
from node import Node, Tree
from bfs import bfs_traversal
from dfs import dfs_traversal
from tree_traversals import in_order_traversal, pre_order_traversal, post_order_traversal

first_tree_dict = {
    "a": ("b", "c"),
    "b": ("d", "e"),
    "c": ("h", "i"),
    "d": ("f", "g")
}

other_tree_dict = {
    "a": ("b", "b"),
    "b": ("c", "c"),
    "c": ("d", "d"),
    "d": ("e", "e"),
    "e": ("f", "f")
}

if __name__ == "__main__":
    first_tree = Tree("a", first_tree_dict)
    other_tree = Tree("a", other_tree_dict)
    print(dfs_traversal(first_tree.get_root()))