3

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

像:

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 局部变量或如何使其正常工作?

4

2 回答 2

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!
于 2010-08-02T23:52:16.957 回答
1

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

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

于 2012-03-01T18:02:45.100 回答