[인공지능] Min-Max Algorithm 요약

2023. 10. 25. 20:46·Study/인공지능

Min-Max 알고리즘은 두 명의 플레이어가 참여하는 게임에서 적용된다.

예시: 체스, 바둑, 틱택토 등과 같은 게임

두 명의 플레이어 게임의 특징

  • 논리 게임: 게임은 규칙과 약속의 집합으로 설명이 가능하다.
  • 완전 정보 게임: 게임의 특정 시점에서 가능한 다음 움직임을 알 수 있다.

Min-max Algorithm은

  • 깊이 우선: 현재 게임 위치에서 시작하여 종료 게임 위치까지 이어진다.
  • 최종 게임 위치는 Max 플레이어의 관점에서 평가된다.
  • 트리의 내부 노드 값은 하향식으로 평가된 값으로 채워진다.
  • Max 플레이어에 속하는 노드는 자식 노드 중 최대 값을 받는다.
  • Min 플레이어에 속하는 노드는 자식 노드 중 최소 값을 받는다.
  • Max 플레이어는 마지막에 가장 높은 가치를 갖는 움직임을 선택하려고 노력한다.
  • Min 플레이어는 자신에게 유리한 움직임을 선택하여 Max의 결과를 최소화하려고 노력한다.
  • 미래를 미리 보는 시점이 더 길수록 게임이 더 좋아진다.

 

짧은 시간 내에 전체 검색 트리를 갖는 것은 불가능하다.

  • 기본적인 최적화 방법 중 하나는 검색 트리의 깊이를 제한하는 것
  • 그리고 평가 함수를 사용하는 것
  • 현재 게임 위치를 어떤 플레이어의 관점에서 평가하는 것
  • 현재 게임 위치가 게임을 종료하는 데 어떻게 도움이 될 수 있는지 계산하는 것
  • 이 함수는 일부 휴리스틱을 고려해야 한다.

Alpha-beta Cutoff(Pruning)

 

알파(Alpha) 값은 가장 큰 MAX 값 보유

베타(Beta) 값은 가장 작은 MIN 값 보유

 

Max 레벨(내 차례)에서,

  • 각 자식 경로를 평가하기 전에 이전 경로의 반환 값과 베타 값과 비교
  • 값이 베타 값보다 큰 경우 현재 노드의 검색을 중단
  • 아래에서 위로 간다고 생각하자. 현재 나는 Max고 자신보다 위에 있는 min의 베타 값보다 큰 알파 값을 가지고 있다고 치자. 그렇다면 위의 min은 나 자신(max)의 값을 택하지 않을 것이다.(Alpha cutoff)

Min 레벨(상대방 차례)에서,

  • 각 자식 경로를 평가하기 전에 이전 경로의 반환 값과 알파 값과 비교
  • 값이 알파 값보다 작은 경우 현재 노드의 검색을 중단
  • 아래에서 위로 간다고 생각하자. 현재 나는 min이고 자신보다 위에 있는 max의 알파 값보다 작은 min 값을 가지고 있다고 치자. 그렇다면 위의 max는 나 자신(min)의 값을 택하지 않을 것이다.(Beta cutoff)

Alpha-Beta cutoff 예시

세 군데에서 alpha-beta cutoff가 일어났는데, 왼쪽부터 하나씩 들여다보자.

 

왼쪽 아래의 5를 탐색하기 전

  1. 만약 4보다 높은 수가 나오면?
  • 상대방은 4를 택한다.
  1. 만약 4보다 낮은 수가 나오면?
  • 상대방은 4보다 낮은 수를 택하겠지만 나는 5를 선택한다. 그래서 더 볼 필요가 없으므로 cutoff가 일어난다.

(그리고 알파 값 5가 베타 값 4보다 크므로 alpha cut off가 일어난다고 생각할 수 있다.)

 

가운데 아래의 9를 탐색하기 전

  1. 만약 6보다 높은 수가 나오면?
  • 상대방은 6을 택한다.
  1. 만약 6보다 낮은 수가 나오면?
  • 상대방은 낮은 수를 택하겠지만 나는 6을 선택한다. 그래서 더 볼 필요가 없으므로 cutoff가 일어난다.

(그리고 알파 값 9가 베타 값 6보다 크므로 alpha cut off가 일어난다고 생각할 수 있다.)

 

오른쪽 아래를 탐색하기 전

  1. 만약 5보다 높은 수가 나오면?
  • 상대방은 5를 택한다.
  1. 만약 5보다 낮은 수가 나오면?
  • 상대방은 낮은 수를 택하겠지만 나는 6을 택한다. 그러므로 더 볼 필요가 없으므로 cutoff가 일어난다.

(그리고 9,8,6이 베타 값 5보다 크므로 alpha cut off가 일어난다고 생각할 수 있다.)

저작자표시 비영리 변경금지 (새창열림)

'Study > 인공지능' 카테고리의 다른 글

[인공지능] Genetic Algorithm 요약  (1) 2023.10.26
[인공지능] Monte Carlo Tree Search 요약  (1) 2023.10.26
[인공지능] 탐색(Search) 요약  (0) 2023.10.25
[인공지능] 문제 표현 요약  (1) 2023.10.25
[인공지능] 에이전트 요약  (0) 2023.10.25
'Study/인공지능' 카테고리의 다른 글
  • [인공지능] Genetic Algorithm 요약
  • [인공지능] Monte Carlo Tree Search 요약
  • [인공지능] 탐색(Search) 요약
  • [인공지능] 문제 표현 요약
퀵차분
퀵차분
웹 프론트엔드 개발자를 꿈꾸고 있습니다 :)
  • 퀵차분
    QC's Devlog
    퀵차분
  • 전체
    오늘
    어제
    • 분류 전체보기 (165)
      • Frontend (28)
        • HTML, CSS (7)
        • Javascript (3)
        • React (11)
        • Typescript (2)
        • Next.js (4)
      • Node.js (3)
      • Study (40)
        • Modern JS Deep Dive (13)
        • SQL (1)
        • Network (1)
        • 프롬프트 엔지니어링 (4)
        • 인공지능 (9)
        • 시스템프로그래밍 (11)
        • 선형대수학 (1)
      • Intern (4)
      • KUIT (20)
      • Algorithm (48)
        • Baekjoon(C++) (26)
        • Programmers(JavaScript) (22)
      • 우아한테크코스(프리코스) (4)
      • Project (7)
        • PROlog (4)
        • Nomadcoder (2)
      • 생각 (4)
      • Event (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프롬프트 엔지니어링
    타입스크립트
    티스토리챌린지
    음악추천
    next.js
    자바스크립트
    오블완
    알고리즘
    프로그래머스
    리액트
    HTML
    인공지능
    javascript
    프로그래머스 자바스크립트
    시스템프로그래밍
    typescript
    react
    프론트엔드
    KUIT
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
퀵차분
[인공지능] Min-Max Algorithm 요약
상단으로

티스토리툴바