альфа-бета-обрезка в python

В алгоритме альфа-бета-обрезки у меня есть класс, в котором определена функция def getAction(self,gamestate). Я сделал еще 2 функции в 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)-

Мне нужно поставить альфу, бету в функции меня и обоих. Но где я могу определить значения альфа и бета. Если я определяю альфу и бета в def me и def, тогда возникает ошибка, так как глобальное имя alpha отсутствует.

Как мне сделать альфа и бета локальные переменные или Как я могу сделать так, чтобы они работали правильно?


person Shilpa    schedule 02.08.2010    source источник
comment
Вы кроме того, что кто-то будет код для вас?   -  person djondal    schedule 03.08.2010


Ответы (2)


Я предполагаю, что вы хотите определить альфа и бета как атрибут ваших классов.

Вам может понадобиться конструктор класса, который инициализирует ваши переменные.

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!
person djondal    schedule 02.08.2010

Часто альфа-бета-алгоритм реализуется как функция более высокого уровня, которая присваивает начальное значение как альфа, так и бета, а затем передает эти значения рекурсивной (или, альтернативно, нерекурсивной на основе стека) функции поиска.

Приведенное выше решение класса тоже хорошо, хотя я бы, вероятно, добавил метод для сброса альфы и беты, чтобы экземпляр класса не создавался в начале каждого поиска.

person Bill H    schedule 01.03.2012