최단 경로 전략
- 너비 우선탐색 대신 최댄 경로 문제를 풀기 위해 쓸 수 있는 2가지 방법
양방향 탐색 - 역방향
- 문제
- 역뱡향 간선(?)을 찾아 내기 어려운 문제
- 너비의 노드가 각 3개씩있고, 깊이가 20일때 마지막 연산은 3^20이 된다. 이를 양방향에서 탐색하여 2*(3^(20/2))로 만들어 준다.
점점 깊어지는 탐색 - 너비의 규모가 큰 탐색에서 깊이우선 탐색을 해야 메모리를 줄일 수 있다.
- 문제
- 가까운 순서대로 방문하지 않으므로 최단거리인지확신할 수없다.
- 정점을 방문했는지 확인하지 않는다?
- 해결 - 점점 깊어지는 탐색
- 휴리스틱을 이용한 가지치기방법으로 사용하는 방법
- 최단거리 best를 임의로 정해놓고 best를 넘으면 다시 길로 가고, 다 돌았는데 best값이 없으면 best++
탐색방법 선택하기
- 너비우선탐색을 최 우선으로 고려(메모리로 시간을 산다.)
- 깊이가 정해져있고, 메모리와 시간이 많이 걸리면 양방향 탐색을 한다.
- 두 탐색이 메모리사용이나 시간이 많이 걸릴 경우 점점 깊어지는 탐색을 한다.
상태에 대한 여러연산을 최대한 효율적으로
배열, 일대일대응, 비트마스크 -> 가능한 적은 양의 메모리를 사용해야 한다.
'ALGORITHM' 카테고리의 다른 글
백준_11403_경로찾기 (0) | 2017.09.19 |
---|---|
Algospot_자바스크립트_Helloworld (0) | 2017.09.18 |
프로그래머스_카카오프렌즈 컬러링 북 (0) | 2017.09.16 |
프로그래머스_카카오_문제4 (0) | 2017.09.14 |
프로그래머스_카카오_데모3 (0) | 2017.09.13 |