내가 빡대가리라서 오늘 아침부터 몸을 꼬면서 이해한 결과는
위키백과의 pseudo code를 기준으로
alpha-beta pruning은 조상 MIN node들의 최적치(최소 값)을 beta, 조상 MAX node들의 최적치(최대 값)을 alpha로 설정하고
탐색 과정에서 MAX node의 자식 중 조상 MIN node의 최적치 이상의 값을 가지는 자식 MIN node가 나오면 이후의 탐색을 cut-off하고 (beta cut-off)
MIN node의 자식 중 조상 MAX node의 최적치 이하의 값을 가지는 자식 MAX node가 나오면 이후의 탐색을 cut-off하는 (alpha cut-off) 방식으로 이해했어.
예를 들어 alpha=3, beta=INF인 상태의 A라는 MAX node에서 자식 MIN node B가 하나 있다고 하고 B의 손자 MAX node의 값이 탐색 순서대로 10 1 -2 3 100 -10000 100000이 나온다면 10에서 B는 alpha= 3, beta = 10이 되고, 그 다음 손자 MAX node의 값이 1이므로 B의 beta는 1로 업데이트 되지만 alpha보다 작아서 이후의 자식 노드에 대한 탐색은 alpha cut-off 되거든 하지만 이렇게 중단을 하여도 문제가 없는 이유는 손자 node의 값이 -2, -10000과 같은 매우 작은 값은 alpha라는 A의 최적 치보다 값이 작으므로 A가 선택하지 않을 것이고, 100, 100000과 같은 큰 값의 경우는 어차피 B라는 MIN node에서 거르기 때문에 상관이 없기 때문에 alpha-beta pruning에서 cut-off를 하여도 local optimum(적절한 용어인지 모르겠다)으로 빠지지 않을 것이라고 이해했어.
실제로 tic-tac-toe를 짜서 그냥 minimax알고리즘과 경쟁을 붙여봤는데 100판의 실행 결과에서는 100판 모두 비긴 것으로 나와서 크게 문제가 없는 것 같거든.
궁금한 점은
1. 내가 첫 문단에서 이해한 전반적인 alpha-beta pruning이 맞는지랑
2. 내가 두 번째 문단에서 예시로 든 상황 이외에 alpha-beta pruning을 돌렸을 때 brute-force방식의 minimax 알고리즘이 구하는 최적 답이 아닌 local optimum으로 빠질 수 있는지. (나도 반례를 계속 생각중인데 잘 모르겠네...)
혹시 똑똑한 형들이 있다면 제발 도와줘 ㅠㅠ
2번 생각해보면 terminal node까지 내려가서 돌리면 최적값이 나올 것 같고 중간에 depth로 잘라서 evaluation function으로 근사치를 사용하면 최적값을 구하지 못할 것 같은 '느낌'은 드는데 이런건 어떻게 증명해?
휴리스틱 함수가 정확히 맞아 딸어질 수가 있는가 없는가로 최적값인지 아닌지 증명 할 수 있음
단말모드에 닿기전에 휴리스틱으로 판단하는가니까 그때부터는 언덕기법이라 로칼거시기 생김
그럼 결국은 휴리스틱에 달려있는거구나.. ㄱㅅㄱㅅ 그럼 이런거 증명은 수학적으로 어떻게 하는지 알아?
딱 “휴리스틱”만 쓰니까 반례가 무적권 있음
그럼 단말노드로 내려간다고 가정하였을 때, 이게 항상 minimax와 동일한 최적값을 내놓는다는 것을 증명은 어떻게 해? ㅠㅠ
위에꺼 프로그램으로 구현 해놨다면 깊이제한걸어논거 흰색 주고, 검정은 깊이제한 풀고, 둘이 대결시키면 흰색이 이기는 경우가 나올 거야
플러닝 한 부분들이 항상 최선의 선택이 아니다 라고 증명하면 되는데 수식증명은 나도 모르겠네 검색해보면 어디 있을거 같은데
위에 오타다 검정색이 이기는 경우가 나올거야 ㅋㅋ
그런 방법으로 하면 되겠다. 정말 고마워! 검색도 해볼게~
b의 손자가아니고 자식이라고 생각하고 읽었는데, 맞음 정확함
미니맥스는 모든 경우의 수를 다 경유한다가 기본전제라 지역최소문제는 있을 수 없음
그럼 alpha-beta pruning은 어차피 쓰지 않을 값은 pruning하는 거니까 전혀 문제가 없는거네 진짜 기발하다. 이렇게 간단해 보이면서 강력한 알고리즘 만드는 애들은 정말 신처럼 보임
ㄹㅇ 우린 감사합니다 하고 서쪽에 절한전하고 잘 쓰면 댐 ㅋㅋ,, 요즘은 컴퓨팅 알고리즘도 특허를 줘가지고 특허없는 알고리즘들한테 ㄹㅇ 감사해야댐
나도 언젠가는 절받는 천재가 되고싶다만 이미 나이가 30대에 더 가깝네 ㅠㅠ 감사하면서 써야지