답변:
tl; dr :
이 알고리즘 중 어느 것도 현대 작업에 실용적이지는 않지만 교육적으로 시작하기에 좋은 곳입니다.
베어 미니 맥스 검색보다 항상 알파-베타 프 루닝을 사용하는 것이 좋습니다.
유용한 휴리스틱을 만들 수있는 경우 휴리스틱 가이드 검색을 사용하는 것이 좋습니다. 유용한 휴리스틱을 만들려면 일반적으로 많은 도메인 지식이 필요합니다.
좋은 휴리스틱이없고 계산 리소스가 제한되어 있고 실수가 실제 결과보다 크지 않은 경우에는 Monte Carlo Tree 검색을 사용하는 것이 좋습니다.
자세한 내용은:
minimax 검색에서 우리는 매우 영리하려고하지 않습니다. 우리는 단지 표준 동적 프로그래밍 접근법을 사용합니다. 게임의 끝이 가까워지면 차이 이동의 가치를 쉽게 알 수 있습니다 (게임이 다음 이동으로 끝날 것이기 때문에 훨씬 앞서 볼 필요는 없습니다). 마찬가지로, 게임의 마지막 이동에서 상대방이 무엇을할지 알면 마지막 두 번째 이동에서 어떻게해야하는지 쉽게 알 수 있습니다. 효과적으로 우리는 두 번째 마지막 움직임을 짧은 게임의 마지막 움직임으로 취급 할 수 있습니다. 그런 다음이 과정을 반복 할 수 있습니다. 이 접근법을 사용하는 것은 표준 확장형 게임에서 최고의 전략을 밝히는 것이 확실하지만, 가능한 모든 움직임을 고려해야합니다. 이는 가장 단순한 게임 이외의 모든 게임에는 불가능합니다.
알파 베타 프 루닝은 Minimax 검색을 엄격히 개선합니다. 일부 동작은 다른 동작보다 분명히 나쁘다는 사실을 이용합니다. 예를 들어, 체스에서, 나는 당신이 그 입장에서 다른 일을 할 수 있다고해도 나를 당신을 장군으로 데려 갈 기회 를 줄 어떤 움직임도 고려할 필요가 없습니다 . 일단 이사가 패배로 이어질 수 있다는 것을 알게되면, 그 시점에서 다른 일이 일어날 지 생각하지 않을 것입니다. 나는 다른 것들을 보러 갈 것이다. 이 알고리즘은 정확한 결과를 도출 할 수있을뿐만 아니라 더 빠르지 만 여전히 대부분의 움직임을 고려해야합니다.
이러한 종류의 게임을 정확하게 해결하는 데 드는 극도의 계산 비용을 해결할 수있는 두 가지 일반적인 방법이 있습니다.
휴리스틱 사용 (A * 검색은 교육학 목적으로 일반적인 알고리즘이지만 정지 검색은 2 인 게임에서 비슷한 아이디어입니다). 이것은 단지 게임 상태의 가치를 추정 하는 함수입니다 . 게임에서 모든 움직임을 고려하는 대신, 유한 한 거리로의 움직임을 고려한 다음 휴리스틱의 값을 사용하여 도달 한 상태의 값을 판단 할 수 있습니다. 휴리스틱이 일관된 경우 (본질적으로 항상 상태의 품질을 과대 평가 하는 경우 ) 올바른 답을 얻을 수 있지만 실제로는 속도가 크게 향상됩니다.
롤아웃을 사용하십시오 (예 : Monte Carlo Tree Search). 기본적으로 모든 움직임을 고려하는 대신 무작위로 행동하는 플레이어간에 수천 개의 시뮬레이션 게임을 실행하십시오 (가능한 모든 움직임을 고려하는 것보다 빠릅니다). 시작하는 게임의 평균 승률과 동일한 상태에 값을 지정하십시오. 정답을 얻지 못할 수도 있지만 일부 게임에서는 안정적으로 작동합니다. 종종 자체적으로 사용되는 것이 아니라보다 정확한 기술의 확장으로 사용됩니다.
NB이 세 가지 알고리즘 만 선택한 이유는 알고리즘을 이해하는 데 시간이 걸리기 때문입니다. 약간의 연구를 통해 이러한 알고리즘이 기본적으로 minimax 알고리즘으로 짜여져 있음을 발견했습니다. 제가 이해할 수 있다면 다른 두 곳은 제자리에있게됩니다.
이러한 맥락에서 Minimax로 시작하는 것이 좋습니다 . 세 가지 알고리즘 중 Minimax가 가장 이해하기 쉽습니다.
다른 답변에서 언급했듯이 Alpha-Beta 는 Minimax보다 엄격하게 개선되었습니다. Minimax는 기본적으로 Alpha-Beta 구현의 일부이며, Alpha-Beta를 잘 이해하려면 Minimax를 잘 이해해야합니다. Minimax를 이해하고 구현 한 후 시간이 남은 경우 나중에 Alpha-Beta로 이동하여 Minimax 위에 구축하는 것이 좋습니다. Minimax를 아직 이해하지 못하면 Alpha-Beta로 시작하는 것이 실제로 의미가 없습니다.
몬테카를로 트리 검색 은 아마도 좀 더 발전하고 더 깊이 이해하기에는 더 복잡 할 것입니다. 지난 10여 년 동안 MCTS는 실제로 다른 두 개보다 훨씬 인기가 높아 지므로 MCTS를 이해하는 것이 더 "유용"할 수 있습니다.
Minimax와 MCTS 사이의 연결은 Minimax와 Alpha-Beta 사이의 연결보다 직접 / 명백하지 않지만, 최소한 개념적 수준에서는 연결이 있습니다. MCTS에 뛰어 들기 전에 Minimax를 먼저 잘 이해하는 것이 여전히 유익하다고 주장합니다 . 특히, Minimax와 그 결점 / 약점을 이해하면 유용한 컨텍스트를 제공 할 수 있고 MCTS가 왜 "필요한"/ 인기가되었는지 이해할 수 있습니다.
결론적으로, 내 의견으로는 :