Exemple #1
0
 def evaluate_tree_alpha_beta(self,
                              currentNode: Node,
                              parentEvaluator: int = None) -> None:
     if currentNode.is_leaf:
         currentNode.evaluator_value = 1 if self.is_player_first == (
             currentNode.depth % 2 == 1) else -1
     else:
         child_evaluate_values = []
         current_evaluation: int = None
         is_current_max = currentNode.depth % 2 == 0
         for child in currentNode.children:
             self.evaluate_tree_alpha_beta(child, current_evaluation)
             if child.evaluator_value:
                 if parentEvaluator:
                     skipped: bool = (
                         child.evaluator_value >= parentEvaluator
                     ) if is_current_max else (
                         parentEvaluator <= child.evaluator_value)
                     if skipped:
                         return
                 if not current_evaluation or (is_current_max ==
                                               child.evaluator_value >
                                               current_evaluation):
                     current_evaluation = child.evaluator_value
                 child_evaluate_values.append(child.evaluator_value)
         evaluate = max(child_evaluate_values) if is_current_max else min(
             child_evaluate_values)
         currentNode.evaluator_value = evaluate
     self.nodesVisited += 1
Exemple #2
0
 def evaluate_tree_min_max(self, currentNode: Node) -> None:
     if currentNode.is_leaf:
         currentNode.evaluator_value = 1 if self.is_player_first == (
             currentNode.depth % 2 == 1) else -1
     else:
         child_evaluate_values = []
         for child in currentNode.children:
             self.evaluate_tree_min_max(child)
             child_evaluate_values.append(child.evaluator_value)
         evaluate = max(child_evaluate_values) if (
             currentNode.depth % 2 == 0) else min(child_evaluate_values)
         currentNode.evaluator_value = evaluate
     self.nodesVisited += 1
 def evaluateTreeMinMax(self, currentNode: Node):
     if currentNode.is_leaf:
         currentNode.evaluator_value = 1 if (currentNode.depth %
                                             2 == 1) else -1
     else:
         childEvaluateValues = []
         for child in currentNode.children:
             self.evaluateTreeMinMax(child)
             childEvaluateValues.append(child.evaluator_value)
         evaluate = max(childEvaluateValues) if (
             currentNode.depth % 2 == 0) else min(childEvaluateValues)
         currentNode.evaluator_value = evaluate
     self.nodesVisited += 1