나는 체커의 응용 프로그램을 구축 중입니다.Minimax에 어떤 유형의 트리를 사용해야합니까?
나는 인공 지능을 구축하기 시작했으며 minimax에 관해 많이 읽었습니다.
나는 일반적으로 최소 최대 게임 나무에서
나는 체커의 응용 프로그램을 구축 중입니다.Minimax에 어떤 유형의 트리를 사용해야합니까?
나는 인공 지능을 구축하기 시작했으며 minimax에 관해 많이 읽었습니다.
나는 일반적으로 최소 최대 게임 나무에서
간단하다 (내가 자바 프로그래밍 해요)은 "게임 트리"를 구축하는 데 사용해야하는 나무의 종류 내가 이해할 수 없었다 뭔가가있다 : 각 노드 게임의 상태를 나타내며 해당 상태에서 허용 된 모든 동작을 나타내는 모든 하위 노드의 모음을 포함합니다.
class Node {
private Board state;
private Map<Move, Node> children;
}
어떻게 사용해야하는지 잘 모르겠습니다. 왜'지도
'노드'는 잠재적 인 재생 상태를 나타냅니다. '이동 '은 그 상태에서의 잠재적 인 이동을 나타냅니다. '어린이'지도는 잠재적 인 모든 움직임을 한 주에서 다른 주로 매핑합니다. 따라서 체스에서 국가가 굶주림을 나타내는 위치에 있다면, '어린이'는 18 건의 합법적 인 첫 번째 움직임을 그 움직임 이후의 상태로 매핑합니다. – sprinter
계산할 때 필요한 상태를 저장할 수 있으므로 많은 경우 (대부분의 경우)에는 minimax를 구현하기 위해 이와 같은 트리가 실제로 필요하지 않습니다. 다양한 자습서에는 이와 같은 코드 예제가 많이 있습니다. – sprinter
MINIMAX 알고리즘 명시 적 게임 트리를 인코딩하지 않고 구현 될 수있다 :
여기 가능한 구현이다. 각 재귀 단계에서 이동은 실제로 게임 게시판의 일부 표현에서 수행 된 다음 재검토하여 다시 평가를 호출하고 평가 후에 평가할 이동을 취소합니다. 이 접근법은 게임 트리의 노드 만이 명시 적으로 표현되기 때문에보다 메모리 효율적입니다. 이 접근법에서, 호출 스택과 게임 보드 표현은 함께 게임 트리에 대한 노드 반복자로 해석 될 수 있습니다.
이진 나무, 2-3 나무 및 힙 나무와 달리 다른 나무와 달리 미니 맥 게임 트리의 노드는 게임 상황에 따라 여러 개의 자식을 가질 수 있습니다. 이 트리는 여러 자식이있는 단일 루트 노드로 구성되며 결과에 따라 여러 자식을 다시 가질 수 있습니다. 이것을 그래픽으로 지원합니다. http://commons.wikimedia.org/wiki/File:Plminmax.gif –
감사합니다. 자바의 API에서이 트리의 이름은 무엇입니까? 또는이 나무의 수업을 직접 만들어야합니까? – nivik
직접 나무를 만드는 것이 좋습니다. 나무가 실제로 어떻게 작동하는지, 물마루를 통과하는 방법에 대해 더 많은 통찰력을 줄 것입니다. –