DFS
아파트 단지 번호 문제는 BFS로 풀어도 되지 않나요?
DFS로 푸신 이유가 있을까요 ?
그리고 BFS는 대충 최단거리 구할때 쓰면 될거 같은데 ( 맞나요 ? )
꼭 DFS를 써야되는 순간은 어떤 순간일지 잘 모르겠습니다..
Câu trả lời 1
0
안녕하세요 공부좀하자님.
먼저, 아파트 단지 번호 문제는 BFS, DFS 모두 사용 가능한 문제가 맞습니다.
그래프 탐색 알고리즘의 한 예시로서 기본적이고 직관적인 문제를 찾다보니 두 가지 알고리즘을 모두 사용할 수 있는 문제가 선별된 것으로 생각됩니다. 다만, 문제의 난이도가 높아지면 보통 둘 중에 한 개 알고리즘으로만 풀 수 있는 경우가 많습니다.
두 번째로, BFS는 최단경로 탐색을 보장하기 때문에 unweighted graph (엣지의 거리를 모두 1로 간주하는 가중치가 없는 그래프)에서 최단거리를 탐색할 때 용이합니다. 질문자님께서 생각하고 계신 부분이 맞습니다.
DFS의 활용과 관련된 답변을 드리자면, 이론적으로 BFS와 DFS는 상호대체 가능합니다. 그럼에도 메모리 부족 문제로 문제의 난이도가 높아지면 상호대체가 불가능한 경우가 많습니다. 이 경우 재귀적인 특성을 활용하여 메모리 부족 문제를 해결하며, 이를 위해 DFS를 사용한다고 생각해주시면 되겠습니다.
DFS를 사용할 수밖에 없는 한 예시로 스도쿠 문제를 예로 들 수 있습니다. 9x9 스도쿠에 45개의 빈칸이 있는 경우, 각 레벨당 9^n개의 노드를 가지는 의사결정트리가 만들어지며 최대 9^45개의 노드를 검사해야 합니다 (이는 대략적으로 추산한 값입니다. 실제로는 더 적거나 많을 수 있습니다). 이러한 트리를 BFS로 모두 검사하게 되면 제한시간 안에 풀지 못하는 것이 일반적이기 때문에, DFS를 활용하여 루트 노드에서 가장 낮은 레벨의 노드로 도달하는 방법을 찾아야 합니다.
문제링크: https://www.acmicpc.net/problem/2239
공부좀하자님이 만족하시는 답변이 되었기를 바라며, 답변 해결로 상태 변경을 부탁드립니다.
이후에도 문제를 풀거나 공부하시면서 어려운 점이 있다면 질문 올려주세요.
감사합니다.
안녕하세요. 계속 프로젝트를 해야지 하다가 결제하고 환경 설정 중입니다.
0
15
1
Export template 안됨
1
28
2
scanf("%d\n") 의미
0
20
1
필기자료 사라졌나요?(실기 일주일만에 안돼서 재도전-_-)
0
37
2
26년 1회 실기 해설 강의
0
51
2
주소 연산자(&) 간접 지정자(*) 반대 개념
0
33
1
동전문제 풀이 질문
0
57
2
장기문제 최종 cpp파일
0
122
2
이해가 안되는 부분이 있습니다.
0
321
1
f20 에서 f15 + 1은 이해가 됩니다...
0
347
1
배낭문제가 백준문제로 있어서 작성했는데 왜 안되는지 알 수 있을까요?
0
493
1
혹시 이건 왜 안되는지 말씀해주실 수 있나요??
1
518
2
코딩테스트 공부법에 대한 질문
0
612
1
입력함수 출력함수 관련
0
399
1
강의자료
0
1181
1
동전구현문제
0
350
1
아파트 단지 문제
0
297
2
수업하신 PPT 자료는 다운 못하나요?
0
342
1
C언어로 푼 코드는 없나요?
0
317
1
안녕하세요! 왜 +1 을 하는 지 모르겠습니다
0
206
1
DFS함수 동작 원리 강의 14분 33초 호출 스택 관련 질문
0
212
1
코드를 무조건 짧게하는게 좋은건가요?
1
378
1
이해한게 맞는지 잘 모르겠습니다
1
256
1
모범 답안
0
365
1

