원탐과 원복
409
작성한 질문수 16
강의 듣고 DFS랑 무슨 차이인지 한번에 정리가 안되어 글 남겨봅니다..
DFS는 경로에 대해 완전 탐색하는 것은 맞으나 그 경로의 모든 경우의 수를 탐색하는 것은 아니다.
왜냐하면 앞서 지나간 자리에는 visited가 걸려있으므로 목적지를 찍은 후 재귀로 중간 부분으로 돌아온다면 다른 경로로 진입했을 시 visited가 걸려있을 수 있고 어쩌면 목적지에 도달할 수 없을 수도 있다.완탐과 원복에서는 목적지까지 도달한 후 왔던 경로에 대해 방문 처리를 원복하기 때문에 목적지로 도달하는 모든 경로의 경우의 수를 가져갈 수 있다.
따라서 코스트가 더 많이 요구되는 것은 완탐과 원복하는 것이며,
즉 단순히 원하는 목적지만을 탐색하는 것을 목표하고자 한다면 DFS.
모든 경우의 수를 확인하여 최소, 최대 값을 원한다면 완탐과 원복을 사용하자.
라고 이해했는데 뭔가 잘못 이해한 것 같습니다.
하지만 그걸 몰라서 질문을 잘 못하겠네요.. 답변 주신다면 감사하겠습니다.
답변 2
2
안녕하세요 mch님 ㅎㅎ
DFS는 경로에 대해 완전 탐색하는 것은 맞으나
>> 아닙니다. 그저 깊이우선 탐색에 불과합니다. 보통 visited를 걸어서 방문한 정점은 다시 방문하지 않도록 합니다. 예를 들어 a - b - c
- d
라고 했을 때 a, b, c, d 이렇게 탐색하지 a b c b d 이렇게 방문한 정점을 다시 방문하지는 않습니다.
경로라는 말이 좀 헷갈릴 수가 있는데 연결된 노드들을 모두 탐색하긴 하지만 모든 경로 a, b, c / a, b, d를 다 탐색하지는 않습니다.
완탐과 원복에서는 목적지까지 도달한 후 왔던 경로에 대해 방문 처리를 원복하기 때문에 목적지로 도달하는 모든 경로의 경우의 수를 가져갈 수 있다.
>> 앞서 설명한 예제에서 a b c b d 이런식으로 탐색하는게 완탐입니다. 문제의 정의에 따라 다른데 예를 들어 a부터 시작해 끝점까지 가는 경우의 수를 구한다라고 했을 때 a, b, c, d이렇게 탐색하면 안되겠죠?
a - b - c
a - b - d
라는 경우의 수가 필요한 것이기 때문에
a b c b d 이런식으로 탐색해야 합니다.
따라서 코스트가 더 많이 요구되는 것은 완탐과 원복하는 것이며,
>> 네 맞습니다. 기본적으로 단순 dfs보다는 정점을 더 탐색하므로 시간이 더 많이 들어 코스트가 더 많이 드는게 맞습니다.
즉 단순히 원하는 목적지만을 탐색하는 것을 목표하고자 한다면 DFS.
모든 경우의 수를 확인하여 최소, 최대 값을 원한다면 완탐과 원복을 사용하자.
>> 네 맞습니다. DFS는 깊이 우선탐색을 간단히 한다면.. 이라고 생각하시면 됩니다.
좀 더 정리를 해드리면 다음과 같습니다.
완전탐색 (Brute Force)과 원복
완전탐색은 모든 경우의 수를 탐색하는 방법, 경우의 수가 많을 때는 매우 비효율적일 수 있음. 이 때 dfs 등으로 구현됨. ex) 숫자조합, 암호해독
깊이 우선 탐색 (DFS, Depth-First Search)
깊이 우선 탐색은 한 경로를 최대한 깊게 탐색한 후, 다른 경로를 탐색하는 방법.하 나의 경우에 대해 깊이를 우선적으로 탐색. 재귀함수를 통해 구현, 연결된 모든 노드를 탐색하고자 할 때 유용 a, b, c, d / 방문한 정점을 다시 방문하지 않음. ex) 미로찾기
또 질문 있으시면 언제든지 질문 부탁드립니다.
좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)
감사합니다.
강사 큰돌 올림.
코딩살구클럽 가입부탁드립니다
0
27
2
코딩살구클럽 가입 요청 확인부탁드립니다
0
30
2
5-S 테스트 케이스 질문
0
34
2
코살 문제풀이 환경
0
46
2
2 - T 오큰수 문제가 있는 것 같습니다.
0
43
1
추천 추가문제들
0
43
2
프로그래머스 코테 환경 관련해서 질문드립니다.
0
45
2
해당 문제에 대한 채점이 코딩살구클럽에서 올바르게 처리되지 않습니다.
0
40
2
균형 이진 트리 설명 시 높이 숫자
0
30
2
4-H 질문드립니다.
0
35
2
1-K 질문드립니다.
0
41
2
대기업 인적성 시험 질문
0
41
2
4-C 질문드립니다
0
41
2
[수학숙제 / BOJ 2870] 채점 서버 오작동
0
37
1
코테 준비 질문
0
50
1
살구클럽가입 요청드려요
0
39
2
1-I 문제 질문
0
40
2
코딩살구클럽 가입
0
57
2
AI 코딩 도구 사용 시 학습 방법 조언
0
51
2
코딩살구클럽 오류
0
61
2
코살클 [3-F 괄호 추가하기] 프라이빗 9번 제보
0
46
1
코딩살구클럽 테스트 케이스 오류 제보
0
52
2
삼성 코딩테스트
0
64
2
틀린 이유를 못찾겠습니다
0
48
2





