2014-03-24 2 views
1

내가 이해하는 한 Minimax 알고리즘은 가장 간단한 형태로 다음과 같이 작동합니다. 게임 트리를 위쪽으로 이동하고 플레이어의 차례라면 모든 노드의 최대 점수를 현재 노드에 할당하고, 그렇지 않으면 최소값을 지정합니다 점수. 나뭇잎은 경기 결과에 따라 점수가 매겨집니다. 승리를 위해서는 +1, 추첨에는 0, 상실에는 -1을 가정합니다. 마지막으로 점수가 가장 높은 노드로 연결되는 이동을 선택합니다.Minimax : 최종 게임에서 동등한 점수로 무엇을 할 것인가?

물론 전체 게임 트리를 탐색하는 것은 비현실적이므로 경험적 방법이 사용됩니다. 그러나 우리는 게임이 끝날 무렵에 있다고 가정합니다. 그런 다음이 간단한 접근 방식에 몇 가지 문제점을 발견했습니다. 예를 들어, 우리는 체스 플레이어를 재생하는

(흰색 재생)이 위치에 도달했습니다 Chess position, mate in one

그것은 선수가 차례입니다. 그래서 Qg7을 가진 친구에게는 Qg7의 노드가 1이라는 점수를 얻습니다. 그러나 예를 들어, Ke1은 법적 절차이기도합니다. 유일한 대답은 c5이고, Qg7 #은 여전히 ​​사용 가능합니다. Qg7이 1 점을 얻었으므로 c5도 마찬가지이므로 Ke1도 마찬가지입니다.

점수가 1 (Ke1 및 Qg7) 인 최소 두 번의 이동이 있습니다. 알고리즘이 왕의 움직임을 먼저 고려하고 가장 높은 점수를 가진 첫 번째 움직임을 선택한다고 가정 해 봅시다. 즉,이 위치에서 플레이어는 상대방을 장담하는 것이 아니라 상대가 실제로 폰을 여왕과 함께 방해 할 수있을 때까지 무작위로 킹을 움직일 것입니다.

근본적인 문제는 한 장의 체크 메이트 (Qg7)는 두 장의 장군 (Ke1)과 같은 점수를 가지므로 플레이어가 실제로 한 장의 장군을 찾으러 갈 이유가 없다는 것입니다.

이것은 Minimax 알고리즘을 간단히 수정하여 방지 할 수 있습니다. 동일한 점수 인 경우이 점수가있는 위치로의 더 짧은 경로를 선택하십시오. 따라서 한 명의 장례식장이 선호 될 것입니다.

내 질문은 : Minimax 관련 소스에서 이에 대한 언급이 없으므로 Minimax에 대한 오해가 있을까요? 그렇지 않다면 이것을 해결하는 일반적인 방법입니까, 아니면 우수한 방법입니까?

답변

1

나는 미니 맥스를 올바르게 이해하고 있음을 확신합니다.

아마도 내가 할 수있는 일은 minimax 함수의 현재 거리를 단순히 전달하고 그에 따라 wins/losses를 가중하는 것입니다. 빠른 승리 (보이지 않는 상황의 가능성을 줄이기)와 느린 손실 (상대방의 실수를 허용하기)이 일반적으로 선호됩니다. 승리가 1이든 양의 값이든 상관없이 너무 중요하지 않습니다. 여전히 0 또는 -1보다 좋은 것으로 선택됩니다.

승리가 가능한 가장 큰 가치는 추론입니다. 비슷한 것을 할 수 있습니다. 조금씩 늘리거나 줄여서 가중치를 주지만 여전히 다른 모든 비 승자보다 커야합니다.

예를 들어, 폰이 홍보에 가까워지면 그리기가오고 있음을 감지하고 승리하는 움직임을 보일 것입니다. 그러나 그것은 확실히 문제가있는 경우가 될 수있다 MINIMAX 꽤 일반적인 문제이다 (당신을 위해 최악의 결과를 초래 검색 깊이 이상 피할 수없는 움직임의 시퀀스입니다,하지만 가능성이 피할 수 있다면, 그것의

  • 분명히 그렇게하는 것이 더 낫다.)
  • 당신 편에 시간 제약이있다.
  • 당신은 모든 드로우 조건을 만족시키지 못한다.3 반복 위치)
관련 문제