Python中的Alpha Beta剪枝

3
在alpha-beta剪枝算法中,我有一个类,在其中定义了一个函数def getAction(self, gamestate)。我在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)-

我需要在函数 me 和 both 中将 alpha 和 beta 放入,但我该在哪里定义 alpha 和 beta 的值呢?如果我在 def me 和 def both 中定义 alpha 和 beta,则会出现全局名称 alpha 不存在的错误。
如何使 alpha 和 beta 成为局部变量或如何使其能够正确工作?

你期望有人替你编写代码吗? - djondal
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!

1
通常 alpha-beta 算法被实现为一个更高级别的函数,该函数将初始值分配给 alpha 和 beta,然后将这些值传递给递归(或交替的基于堆栈的非递归)搜索函数。
上面给出的类解决方案也很好,尽管我可能会添加一个重置 alpha 和 beta 的方法,以便不必在每次搜索开始时实例化类实例。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接