본문 바로가기
SWE/코테

DFS BFS

by S나라라2 2022. 3. 28.
반응형

 

d

 

DFS BFS
Depth First Search Breadth First Search
Stack / Recursive Queue

 

Time Complexity:

- 인접 리스트로 표현된 그래프

O(N+E)

- 인접 행렬로 표현된 그래프

O(N^2)

 

N is the number of nodes in the graph,

E is the number of edges

 

adjacent matrix

 


dfs 시간 복잡도

dfs(x)는 x에 방문하는 함수이므로 정점의 개수, 즉 차수인 V번만큼 dfs(x)가 호출됩니다. 따라서 dfs(x) 시간복잡도 *V가 전체 dfs 알고리즘의 시간복잡도가 됩니다.

- 인접 행렬로 표현된 그래프

모든 정점을 다 찾아봐야하기 때문에 dfs(x)의 시간복잡도는 O(N)
dfs(x)가 N번 호출되어야 하므로 전체 dfs 알고리즘의 시간복잡도는 O(N*N)=O(N^2)

- 인접리스트로 표현된 그래프

인접 행렬과 마찬가지로 dfs(x)는 N번 호출

dfs(x)의 시간복잡도는 O(N+E)

인접리스트에서 dfs가 호출되는 방법은 모든 정점을 다 찾는 인접행렬의 탐색방법과 다릅니다. 또한 a[x].size()는 전체 간선의 개수가 아니라, 한 정점과 연결된 간선의 개수이기 때문에 dfs(x)의 시간복잡도는 O(E)가 아님을 주의해야 합니다.

반응형