AI 과제 - 8Puzzle 구현하기
Posted 2007. 10. 2. 21:02, Filed under: Study/Computer Science이번 학기 첫번째 프로그래밍 과제- Search Tree를 탐색하는 방식으로 8-Puzzle을 푸는 것
8-puzzle 은 어릴 때 누구나 한번쯤 해보았을 8 개의 타일로 구성된 9칸짜리 판 위에 있는 1-8까지의 숫자를 순서대로 맞추는 퍼즐.
| 1 | 2 | | | 1 | 2 | 3 |
| 3 | 4 | 5 | → | 4 | 5 | 6 |
| 6 | 7 | 8 | | 7 | 8 | |
시작 상태를 Root로 해서 변경 가능한 모든 상태를 탐색하면서 목표로하는 상태가 나올 때까지 트리를 탐색하는
것이 컴퓨터가 문제를 해결하는 과정인데, 이 과정에서 탐색 횟수를 줄이고 최소의 타일 이동으로 해답을 구할 수 있는 답안을 찾아야한다.
이를 위해 사용된 알고리즘은
1) BFS
2) IDS
3) A* Search
=====================
논리적으로 문제를 어떻게 해결해야하는지 알고 있는 경우에도 실제 구현에는 상당한 시간이 걸린다.
예상보다 훨씬 더..-_-
문서화도 만만치 않다.. 방학 때 과학기술 문서 작성 들으면서 뼈져리게 느꼈던건데..;;
그새 잊었나 ㅋ
이틀 반나절을 꼬박 코딩, 반나절 테스트, 반나절 문서화..
결국 제출기한을 한참 넘겨 오늘 오후에나 겨우 냈다.
다음부터는 좀 더 일찍 시작하고 여유있게, 침착하게 코딩하자.
프로그램을 짤 때 생산성을 높이는 방법은 단순한 것 같다.
설계니 개발방법론이니 알고리즘이니 하는건 코딩 이전의 문제.
코딩은 이미 있는 해결책을 프로그래밍 언어로 구현하는 것이니까
최대한 실수하지 않는 것이 빨리 프로그래밍하는 최고의 길인 것 같다.
8-puzzle 은 어릴 때 누구나 한번쯤 해보았을 8 개의 타일로 구성된 9칸짜리 판 위에 있는 1-8까지의 숫자를 순서대로 맞추는 퍼즐.
| 1 | 2 | | | 1 | 2 | 3 |
| 3 | 4 | 5 | → | 4 | 5 | 6 |
| 6 | 7 | 8 | | 7 | 8 | |
시작 상태를 Root로 해서 변경 가능한 모든 상태를 탐색하면서 목표로하는 상태가 나올 때까지 트리를 탐색하는
것이 컴퓨터가 문제를 해결하는 과정인데, 이 과정에서 탐색 횟수를 줄이고 최소의 타일 이동으로 해답을 구할 수 있는 답안을 찾아야한다.
이를 위해 사용된 알고리즘은
1) BFS
2) IDS
3) A* Search
=====================
논리적으로 문제를 어떻게 해결해야하는지 알고 있는 경우에도 실제 구현에는 상당한 시간이 걸린다.
예상보다 훨씬 더..-_-
문서화도 만만치 않다.. 방학 때 과학기술 문서 작성 들으면서 뼈져리게 느꼈던건데..;;
그새 잊었나 ㅋ
이틀 반나절을 꼬박 코딩, 반나절 테스트, 반나절 문서화..
결국 제출기한을 한참 넘겨 오늘 오후에나 겨우 냈다.
다음부터는 좀 더 일찍 시작하고 여유있게, 침착하게 코딩하자.
프로그램을 짤 때 생산성을 높이는 방법은 단순한 것 같다.
설계니 개발방법론이니 알고리즘이니 하는건 코딩 이전의 문제.
코딩은 이미 있는 해결책을 프로그래밍 언어로 구현하는 것이니까
최대한 실수하지 않는 것이 빨리 프로그래밍하는 최고의 길인 것 같다.