게임 트리
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
게임 트리는 게임 이론에서 사용되는 개념으로, 게임의 진행 상황과 가능한 모든 수를 시각적으로 표현한 것이다. 게임 트리는 뿌리, 가지, 노드 등으로 구성되며, 각 노드는 게임의 상태를, 각 가지는 플레이어의 선택을 나타낸다. 완전 게임 트리는 모든 가능한 게임 상황을 포함하며, 이를 통해 게임을 해결하고 최적의 전략을 찾을 수 있다. 인공지능 분야에서 게임 트리는 게임의 수를 탐색하고 최적의 수를 선택하는 데 활용되며, 체스와 같은 복잡한 게임에서는 부분 게임 트리를 탐색한다. 게임 트리의 크기는 게임의 복잡성을 나타내는 척도로 사용된다.
더 읽어볼만한 페이지
- 조합론적 게임 이론 - 젠가
젠가는 54개의 나무 블록으로 타워를 쌓아 블록을 제거하고 위에 올려 타워를 무너뜨리지 않고 버티는 게임이며, 마지막으로 턴을 완료한 플레이어가 승리한다. - 조합론적 게임 이론 - 게임 복잡도
게임 복잡도는 상태 공간, 게임 트리 크기, 결정 복잡성, 게임 트리 복잡도, 계산 복잡성과 같은 척도를 사용하여 게임의 난이도와 경우의 수를 정량적으로 측정하는 개념이다. - 게임 이론 - 대연정
대연정은 의원내각제 또는 이원집정부제 국가에서 대립하는 거대 정당들이 국가적 위기 극복, 정치적 봉쇄, 또는 비례대표제 하의 연립 내각 구성의 필요에 따라 연합하는 정부 형태로, 정치적 안정과 국민 통합에 기여할 수 있지만 유권자 선택권 제한 및 소수 정당 약진의 우려도 있다. - 게임 이론 - 완전 정보
완전 정보 게임은 게임 이론에서 모든 플레이어가 게임의 모든 정보를 공유하는 게임을 의미하며, 체스, 틱택토, 오목 등이 이에 해당한다. - 수학 - 회귀 분석
회귀 분석은 종속 변수와 하나 이상의 독립 변수 간의 관계를 모델링하고 분석하는 통계적 기법으로, 최소 제곱법 개발 이후 골턴의 연구로 '회귀' 용어가 도입되어 다양한 분야에서 예측 및 인과 관계 분석에 활용된다. - 수학 - 수학적 최적화
수학적 최적화는 주어진 집합에서 실수 또는 정수 변수를 갖는 함수의 최댓값이나 최솟값을 찾는 문제로, 변수 종류, 제약 조건, 목적 함수 개수에 따라 다양한 분야로 나뉘며 여러 학문 분야에서 활용된다.
게임 트리 | |
---|---|
지도 | |
기본 정보 | |
유형 | 그래프 이론 |
분류 | 트리 |
용도 | 결정 이론, 인공지능, 게임 이론 |
그래프 구조 | |
노드 | 게임 상태 결정 |
에지 | 행동 |
루트 노드 | 시작 상태 |
리프 노드 | 게임 종료 상태 |
게임 이론 | |
적용 분야 | 조합 게임 이론 |
표현 | 모든 가능한 게임 상태 |
분석 | 게임의 복잡도 분석 |
특징 | 유향 그래프 순환 없음 단일 시작 노드 리프 노드: 최종 게임 상태 |
게임 종류 | 체스 바둑 틱택토 장기 오목 |
관련 개념 | |
미니맥스 알고리즘 | 게임 트리 탐색 알고리즘 |
알파-베타 가지치기 | 미니맥스 알고리즘 최적화 기법 |
몬테카를로 트리 탐색 | 게임 트리 탐색 알고리즘 |
2. 용어
- 뿌리는 게임이 시작되는 점을 말한다.
- 가지(branch)는 경기자가 선택하는 각각의 의사결정을 나타내며, 게임 트리에서 실선으로 표시한다.
- 노드(node) 또는 마디는 경기자 중 누군가가 의사결정을 해야 하는 상태 또는 의사결정을 마치고 보수가 주어지는 상태를 표현한다. 게임 트리에서 점으로 표시된다.
- 선도마디(precedent node)는 어느 한 가지가 출발하는 마디를 말한다.[1]
3. 게임 트리의 특징
- 선도마디와 연결되는 가지는 단 하나이다.
- 어느 한 가지의 출발 마디와 도착 마디가 같을 수 없다. 만약 출발 마디와 도착 마디가 같다면 의사결정을 할 것인지 의사결정을 한 결과에 도달한 것인지 구분할 수 없게 된다.
- 임의의 마디에서 시간을 거슬러 올라가면 유일한 게임의 뿌리에 도달하게 된다.
게임 트리는 게임에서 승리하기 위해 플레이어가 취하는 행동을 결정하는 대결 게임을 분석하는 기법으로 생각할 수 있다. 게임 이론에서 게임 트리는 노드가 게임의 위치(예: 보드 게임에서 말의 배열)이고 에지가 이동(예: 보드의 한 위치에서 다른 위치로 말을 이동)인 유향 그래프이다.[1]
4. 게임 트리 이해
게임 트리는 대결 게임을 분석하여 플레이어가 승리하기 위해 취하는 행동을 결정하는 기법이다. 게임 이론에서 게임 트리는 노드가 게임의 위치(예: 보드 게임에서 말의 배열)이고 에지가 이동(예: 보드의 한 위치에서 다른 위치로 말을 이동)인 유향 그래프이다.[1]
확장형 게임 표현에서 얻은 트리와 동일한, 초기 위치에서 시작하여 각 위치에서 가능한 모든 이동을 포함하는 게임 트리를 '''완전 게임 트리'''라고 한다.
게임 트리는 인공 지능에서 중요한데, 체스와 같은 더 큰 게임의 완전 게임 트리는 탐색하기에 너무 크기 때문이다. 그래서 체스 프로그램은 '''부분 게임 트리'''를 탐색한다. 일반적으로 현재 위치에서 사용 가능한 시간 내에 탐색할 수 있는 수만큼의 수를 탐색한다. "병리적" 게임 트리의 경우[3]를 제외하면 탐색 깊이를 늘릴수록 최상의 수를 선택할 확률이 높아진다. 게임에서 최상의 수를 선택하는 방법은 수많은 트리 탐색 알고리즘 중 하나를 사용하여 게임 트리를 탐색하고, 트리를 가지치기하는 미니맥스와 같은 규칙을 결합하는 것이다.
2인 게임은 AND-OR 트리로도 나타낼 수 있는데, 선공 플레이어가 이기려면 후공 플레이어의 모든 수에 대해 승리하는 수가 존재해야 한다. 이는 AND-OR 트리에서 선공 플레이어의 대안적인 수를 나타내는 데 논리합을 사용하고 후공 플레이어의 모든 수를 나타내는 데 논리곱을 사용하여 표현된다.
완전 게임 트리가 있다면 게임을 풀 수 있다. 즉, 그 해법에 따라 두면 지지 않는다는 것을 보장할 수 있다. 그 알고리즘은 다음과 같이 재귀적으로 설명할 수 있다.
# 최종적인 판면에서 플레이어 1이 이기는 판면과 플레이어 2가 이기는 판면을 색칠하고, 비기는 판면은 세 번째 색으로 한다.
# 한 수 전(판면)을 본다. 그 레벨의 판면이 되는 수를 자신의 수로 한다. 그때 상대가 이기는 판면이 자식 노드로 하나라도 존재하는 경우, 이 노드를 상대의 색으로 칠한다. 바로 아래 자식 노드의 색이 모두 같다면 이 노드도 같은 색으로 칠한다. 그렇지 않으면 비기는 색으로 칠한다.
# 이상을 순차적으로 위쪽으로 반복하여 모든 노드를 색칠한다. 루트 노드가 어떤 색이 되느냐에 따라 이 게임의 성질이 결정된다.
오른쪽 그림은 위의 알고리즘에 따라 색칠한 어떤 게임의 게임 트리를 나타낸 것이다.
4. 1. 완전 게임 트리의 구성 요소
완전 게임은 게임 이론에서 게임의 규범이다. 이는 다음과 같은 여러 중요한 측면을 명확하게 표현할 수 있다.[2]- 이해관계자가 취할 수 있는 행동의 순서
- 각 의사결정 지점에서의 선택
- 각 이해관계자가 의사결정을 내릴 때 다른 이해관계자가 취한 행동에 대한 정보
- 모든 가능한 게임 결과의 이점
4. 2. 예시: 틱택토
이 그림은 틱택토 게임 트리의 처음 두 레벨(또는 '수')을 보여준다. 위치의 회전과 반사는 동일하므로, 선공 플레이어는 중앙, 가장자리, 모서리의 세 가지 이동 선택권을 갖는다. 후공 플레이어는 선공 플레이어가 중앙에 두었다면 두 가지 선택권을, 그렇지 않다면 다섯 가지 선택권을 갖는다.
완전 게임 트리의 리프 노드 수는 게임이 진행될 수 있는 가능한 모든 서로 다른 방법의 수이다. 예를 들어, 틱택토의 게임 트리는 255,168개의 리프 노드를 갖는다.[1]
5. 게임 트리 해결
완전한 게임 트리가 있다면 게임을 "해결"할 수 있다. 즉, 첫 번째 또는 두 번째 플레이어가 어떤 경로로 게임을 진행해야 하는지 알 수 있고, 그 경로를 따르면 최소한 지지 않는다는 것을 보장할 수 있다.[4]
완전 게임 트리가 주어지면 게임을 푸는 방법은 다음과 같다.
# 최종적인 판면에서 플레이어 1이 이기는 판면은 파란색, 플레이어 2가 이기는 판면은 빨간색, 비기는 판면은 회색으로 칠한다.
# 한 수 전(판면)을 보고, 그 레벨의 판면이 되는 수를 자신의 수로 한다. 상대가 이기는 판면이 자식 노드로 하나라도 존재하면, 이 노드를 상대의 색으로 칠한다. 바로 아래 자식 노드의 색이 모두 같다면 이 노드도 같은 색으로 칠한다. 그렇지 않으면 비기는 색으로 칠한다.
# 위 과정을 순차적으로 반복하여 모든 노드를 색칠한다. 루트 노드의 색깔에 따라 이 게임의 성질이 결정된다.
오른쪽 그림은 위의 알고리즘에 따라 색칠한 게임 트리를 나타낸 것이다.
많은 게임에서, 동일한 플레이어에게 유리한 다른 수가 있다면 특정 수를 분석할 필요가 없기 때문에, 게임 트리의 일부만 사용하여 게임을 해결하는 것이 가능하다. (예: 알파-베타 가지치기)
5. 1. 결정적 알고리즘 (역진귀납법/역행 분석)
완전한 게임 트리가 있다면 게임을 "해결"할 수 있다. 즉, 첫 번째 또는 두 번째 플레이어가 따라갈 수 있는 수순을 찾아 그 플레이어에게 최상의 결과(일반적으로 승리 또는 무승부)를 보장할 수 있다. 결정적 알고리즘(일반적으로 역진귀납법 또는 역행 분석이라고 함)은 다음과 같이 재귀적으로 설명할 수 있다.[4]
# 게임 트리의 마지막 수를 플레이어 1의 승리는 한 가지 색(다이어그램에서는 파란색), 플레이어 2의 승리는 다른 색(다이어그램에서는 빨간색), 무승부는 세 번째 색(다이어그램에서는 회색)으로 칠한다.
# 그다음 수를 살펴본다. 현재 플레이어와 반대되는 색으로 칠해진 노드가 있다면, 이 노드도 해당 플레이어의 색으로 칠한다. 바로 아래의 모든 노드가 같은 플레이어의 색으로 칠해져 있다면, 이 노드도 같은 플레이어의 색으로 칠한다. 그렇지 않으면 이 노드를 무승부 색으로 칠한다.
# 모든 노드가 색칠될 때까지 위쪽으로 이동하면서 각 수에 대해 이 과정을 반복한다. 루트 노드의 색은 게임의 성격을 결정한다.
위 다이어그램은 위 알고리즘을 사용하여 색칠된 임의 게임의 게임 트리를 보여준다.
많은 게임에서 동일한 플레이어에게 더 유리한 다른 수가 있다면 특정 수를 분석할 필요가 없기 때문에(예: 알파-베타 가지치기는 많은 결정적 게임에서 사용될 수 있음) 게임 트리의 일부만 사용하여 게임을 해결하는 것이 일반적으로 가능하다.
5. 2. 난수화 알고리즘
난수화 알고리즘은 게임 트리를 푸는 데 사용될 수 있으며, 속도와 실용성이라는 두 가지 장점을 가진다. 게임 트리를 푸는 결정적 버전은 O(n)으로 수행될 수 있는 반면, 난수화 알고리즘은 게임 트리의 모든 노드가 차수 2를 갖는 경우 θ(n0.792)의 예상 실행 시간을 갖는다. 또한, 난수화 알고리즘은 풀이 순서가 무작위이기 때문에 "적을 교란"하여 시스템을 이길 수 없도록 하는 실용적인 측면이 있다.[5]다음은 난수화된 게임 트리 해결 알고리즘의 구현이다.
```python
def gt_eval_rand(u) -> bool:
"""이 노드가 승리로 평가되는 경우 True를 반환하고, 그렇지 않으면 False를 반환합니다."""
if u.leaf:
return u.win
else:
random_children = (gt_eval_rand(child) for child in random_order(u.children))
if u.op == "OR":
return any(random_children)
if u.op == "AND":
return all(random_children)
```
이 알고리즘은 단락 회로의 아이디어를 활용한다. 루트 노드가 "OR" 연산자로 간주되는 경우, 하나의 True가 발견되면 루트는 True로 분류된다. 반대로, 루트 노드가 "AND" 연산자로 간주되는 경우, 하나의 False가 발견되면 루트는 False로 분류된다.[6]
6. 게임 트리와 인공지능
게임 트리는 인공 지능에서 중요한데, 게임에서 최상의 수를 선택하는 한 가지 방법이 여러 트리 탐색 알고리즘 중 하나를 사용하여 게임 트리를 탐색하고, 트리를 가지치기하는 미니맥스와 같은 규칙을 결합하는 것이기 때문이다.[1] 체스와 같은 복잡한 게임의 완전 게임 트리는 탐색하기 어렵기 때문에, 체스 프로그램은 부분 게임 트리를 탐색한다. 일반적으로 현재 위치에서 사용 가능한 시간 내에 탐색할 수 있는 수만큼의 수를 탐색한다. "병리적" 게임 트리의 경우[3]를 제외하고는 탐색 깊이(탐색된 수의 개수)를 늘리면 일반적으로 최상의 수를 선택할 확률이 높아진다.
2인 게임은 AND-OR 트리로도 나타낼 수 있다. 선공 플레이어가 게임에서 이기려면 후공 플레이어의 모든 수에 대해 승리하는 수가 존재해야 한다. 이는 AND-OR 트리에서 선공 플레이어의 대안적인 수를 나타내는 데 논리합을 사용하고 후공 플레이어의 모든 수를 나타내는 데 논리곱을 사용하여 표현된다.
7. 게임 복잡도
완전한 게임 트리가 있다면 게임을 "해결"할 수 있다. 즉, 첫 번째 또는 두 번째 플레이어가 따라갈 수 있는 수순을 찾아 그 플레이어에게 최상의 결과(일반적으로 승리 또는 무승부)를 보장할 수 있다. 결정적 알고리즘(일반적으로 역진귀납법 또는 역행 분석이라고 함)은 다음과 같이 재귀적으로 설명할 수 있다.
# 게임 트리의 마지막 수를 플레이어 1의 승리는 한 가지 색(다이어그램에서는 파란색), 플레이어 2의 승리는 다른 색(다이어그램에서는 빨간색), 무승부는 세 번째 색(다이어그램에서는 회색)으로 칠한다.
# 그다음 수를 살펴본다. 현재 플레이어와 반대되는 색으로 칠해진 노드가 있다면, 이 노드도 해당 플레이어의 색으로 칠한다. 바로 아래의 모든 노드가 같은 플레이어의 색으로 칠해져 있다면, 이 노드도 같은 플레이어의 색으로 칠한다. 그렇지 않으면 이 노드를 무승부 색으로 칠한다.
# 모든 노드가 색칠될 때까지 위쪽으로 이동하면서 각 수에 대해 이 과정을 반복한다. 루트 노드의 색은 게임의 성격을 결정한다.
많은 게임에서 동일한 플레이어에게 더 유리한 다른 수가 있다면 특정 수를 분석할 필요가 없기 때문에(예: 알파-베타 가지치기는 많은 결정적 게임에서 사용될 수 있음) 게임 트리의 일부만 사용하여 게임을 해결하는 것이 일반적으로 가능하다.
게임을 해결하는 데 사용할 수 있는 모든 하위 트리는 '''결정 트리'''로 알려져 있으며, 다양한 형태의 결정 트리 크기는 게임 복잡도의 척도로 사용된다.[4]
참조
[1]
논문
Avoiding game-tree pathology in 2-player adversarial search
https://onlinelibrar[...]
2018
[2]
논문
A novel optimization model based on game tree for multi-energy conversion systems
https://www.scienced[...]
2018-05-01
[3]
논문
An investigation of the causes of pathology in games
1982
[4]
서적
Searching for Solutions in Games and Artificial Intelligence
http://fragrieu.free[...]
Ph.D. Thesis, University of Limburg, Maastricht, The Netherlands
1994
[5]
서적
SI486D: Randomness in Computing, Game Trees Unit
https://web.archive.[...]
United States Naval Academy, Computer Science Department
2013-04-29
[6]
논문
Review of Kalah Game Research and the Proposition of a Novel Heuristic–Deterministic Algorithm Compared to Tree-Search Solutions and Human Decision-Making
2020-09
[7]
서적
게임이론: 전략과 정보의 경제학
박영사
2018
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com