2010-08-02 5 views
2

알파 베타 전정 알고리즘에서 나는 함수 정의 getAction (self, gamestate) id가 정의 된 클래스가 있습니다.파이썬에서 알파 베타 전정

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)- 

내가 기능에 나와 모두 알파, 베타를 둘 필요가 : 나는

처럼 데프 getAction 2 개 기능을했다. 그러나 알파와 베타 값은 어디에서 정의해야합니까? 알파와 베타를 def me와 def에서 모두 정의하면 둘 다 전역 이름 알파가 없으므로 오류가 발생합니다.

어떻게 알파 및 베타 로컬 변수를 만들 수 있습니까? 또는 어떻게 올바르게 작동시킬 수 있습니까?

+0

누군가 당신을위한 코드가 될 것입니까? – djondal

답변

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! 
1

것 베타를 호출 한 다음이 값을 재귀 적 (또는 재귀 적으로 스택 기반 검색) 검색 함수에 전달합니다.

위의 클래스 솔루션도 좋지만, 알파 인스턴스와 베타 인스턴스를 다시 설정하여 클래스 인스턴스를 각 검색을 시작할 때 인스턴스화 할 필요가 없도록 할 수 있습니다.