python中的alpha beta修剪

时间:2010-08-02 22:16:43

标签: python algorithm alpha pruning

在alpha,beta修剪算法中,  我有一个类,其中定义了函数def getAction(self,gamestate)id。我在def getAction中再做了两个函数

像:

class BAC:
  def you(self,gamestate):
    def me(gamestate,depth,alpha, beta):
    ------
      return v
    def both(gamestate,depth,alpha, beta):
    -------------------
      return v
   return me(gamestate,0,alpha, beta)-

我需要将alpha,beta放在我和两个函数中。但是我在哪里定义alpha和beta值。如果我在def me和def中定义alpha和beta,那么就会出现错误,因为全局名称alpha不存在。

如何制作alpha和beta本地变量或如何才能使其正常工作?

2 个答案:

答案 0 :(得分:1)

我猜你想要将alpha和beta定义为你的类的属性。

您可能需要一个初始化变量的类构造函数。

class BAC:
    def __init__(self):
        self.alpha= 'Hello '
        self.beta= 'World!'
    def me(self):
        print self.alpha + self.beta

或者您可以初始化属性变量,如:

class BAC:
    def me(self,alpha,beta):
        self.alpha = alpha
        self.beta= beta
        print self.alpha + self.beta

如果你想要持久化,你只需要引用类的属性。

如果您选择第一个解决方案:

my_bac = Bac()
print my_bac.alpha + my_bac.beta

输出

Hello World!
Hello World!

答案 1 :(得分:1)

alpha-beta算法通常作为更高级别的函数实现,它将初始值分配给alpha和beta,然后将这些值传递给递归(或者非递归的基于堆栈的)搜索函数。

上面给出的类解决方案也很好,虽然我可能会添加一个方法来重置alpha和beta,这样就不必在每次搜索开始时实例化类实例。