Subscribe Us

Responsive Advertisement

Advertisement

For a given game tree, demonstrate how to apply the Alpha-Beta pruning algorithm, showing all final alpha and beta values computed at the root, each internal node explored, and at the top of pruned branches.


def tree(dept, indx, val, height, who, alpha, beta):
    if height == dept:
        return val[indx]

    if who:
        best = -float('inf')

        best = max(best, tree(dept + 1, indx * 2, val, height, False, alpha, beta))
        alpha = max(alpha, best)
        if beta <= alpha:
            print(f"Pruned at Node[{indx}]: alpha ({alpha}) >= beta ({beta})")
            return best

        best = max(best, tree(dept + 1, indx * 2 + 1, val, height, False, alpha, beta))
        alpha = max(alpha, best)
        if beta <= alpha:
            print(f"Pruned at Node[{indx}]: alpha ({alpha}) >= beta ({beta})")
            return best

        return best

    else:
        best = float('inf')

        best = min(best, tree(dept + 1, indx * 2, val, height, True, alpha, beta))
        beta = min(beta, best)
        if beta <= alpha:
            print(f"Pruned at Node[{indx}]: beta ({beta}) <= alpha ({alpha})")
            return best

        best = min(best, tree(dept + 1, indx * 2 + 1, val, height, True, alpha, beta))
        beta = min(beta, best)
        if beta <= alpha:
            print(f"Pruned at Node[{indx}]: beta ({beta}) <= alpha ({alpha})")
            return best

        return best

val = [1, 2, 3, 4, 5, 6, 7, 8]
print("Minimax with Alpha-Beta Pruning:", tree(0, 0, val, 3, True, -float('inf'), float('inf')))

Post a Comment

0 Comments