•

Check out our Community Blogs Register and join over 40,000 other developers!

### Popular Tags      # Error in beta yield in alphabeta algorithm

ai alphabeta pruning

This topic has been archived. This means that you cannot reply to this topic.
No replies to this topic

### #1 Zeflonex

Zeflonex

Posted 02 May 2017 - 04:59 AM

The beta returned is not the correct one, i think it's an error in the modulo and compare section in the code, but i can not pinpoint it exactly.

```tree = [[[5, 1, 2], [8, -8, -9]], [[9, 4, 5], [-3, 4, 3]]]
root = 0
pruned = 0

def children(branch, depth, alpha, beta):
global tree
global root
global pruned
i = 0
for child in branch:
if type(child) is list:
(nalpha, nbeta) = children(child, depth + 1, alpha, beta)
if depth % 2 == 1:
beta = nalpha if nalpha < beta else beta
else:
alpha = nbeta if nbeta > alpha else alpha
branch[i] = alpha if depth % 2 == 0 else beta
i += 1
else:
if depth % 2 == 0 and alpha < child:
alpha = child
if depth % 2 == 1 and beta > child:
beta = child
if alpha >= beta:
pruned += 1
break
if depth == root:
tree = alpha if root == 0 else beta
return (alpha, beta)

def alphabeta(in_tree=tree, start=root, lower=-15, upper=15):
global tree
global pruned
global root

(alpha, beta) = children(tree, start, lower, upper)

if __name__ == "__main__":
print ("(alpha, beta): ", alpha, beta)
print ("Result: ", tree)
print ("Times pruned: ", pruned)

return (alpha, beta, tree, pruned)

if __name__ == "__main__":
alphabeta()
```

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download 