미로 찾기 (Decision Problem)
미로찾기 해결 알고리즘 중에 Recursion을 이용한 것이 가장 간명하다.
Decision Problem : 답이 yse or no인 문제
Recursive Thinking
- 현재 위치가 출구인가? 아니면,
이웃한 셀들 중 현재 위치를 지나지 않고 출구까지 가는 경로가 있다.
현재 위치에서 출구까지의 경로
이웃한 셀들 중에서 출구까지 가능 경로 찾기
Recursion을 설계할 때는 "무한루프에 빠지지 않는가?"를 가장 먼저 생각해야 한다.
[ 위치 x,y로 부터 출구까지 가는 경로가 있는지 판단하는 함수 ]
findPath
수도 코드
- 이미 방문한 셀들은 표시하기
- 인접한 셀들 중에 나를 다시 통하지 않고 출구로 가는 경로가 있는지 판단한다.
- 인접한 셀이 벽인지 아닌지도 판단, 통로가 아닌 경우면 무시한다.
< 다른 방식 >
}
findMazePath
java 코드
// PATHWAY_COLOUR 통로// WALL_COLOUR 벽// BLOCKED_COLOUR 더 이상 길이 없는 셀// PATH_COLOUR 방문한 셀public static boolean {if( x<0 || y<0 || x >=N || y>==N)return false;else if (maze[x][y] != PATHWAY_COLOUR) // 길이 아닌 경우return false;else if ( x==N-1 && y==N-1){maze[x][y] = PATH_COLOUR;return true;}else{maze[x][y] = PATH_COLOUR;if( || |||| ){return true;}maze[x][y] = BLOCKED_COLOUR;return false;}}
'자료구조&알고리즘' 카테고리의 다른 글
[Recursion] 간단한 예제 (0) | 2017.07.02 |
---|---|
[Recursion] 개념 (0) | 2017.06.18 |
댓글