Total : 5 ,  total-list : 1 login join   
- 게시물제목 : [re] 첫질문이네요^^ 5,072 - 조회
- 작성자이름 : 깊은바다  2009/11/27 - 등록
- 다운로드 :   AIOmok.zip (188.7 KB), 729 :download


안녕하세요^^

사실 저도 인공지능에 대해 잘 알지 못하는지라
구체적인 방법보단 간단한 개념정도만 생각해 봤습니다.


체스나 장기같은 보드게임은 기본적으로 게임트리 방식을 많이 사용합니다

http://gameai.net/Article/Gametree/Gametree.htm

자신과 상대방이 번갈아 수를 두기 때문에
다음수에서 내가 둘 가장 좋은 수를 찾고, 그 다음수에서 상대방이 둘 가장 좋은 수를 예상하고...
이런 식으로 트리를 만들어 점수를 계산하는 것이 Minimax 알고리즘입니다.

트리의 제일 마지막 노드에서는 평가함수를 만들어
현재 보드상황에 대한 점수를 계산하여 수치화합니다.


오목도 같은 방식으로 구현할 수 있겠지만 게임방법이 비교적 간단하기 때문에
굳이 게임트리를 만들지 않고 평가함수만으로 구현해도 될 듯합니다.

평가함수를 만드는 가장 쉬운 방법은
가로세로 전체 보드를 루프로 돌면서 현재 위치에 돌을 놓았을때 점수를 계산할 수 있습니다.

예를 들어 내 돌이 두개 연속이면 10점, 세개 연속이면 20점, 네개 연속이면 100점을 주고,
상대방 돌이 두개 연속인걸 막으면 5점, 세개 연속인걸 막으면 30점..
이런식으로 각 상황에 대한 점수를 임의로 정합니다.

마지막으로 가장 높은 점수의 위치에 돌을 놓으면 됩니다.

데브피아에서 구한 소스코드를 첨부합니다.
COmok::AI_PutAIPlayer() 함수를 보면 이런 방법을 사용했음을 알 수 있습니다.


혹시 다른 질문사항 있으시면 언제든지 얘기해주세요.
프로그램 완성되면 자료실에 올려주시면 고맙겠습니다~



>대학생 컴돌이 입니다.
>아직 입문이라 오목ai를 구현하는데 애를 먹고있습니다.
>전체를 이해하는 것이 저에게는 아직 어려워서요^^
>시간이 걸려도 쉽게 이해하는 방법이 있거나 공부방법 방향을 알려주시면 해서요.
>min-max 트리나 알파베타컷 휴리스틱의 개념정도는 알고 있으나 코딩으로 이어가려니
>너무 어렵습니다.
>허접한 질문이지만 아직 초짜의 어려움이라 생각하시고 가르침을 주셨으면 합니다.
>좋은하루되시고요^^
>



    list   

notice  [공지] 질문 게시판입니다   깊은바다  2009/10/22  3362
4   안녕하세요!   EK  2012/11/23  1
3   구현하신 인공감정모델 문의드립니다 (이메일회신부탁)  [1] AEmotion  2010/06/09  4
2   첫질문이네요^^   컴돌이  2009/11/26  2822
    [re] 첫질문이네요^^   깊은바다  2009/11/27  5072

  list   1
view :: number ganada hit  
 
Copyright 1999-2017 Zeroboard / skin by onnoory