2013-05-09 2 views
0

이 게임에는 10x10 보드와 1에서 9까지의 값을 가진 여러 가지 상품이 있습니다. 가장 간단한 상금을 쫓는 간단한 봇과 몇 가지 간단한 봇이 있습니다. 항상 가장 많은 점수를 지닌 상금을 얻습니다. 봇과 상품은 보드에 무작위로 배치됩니다. 작업은 항상 가장 많은 수의 포인트를 모으고 게임에서이기는 또 다른 간단한 AI를 만드는 것입니다.예상대로 봇을 이길 수있는 알고리즘

이 새로운 인공 지능이 항상 게임에서이기도록 할 수있는 상금 포인트와 경품 거리를 선택하는 방법은 무엇입니까? 나는 가까운 상금을 선호한다고 생각했지만 가장 가까운 상금보다 2 크다면 큰 상금으로 가고, 그러나 항상 그렇지는 않습니다.

봇은 봇이 어디에 있는지 알지 못합니다. 한 봇이 한 상금을 위해 8 칸을 움직이면 다른상은 8 칸을 이동하고 그 시간 동안 여러 상을 수거 할 수 있습니다. 모든 봇은 즉시 움직이며 대각선으로 이동할 수 있습니다. 보드에 더 이상 상품이 없으면 게임이 종료됩니다.

+2

이 질문은 너무 애매하고 너무 광범위하게 대답 할 수 있습니다. 이것은 그렇게 권장되지 않습니다. – Renan

+0

게임 규칙에 대해 자세히 알려주십시오. 예를 들어, 봇 A가 8 단계로 먼 상을 가져 간다면, 봇 B가 4 단계로 2 개의 상품을 얻을 수 있다는 것을 의미합니까? 게다가 상금과 봇이 무작위로 배치되기 때문에 어떻게 한 봇이 항상 승리 할 수 ​​있습니까? 2 마리의 봇이 "항상 승리하는 알고리즘"을 사용한다고 상상해보십시오. 우승자와 패자가 있어야합니다 (가끔씩 그릴 경우 제외). – Faraway

+0

(답장하는 대신) 질문을 수정하고 다음 질문에 답하십시오. 모든 로봇이 동시에 움직입니까? 한 셀에서 다른 셀로 이동하는 데 1 단위 시간이 걸립니까? 봇이 직각으로 인접한 4 개의 셀 중 하나 또는 대각선으로 인접한 셀로 이동할 수 있습니까? 당신의 봇이 다른 두 봇의 위치에 대한 정보를 얻을 수 있습니까? –

답변

3

승리를 보장 할 방법이 없습니다. 봇/상품이 무작위로 배치되는 경우 다른 봇보다 먼저 상품을 얻으려는 무작위 배치가 반드시 있어야합니다.

다른 로봇의 정확한 동작을 알고 있기 때문에 주어진 보드에서 앞으로 발생할 모든 움직임을 모델링 할 수 있습니다. 가능한 모든 움직임을 나무와 보드 상태로 나열한 다음 잎을보고 승리 점수를주는 것을 찾으십시오. 즉, 각 분기는 사용자가 이동 한 것이고, 노드는 다른 로봇이 이동하는 것을 포함하여 보드 상태를 나타냅니다. 또한 이것은 2 진 트리가 아니며, 각 노드는 그 방향으로 이동할 수있는 방향에 따라 분기합니다. 실제로 하나의 실제 이동을하기 전에이 트리를 완전히 빌드하므로, 본질적으로 최적 경로를 선택하면 예측 된 결과를 얻게됩니다. 이것은 다른 봇들이 예측 가능한 방식으로 움직이기 때문에 가능합니다.

또한 이동하면서 다른 봇이 예상대로 움직이는지를 디버깅 기능처럼 추가 할 수 있습니다. 시스템 작동 방식에 따라 모든 사람이 동시에 이동하는지 또는 한 번에 하나씩 이동할지에 따라 이동을 결정하기 전에 이동을 볼 수 있습니다. 어느 쪽이든 그것을 할 수 있습니다, 당신은 단지 그들이 어떻게 움직이는 당신의 모델이 정확한지 확인해야합니다.

점수가 더 높지만 다른 봇 중 하나가 다른 봇을 지배하기 때문에 다른 퍽이 남을 수 있습니다. 나는. (you : 11, a : 10, b : 9) 대

아마도 가장 성공할 가능성이 높은 경로는 다른 예를 들어 봇 (bot)은 가장 가까운 상을 당신에게 더 가까이 붙잡을 때 탐욕스러운 봇을 향해 느슨한 움직임을 유발합니다. 그리고 그렇게하기에 충분한 움직임이 있다면 길을 잃을 때도 상을 줄 것입니다. 트리를 생성하고 최적의 일련의 동작을 찾을 때 암시 적으로 발생하기 때문에이 동작을 코딩 할 필요가 없습니다.

+1

처음에는 누가 상금을 받는지 제외하고는 봇이 실제로 서로 영향을 미치지 않는 것처럼 들립니다.그래서 모든 가능한 움직임을 열거하기보다는 다음에 갈 상금의 다른 선택을 열거하면됩니다. 이렇게하면 검색 트리의 크기를 크게 줄일 수 있습니다 * 9 개 밖에 없습니다! = 362880의 결과를 조사 할 필요가 있습니다. 검색 공간을 잘라내어 (자르거나 잃어 버렸을 때 하위 트리 검색을 중단하십시오) –

+0

@ BlueRaja-DannyPflughoeft 다른 사람을 고려하지 않으면 봇 (bot)이 움직이면 한때 상금이 있었지만 다른 봇이 당신 앞에서 잡아 먹은 사각형으로 이동하는 과정을 계획하게됩니다. 그들이 예측할 수있는 방식으로 움직인다는 사실은이기는 열쇠입니다. 탐색 할 수없는 위치에있는 하위 트리에서 중지하여 검색 트리를 줄일 수 있습니다. 당신과 최고 득점자의 차이는 보드에 남아있는 상금보다 큽니다. – AaronLS

+0

검색 트리는 다른 로봇에 의해 포착 된 경품을 고려하여 모든 단일 이동 후에 다시 작성되고 분석되어야합니다. 매번 전체 트리를 만드는 대신, 이것을 고려하여 부분 트리 만 생성하는 것이 더 나을 것이라고 생각합니다. – fotg

관련 문제