백트래킹
해를 찾는 도중 해가 아니어서 막히면, 돌아가서 다시 해를 찾아가는 기법입니다.
최적화 문제와 결정 문제를 풀때 주로 사용합니다.
DFS
가능한 모든 경로를 탑색합니다.
그래서 불필요할 것 같은 경로를 사전에 차단하거나 하는 행동이 없어서 경우의 수를 줄이기 힘듭니다.
그래서 경우의 수를 요구하는 문제는 DFS 로 처리하기 힘들 것입니다.
백트래킹
해를 찾아가는 도중, 지금 경로가 해가 될 것 같지 않으면 그 경로를 더 이상가지 않고 되돌아갑니다.
즉, 반복문의 횟수까지 줄일 수 있으므로 효율적입니다.
이를 가지치기라고 부릅니다.
일반적으로 불필요한 경로를 조기에 차단할 수 있게 되어 경우의 수가 줄어들어 효율성이 결정됩니다.
정리하자면, 백트래킹이란 모든 가능한 경우의 수 중에서 특정 조건을 만족하는 경우만 살펴보는 것입니다.
'JAVA' 카테고리의 다른 글
Stream (0) | 2022.08.10 |
---|---|
HashMap (0) | 2022.08.10 |
람다식 (0) | 2022.07.18 |
좋은 객체 지향 설계의 5가지 원칙 (0) | 2022.07.08 |
객체 지향 프로그래밍 (0) | 2022.07.08 |