Пример #1
0
def branches(leaf: Node):
    """ leaf の分岐数 """
    cnt = 0
    for i, anc in enumerate(leaf.iter_path_reverse()):
        if anc.height != i:
            cnt += 1
    return cnt
Пример #2
0
def update_tree(game_lst,game_tree):
       
    root_name = game_lst[0][0][0]
    for branch, result  in zip([x for x,_ in game_lst],[x[1] for x in game_lst]):
        parent_node = game_tree
        assert branch[0] == parent_node.name
        for cur_node_name in branch[1:]:
            cur_node = next(
                (node for node in parent_node.children if node.name == cur_node_name),
                None,
            )
           
            
            if cur_node is None:
                cur_node = Node(cur_node_name, parent=parent_node,nb_visit=0,nb_win=0)
                
            parent_node = cur_node
            
        #backpropagation    
        for i in list(cur_node.iter_path_reverse()):
            i.nb_win=i.nb_win+result 
            i.nb_visit=i.nb_visit+1 
        
    return game_tree