Skip to main content

Command Palette

Search for a command to run...

[알고리즘] 탐색 알고리즘 - Dfs / Bfs

Updated
1 min readView as Markdown
H

Hansei Cyber Security High Schoool (2022/3/2 ~ 2025/2/10)

탐색이란 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정을 의미한다. 프로그래밍에서는 그래프, 트리 등의 자료구조 안에서 탐색을 하는 문제를 자주 다룬다. 대표적인 탐색 알고리즘으로 DFS와 BFS를 꼽을 수 있다.

DFS는 Depth - First Search, 깊이 우선 탐색이라고도 부르며, 그래프와 트리의 깊은 부분을 우선적으로 탐색하는 알고리즘이다.

그림에서와 같이 갈 수 있는 한 끝까지 탐색해 리프 노드를 방문하고, 이전 갈림길로 돌아와 선택하지 않았던 노드를 방문하는 식으로 탐색한다. DFS는 스택(Stack) 자료구조를 이용하며 구체적인 동작 과정은 다음과 같다.

  • 탐색 시작 노드를 스택에 삽입하고 방문 처리를 한다.

  • 스택의 최상단 노드에 방문하지 않은 인접 노드가 있으면 그 인접 노드를 스택에 넣고 방문 처리를 한다. 그리고 방문하지 않은 인접 노드가 없으면 스택에서 최상단 노드를 꺼낸다.

  • 두 번째 과정을 더 이상 수행할 수 없을 때까지 반복한다.

※ DFS의 구현

DFS는 스택 자료구조에 기초한다는 점에서 구현이 간단하다.

실제로는 스택을 쓰지 않고 재귀 함수를 이용하여 매우 간결하게 구현할 수 있으며 탐색을 수행함에 있어 O(N)의 시간이 소요된다.

https://sunho-doing.tistory.com/entry/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%ED%83%90%EC%83%89-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-DFS-BFS

위상정렬

More from this blog

Vpn을 이용한 하이브리드 클라우드 구축하기

※ 터널링 VPN은 두 지점 간의 트래픽들을 암호화해서 누군가가 그 트래픽을 해석할 수 없도록 터널링 한다. 터널링을 통해서 캡슐화되어 있어서 실제로 WireShark 같은 걸로 통해서 트래픽을 도청하려고 보면 IP 등이 알던 것과는 전혀 다르게 되어있어서 해커들이 원하는 정보를 얻을 수 없게 된다. 키를 가지고 데이터를 암호화시키는 거고 터널 내부에 IP CIDR가 있는데 내가 로컬에서 이용하고 있는 데이터베이스의 10.0.0.0/24와 내가...

Dec 25, 20241 min read

Harold Lippin's blog

31 posts

Hackers studying blockchain