21.01.11 [완전 탐색]

박종찬·2021년 1월 11일
0

TIL

목록 보기
68/89

일이 있어 블로그랑 깃허브 활동을 하나도 못했다. 😞
오늘부터 다시 새롭게 시작!! 꾸준하게 하자 :)
간단 정리는 오늘 하되 자세한 건 천천히 다뤄야겠다. 깊게 파고들 목적이기에 하루에 전부 다룰 수 없을 것 같다.

완전 탐색

완전 탐색이란 컴퓨터의 빠른 연산 속도를 이용해 생길 수 있는 모든 경우의 수를 찾는 알고리즘을 말한다.

완전 탐색 종류

재귀 함수

재귀는 자기 함수를 스스로 호출하는 것을 의미한다. 스스로를 호출함으로서 탈출하기 전까지 스택을 쌓기때문에 반복문보다 메모리 사용률이 많아 느리다.

사용 목적

이렇게 그다지 좋지 않은 재귀 함수를 사용하는 이유는 반복적인 변수를 줄일 수 있고 작성한 코드가 정확하게 구동하는 것을 증명하는 것이 쉽다. 즉 가독성이 뛰어나다.

브루트포스(Brute Force)

"무식하게 한다" 라는 의미 처럼 완전 탐색에 대해 말한 것과 많이 흡사하다.

비트마스크

2진수(1, 0) 을 이용해 연산하는 방식이다. True(1) / False(0) 를 이용한 상황에 유용하다.

DFS/BFS

재귀를 이용해 모든 노드를 탐색하는 방법이다. Depth라는 단어를 사용하다시피 넓게 탐색을 하기보다 Root Node에서 Leaf Node까지 내려가면서 탐색하는 방법이다.

DFS와 다르게 현재 노드와 연결된 노드들 전부 탐색하는 넓게 탐색하는 방법이다.

백트래킹

노드의 끝이 다다르고 원하는 답이 나오지 않았을 경우 다시 Parent Node로 되돌아가 다른 자식 노드로 가는 방법이다.

profile
반가워요! 사람을 도우는 웹 개발자로 성장하기! :)

0개의 댓글