본문 바로가기

For Study

[Study] A * Algorithm 구현까지

대략 남들의 알고리즘의 개념을 보는데 하루...(하루 왠종일은 아니지만 ㅋ)


그리고 그 알고리즘 코드를 분석하고 또 분석하고.. 알고 봤더니 나중에 다 만들고 나니 설명까지 잘 되어 있는 말끔한 자료를 두개나 받을 수 있었다 ㅠㅠ 후회되게... 

하지만 아무튼 누군가 올려논 파이썬 코드분석을 했다가 실패...주절주절...

아무튼 그렇게 또 하루를 보내고 기초 틀을 짰다.


그리고 혼자서 처음부터 끝까지 구현에 도전! 이틀째 완성시켰다.


너무 잘 나와있는 자바스크립트 코드를 그대로 가지고 나와서 그걸 C#으로 거의 변환 시키다시피했다.


하지만 또 내 나름대로 바꾼것도 한 두가지가 아니다...


참고로 난 C# 수업을 들은 적도 집에 따로 책이 있는 것도 아니다.


그냥 Oracle 을 조금 할 줄(?) 알고 자바의 기본정도만 아는 못한 학생일뿐!


미천한 실력이지만 며칠 안에 알고리즘을 실제 C# 으로 구현해 냈다는 게 나름 뿌듯하다.


지금은 논문을 써야하느라 바빠서 제대로 주석처리나 그런 것은 못하고.. 


그리고 난 게임 만든적도 없고 프로그램도 그렇게 잘하지를 못해서 무조건 머리 속에서 구상구상 후 

printf ...(ㅡㅡ)


아무튼 일단은 pseudocode 에 대한 것을 올리고 시간 나는 대로 조금 조금 보강하는 식으로 하겠다.


아참 그리고 어떻게 보면 남들 코딩보다 보기 편할 수도 있다.


왜냐하면 미천하고 아무것도 할 줄 몰라서 진짜 군살없는 .cs 파일하나가지고만 


구현내놓은 A * 알고리즘이기때문에 다른 것들은 아무것도 포함이 안되어있다.


오직 구현되어 있는 것은... 알고리즘뿐... 상태도 다돌리면 프린트해서 그냥 그걸 결과로 바로 볼수 있게 만들었다.


쓰다 보니 이야기가 길어졌다.  아무튼 밑에 그리고 유용한 사이트 두 곳을 다시 링크해두기로 한다.



pseudo code



 create the open list of nodes, initially containing only our starting node

   create the closed list of nodes, initially empty

   while (we have not reached our goal) {

       consider the best node in the open list (the node with the lowest f value)

       if (this node is the goal) {

           then we're done

       }

       else {

           move the current node to the closed list and consider all of its neighbors

           for (each neighbor) {

               if (this neighbor is in the closed list and our current g value is lower) {

                   update the neighbor with the new, lower, g value 

                   change the neighbor's parent to our current node

               }

               else if (this neighbor is in the open list and our current g value is lower) {

                   update the neighbor with the new, lower, g value 

                   change the neighbor's parent to our current node

               }

               else this neighbor is not in either the open or closed list {

                   add the neighbor to the open list and set its g value

               }

           }

       }

   }




구현코드



설명까지 완료(2013.05.09)

7_zip 버젼


AStarProject(final)_byHT.7z



zip 버젼


AStarProject(final)_byHT.zip




에이스타 알고리즘을 구현해보자 -1 (C#)


초보자를 위한 A* 알고리즘 (C++)


'For Study' 카테고리의 다른 글

[Study] t-test란?  (0) 2013.09.11
[Study] Supervised Learning  (0) 2013.06.03
[Study] A star Algorithm(A 스타 알고리즘, A* 알고리즘)  (0) 2013.04.17