컴퓨터용 체스게임 이길 수 있으세요?
"체스 세계챔피언, 컴퓨터에 도전"이라는 YTN 뉴스가 포털에 올라왔는데요.... 현재 존재하는 체스게임중 프리츠가 가장 인공지능이 뛰어난것으로 알고있습니다. 너무 이기기 힘드네요 ㅠㅠ 체스접을까 하다가 체스챔피언도 못이기는데 하고 수긍하고 살고있습니다.
그래서 문뜩 예전 공부한게 생각이 나서 몇자적어봅니다.
인공지능에서 체스는 아주 유용한 연구대상입니다. 왜냐하면 인공지능에서 어떠한 문제를 풀기위해 어떠한 전략의 알고리즘을 이용하여 풀것인가는 매우 중요한 문제입니다.
인공지는에서 체스 인공지능같이 어떠한 제약을 만족해야만 하는 문제들을 제약조건 만족문제(Constraint Satisfaction Problem) 이라고 합니다.
문제를 풀기위한 전략은 크게 두 가지로 나뉘어 볼 수 있습니다. 문제에 대한 모든 도메인의 변수를 대상으로 탐색을 할 것인가와 문제에 대한 각 도메인의 변수를 대상으로 할 것인가입니다. 이는 Backtracking과 local search로 분류하게 됩니다.
Backtracking을 먼저 살펴보면
우리는 뭔가를 잃어 버렸을 때 바로 이전에 갔던 장소를 찾습니다. 거기서 찾지 못하면 또 이전의 장소로... 이런식으로 Backtracking을 하게되죠.
즉, 올바른 답을 구할 때까지 모든 가능성을 시도하게 되는데 이를 시도하는데 있어서 Depth First Search(, uniform-cost search, Breadth-First Search)를 이용하게 됩니다. 하지만 이는 너무 느리기에 수많은 휴리스틱을 통하여 prunning을 하게됩니다.
사실 어떠한 면에서 Backtracking은 dynamic programming이나 greedy algorithm, approximation algorithm들과 비슷합니다. 하지만 Constraint Satisfaction Problem과 NP-Hard와는 차이가 있습니다.
local search는 간단하면서 엄청난 성능을 발휘하게되는데 현제 도메인의 각 변수에 대한 문제에만 집중하게 됩니다. 즉 현재 상태에서의 문제를 해결하기위해 노력하게됩니다. Backtracking은 현재뿐만 아니라 이전 이후의 상태도 고민하게됩니다.
이러한 전체의 문제는 Combinatorial Game Theory에 대한 paper를 읽어보면 좀더 세밀하게 알 수 있습니다.
오래전에 공부하고 기억이 가물가물합니다. ㅡㅡ;;
생각나서 몇자 끄적이는데 맞는 것인지 정확하게 기억하고 있는지 모르겠습니다.
참고로 인공지는에서 우리가 알고있는 알고리즘 자체의 집중보다는 문제와 그 문제의 도메인, 그리고 도메인의 변수의 관계를 나타내는것이 가장중요합니다. -_-;;
적다보니 헛소리가 된게 아닌가 합니다. ㅡㅡ;;
어제 우분투를
어제 우분투를 edgy에서 feisty로 업그레이드 했더니 그놈이 2.17이 되었더군요. 메뉴를 보니까 놀이에 체스가 포함되었네요. 어떻게 하는 건지 몰라서 그림의 떡이지만...
배워서 심심할 때 한번씩 하면 좋겠네요.
인간이 컴퓨터보다 수를 읽는 능력이 현저히 떨어질 텐데 어떻게 컴퓨터와 대등한 경기를 할 수 있는지 모르겠네요. 인간의 사고는 어떤 식으로 이루어지는지가 더 궁금하네요.
--
foldl (flip (:)) [] "universe"
썩 쓸만한 자료는
썩 쓸만한 자료는 아닐지도 모르겠지만,
http://mitpress.mit.edu/e-books/Hal/chap5/five1.html
HAL 9000에 대한 책에 관련 내용이 잠깐 언급돼있습니다.
Emacs에 내장된 오목 해보셨습니까?
이거야말로 정말 어려운 오목 중의 하나입니다.
lisp이 recursion에 강점을 가지듯이 오목 또한 recursion으로 예측하기 쉬운 게임이라서 emacs와 두는 오목은 정말 어렵습니다.
몇 번에 한 번 이길까 말까인데, 특히나 컴퓨터가 선수(先手)인 경우에는 이기기가 상당히 까다롭습니다.
원래 오목은 공정한 게임이 아닙니다.
선수를 놓는 사람이 꼭 이길수 있는 필승의 수가 있습니다.
그래서 후수를 잡는 사람이 두수를 한번에 놓습니다.
초보인생아키
그래서 쌍삼을
그래서 쌍삼을 무효로 치지 않나요? 이맥스 gomoku 이 놈은 비겁하게도 쌍삼을 주 무기로 삼는군요.
그래서
매일지고 눈물을 삼킨다는 ㅠㅠ;;
방법이 없더군요;;;
------------------------------------
인생 뭐있어?
----------------------------------------------------------------------
인생 뭐있어? 백수로 사는거야~ 가는거야~
예전 스펀지에서
예전 스펀지에서 봤는데
오목의 특이한 규칙들이 정말 많더라구요
여기 네이버 링크를 올립니다..
눈이 아프네요 >.<
선택형 : 주로 유단자들 사이에 쓰이는 방법인데, 주요대회에서는 모두 선택형
으로 대국한다. 흑 3까지에 대해서는 지정형으로써 두며, 다음의 백 4수는 백이
자유롭게 두며, 흑 5수는 자기가 두고 싶은 곳 두 군데를 제시하고, 백이 그
한쪽을 선택하여 두어 나간다.
PS 중간에 백이 흑으로 둘것이냐 백으로 계속 둘것이냐라는 룰도 있었다고 방송에 본거 같은데..
아무튼.. 신기합니다..
종종 하는데...
진적이 잘 없는데요?
물론 항상 제가 먼저 둡니다.-.-;;;;
God said it. I believe it. That settles it.
여친이 길르는 용..
gnu chess
gnu chess...
전 이거 이겨본적 한번도 없습니다. ㅜ^ㅡ
오델로...
오델로... ㅡ,.ㅡ;;
CPU에게 굴욕감을 느끼면서 하게 되더군요.
컴퓨터인생 16년중
그리 많이는 않했지만 한 10번 밖에 못이긴듯 ㅡㅡ;;;
----------------------------------------
인생 뭐있어?
----------------------------------------------------------------------
인생 뭐있어? 백수로 사는거야~ 가는거야~
gnu 체스는 486 에서는
gnu 체스는 486 에서는 몇번 이겨봤고,
yopy 에서는 거의 대등하고,
펜티엄 III 이상급에서는 매번 집니다. -_-;
Orion Project : http://orionids.org
솔직히 DFS 등으로
솔직히 DFS 등으로 뒤지는 depth 만 무한히 길다면 이론적으로는 정말 이기기 힘들겁니다 --;;
특성상 depth 가 하나 늘 때마다 search space 가 exponent 하게 증가하기 때문에 적정선의 depth 를 둬야지요 흐흣
chess 나 오목같은건 min max tree 같은 것을 통해 다음 수를 계산할 수 있는데 alpha beta pruning 정도만 구현을 해도 체크해봐야하는 대상이 확 줄어들게 되며, 병렬 처리를 하기에도 충분히 적합한 구조이기 때문에 정말 슈퍼컴퓨터를 이용해서 -_-! chess 프로그램을 만든다면 사람이 이기기는 정말 쉽지 않을 거 같아요.
저장 공간이 충분하다면 미리 상태별로 최적의 해를 계산해서 b-tree 등으로 저장해놓은 뒤 최적의 해를 찾아서 -_-! 사람을 x먹이는 방법도 있겠군요 후훗!
alpha beta pruning
http://en.wikipedia.org/wiki/Alpha-beta_pruning
제가 만들었던 오목게임
http://trac.unfix.net/browser/five-in-row/src
http://b.mytears.org/tag/five%20in%20row
--------------------------
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
오랫동안 꿈을 그리는 사람은 그 꿈을 닮아간다...
http://mytears.org ~(~_~)~
나 한줄기 바람처럼..
pruning을 하기위해
인공지능의 CSP에서는 AC-3를 주로 쓰게 되죠 ^^;;
---------------------------------------
인생 뭐있어?
----------------------------------------------------------------------
인생 뭐있어? 백수로 사는거야~ 가는거야~
IPAQ에 있던 체스프로그램
어딘가에서 구해서 즐기던 게임이 있었는데
기억은 잘안나지만 그게 IPAQ 체스 게임중엔 젤 유명하다 .. 뭐 그랬던 것 같은데.
1 2 3 4 5 중에
3단계 까지 할만하고 4단계부터는 참 이기기가 어렵더군요 ㅜ.ㅜ
몇 depth 까지 컴퓨터가 계산할건지, 또는 몇초동안 계산할건지.. 그런것도 있는데,
기억으로는 two depth까지 생각하는 컴퓨터는 실수만 안하면 쉽게 이기고
three depth까지 생각하는 컴퓨터는 아주 공을 들여야 겨우 이기고
그 외에는 포기 ;
ㅎㅎ. 제가 언제 한번은. IPAQ 체스 5단계가 너무 미워서
데스크탑 컴퓨터 체스게임이랑 대결을 붙여본 적이 있는데 (중간에서 제가 놓아가면서 ㅎㅎ)
데스크탑 컴퓨터가 가뿐히 이기더군요 .. ;
제한 시간이 있는 것을 고려해볼 때, 슈퍼컴퓨터와의 대결이라면,
그냥 이기는 것 보다도 미리 컴퓨터의 알고리즘 흠을 찾아보는게 더 좋은 방법이 될 것 같습니다. ;
한 10수 정도 전부 내다보는 컴퓨터라도 11수 째에 일어날 일을 모를 수도 있으니깐요 ^^ (하나 놓고 나면 알아버릴까요? ㅎㅎ)
-------------------------
The universe is run by the complex interweaving of three elements: matter, energy, and enlightened self-interest.
- G'kar, Babylon 5
-------------------------
The universe is run by the complex interweaving of three elements: matter, energy, and enlightened self-interest.
- G'kar, Babylon 5
오목이든
오목이든 오델로든..
컴퓨터한테 이기는 방법 알려드릴까요? ㅎ
프로그램을 두개띄웁니다. 한쪽은 먼저하게 하고 다른쪽은 늦게 하게합니다.
먼저하는쪽의 컴이 두는걸 다른쪽에다가 바로 써먹습니다..ㅡ,.ㅜ;;
둘중한쪽은 이길겁니다. ^,.^
----------------------------------------------------------------------------
예전에 오목으로
예전에 오목으로 컴터한테 내리 진 후 충격에,
그 후 한번도 해보질 않았습니다.(사기더군요..ㅠ.ㅠ)
--------------@@
집에서 젠투교+emacs교 완전 정착!!
회사 데비안(windowsXP)+emacs교 완전 정착!!
(window 저주 하리라 !!!)
나중에 아주 나중에 시간나면 lisp을..
..
체스는 초딩학교 다닐때 문방구에서 파는 100원짜리던가? 그거 사서 했던 기억이 있는데
주위에 체스 하는 사람이 없어서 동생과 몇판두고 접었던 기억이 나네요.
제가 원래 보드게임을 좋아하는지라 다음엔 장기에 빠져서 매일 아저씨들 장기두는거 구경하고 그랬는데..
체스나 장기라는 게임이 워낙 컴퓨터로 접근이 용이한 게임이라 흔하게 구할수있는 체스프로그램도 쉽게
이기기 힘들잖습니까?
얼마전 북한에서 만든 바둑프로그램 은별 v5.0을 구해서 해봤는데 상당히 잘두더라구요.
이곳에 오시는분들은 바둑 두시는분은 별로 없는듯한데..
체스처럼 잘두는 바둑프로그램은 언제나 가능해질까요?
.
흠....
불가능하지 않을까 합니다.
바둑의 경우의 수와 체스의 경우의 수는 차원이 다르다는거 아시죠?
그냥 장기 VS 체스 이런식이면 몰라도 바둑은 힘들듯...;;
----------------------------------------------------------------------
인생 뭐있어? 백수로 사는거야~ 가는거야~
----------------------------------------------------------------------
인생 뭐있어? 백수로 사는거야~ 가는거야~