2009-02-08 4 views
26

카드 게임에서 좋은 컴퓨터 상대를 쓰는 전략은 무엇입니까? 대부분의 카드 게임은 불완전한 정보의 게임이기 때문에 보드 게임으로 할 수있는 것처럼 게임 트리를 매핑하고 트래핑하는 것 자체가 너무 유망하지는 않습니다.좋은 카드 게임 AI 전략이 있습니까?

공개 된 카드가 게임에 표시되면 (공개되는 즉시) 추적하고 특정 이벤트에 확률을 할당 할 수 있습니다 (예 : 상대방이 여전히 클럽 카드 2 장).

누구나이 경험이 있습니까? 링크와 방향은 크게 감사드립니다.

+1

카드 카운팅을 찾을 수 없습니다 -. http://www.mitcardcounting.com/ (그 [MIT 충분]의 경우), 아마도 충분할 것입니다. – new123456

답변

5

확률을 사용하여 설명하는 것은 기본적으로 포커 AI (또는 인간 포커 전문가)의 작동 방식입니다. 독서에 흥미가있는 포커 봇을 만드는 것에 관한 Coding the Wheel에 대한 지속적인 시리즈가있었습니다.

3

또 다른 좋은 읽을 거리는 http://aigamedev.com/입니다. 매우 상세하고 코드 예제에 적용됩니다.

1

구체적 답변 : 어려운 결정 대신에 난이도가 포함 된 카드 그림과 같은 임의의 이벤트로 min-max algorithm을 구현하십시오.

+0

이 링크는 도움이 될 수 있습니다 : https://en.wikipedia.org/wiki/Expectiminimax_tree –

0

상식을 사용하십시오 : 컴퓨터가 인간과 같은 규칙 (논리)으로 게임을하고 인공 지능 메모리의 품질과 같은 매개 변수를 변경하여 난이도를 변경하십시오.

나는 당신이 찾고있는 것과 비교했을 때 간단한 케이스 인 memory game을 구현했지만 꽤 잘 작동했습니다.

3

다시 한번 블로그이지만 흥미로운 부분은 Computer Programming and Magic: The Gathering입니다. 매우 복잡한 프로그래밍으로 인해 주목할만한 것이 없다면 MTG는 3 년 전에 첫 번째 버전의 프로그램을 실제로 완성했기 때문에 카드에 대한 규칙이 있습니다. 수많은 게임 프로젝트가 기획 단계에 머물러 있습니다.

그는 자신의 블로그에서 설명하는 프로젝트가 오픈 소스이므로 흥미로운 점이 있는지 확인할 수 있으며 블로그에 게시하는 데 많은 도움이됩니다.

1

University of Alberta에는 경기 대회에서 전문가와 경쟁하는 Polaris라는 포커 게임 프로그램이 있습니다. 그들의 web site에는 많은 정보가 있습니다.

0

충분한 정보가 없기 때문에 'the'게임 트리를 통과하는 것이 맞지만 몇 가지 잠재적 인 게임 트리를 생성하고 어떤 옵션이 더 나은 결과로 이어질 가능성이 높은지 살펴보십시오 AI가있을거야.

시간이 있다면 가능한 모든 시나리오를 생성 할 수 있지만 현실적으로 카드를 재생할 때는 10 분이 필요하지 않으므로 전체 공간 중 일부만 수행하십시오.

나는 이것을 한 포커 봇을 만들었지 만 괜찮은 게임을 했었지만, 결코 강한 영향을 미치지 않았으므로 위치에 관한 함의를 다루기 전에 관심을 잃었습니다.

+0

귀하의 설명은 "Monte-Carlo Tree Search"기술과 매우 유사합니다. –

0

만약 당신이 가장 효율적인 로봇을 가지고 있지 않다면 논리 언어를 사용할 것입니다. 그리고 더 일반적인 언어를 만드는 것이 천천히 그리고 느리게 진행되지만, 시작이 될 수 있습니다.

핵심 요소는 관심있는 전략을 정의하고 논리 언어로이 전략을 모델링하는 것입니다.

strategy-1 guess the card you think is the most likely; or 

strategy-2 among the cards that are the most likely, guess the card that 

my opponent believes to be the most likely. 

이제 문제는 당신이 해석 할 수있는 공식 언어로 전략을 (당신이 소리를 필요로 정의하는 것입니다 : 당신이 추측 게임에서 생각하는 경우

, 예를 들어, 당신은 두 가지 전략을 가질 수 언어).

일반적으로 이러한 논리의 언어는 최소한 기본 확률을 나타낼 수 있어야합니다. 예를 들어 다음과 같은 형식으로 지정된 언어 : RA 합리적 0 내지 1 읽기 P (c)은> = R 플레이어가 상대 적어도 확률으로 카드 (C)를 가지고 있다고 생각 '이어야 할

A = c | -A | A v A | A -> A | P(A) >= r | P(A) >= P(A) | \forall c . A(c) 

아르 자형.' 전략-2

Guess card C only if holds that 
[\forall C'. P(C) >= P(C')]^[-\forall C''. P'(C'') > P'(C)] 

같다

Guess card C only if holds that 
\forall C'. P(C) >= P(C') . 

같이

는 예를 들어, 전략-1 (P '(c 내 상대 할당 확률 임)) 보인다.

전략은 전략을 만족 활동에 대한 기능은 단순히 가능한 카드를 요구 될 수식 전략에 의해 주어진다 경우

act gameState = take 1 [c : c |= STRATEGY] 

내가 예는 표현 충분히 표현하지로 준이 언어 유형을 숨기는 문제 (예 : Poker, HearthStone과 같은 게임에서 전략이 매우 중요 함). 그 전략을 위해서는 약간의 확장이 필요할 것입니다.

또 다른 일반적인 확장은 동적 연산자에 대한 것이므로 '가장 강한 카드가 패배 한 후에 나는 보드를 쥐고'와 같은 전략을 표현할 수 있습니다.

'어떤 카드가 열려 있는지 추적'에 대한 의견에 귀하의 상대방이 생각한 행동을 고려하지 않는다는 의미에서 제한됩니다. 전략 -2는 고차원 적 신념으로 컴퓨터를 개선하는 방법의 한 예입니다.

짐작 게임의 경우 Ditmarsch에서 Pit Logic이라는 종이를 제안합니다. (http://link.springer.com/article/10.1007/s11229-005-4331-5) (인공 지능을 구현하지 않고 PIT라는 게임 만 표현할 수 있습니다. 비용을 지불 할 가치가 있다고 생각하지 않습니다. 무료로 제공 할 수 있다면, 대신 자신의 논문을 찾을 수 있습니다. 그것은 무료입니다)

내가 마석에 대한 논문을 작성하는 사랑하지만 결코 시간을 :(

관련 문제