3

アルファ、ベータ プルーニング アルゴリズムでは、関数 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)-

関数 me とその両方にアルファ、ベータを入れる必要があります。しかし、アルファ値とベータ値はどこで定義すればよいでしょうか。def me と def both で alpha と beta を定義すると、グローバル名 alpha が存在しないため、エラーが発生します。

alpha および beta ローカル変数を作成するにはどうすればよいですか、または正しく動作できるようにするにはどうすればよいですか?

4

2 に答える 2

1

多くの場合、アルファ ベータ アルゴリズムは、アルファとベータの両方に初期値を割り当て、これらの値を再帰的 (または非再帰的なスタックベース) 検索関数に渡す高レベル関数として実装されます。

上記のクラス ソリューションも適切ですが、各検索の開始時にクラス インスタンスをインスタンス化する必要がないように、アルファとベータをリセットするメソッドをおそらく追加します。

于 2012-03-01T18:02:45.100 に答える
1

クラスの属性としてアルファとベータを定義する必要があると思います。

変数を初期化するクラス コンストラクターが必要になる場合があります。

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 に答える