[서울대학교 논자시 준비] 알고리즘 : chapter 10 그래프 : dfs, bfs
2023. 8. 26. 16:24ㆍ논자시
1. dfs와 bfs의 시간 복잡도
dfs와 bfs 모두 인접리스트, 인접 행렬로 구현할 수 있다.
N이 그래프의 노드의 수, E가 그래프의 간선의 수라고 하자.
dfs와 bfs 모두
인접리스트로 그래프를 구현했을 때 O(N+E)의 시간 복잡도를 가지며
인접행렬로 구현했을 때 O(N^2)의 시간 복잡도를 갖는다.
2. bfs 소스코드 C++
BFS(G, s){
for each v ( s
visited[v] = NO;
}
visited[s] = YES;
enqueue(Q, s)
while (Q!=0){
u <- dequeue(Q);
for each v ( L(u)
if (visited[v]=NO) then {
visited[v] <- YES;
enqueue(Q, v);
}
}
bfs의 수행 시간은 O(V+E)이다
3. dfs 소스코드 C++
DFS(G)
{
for each v ( V
visited[v] <- NO;
for each v ( V
if (visited[v]=NO) then aDFS(v);
}
aDFS(v)
{
visited[v]<-YES;
for each x ( V
if (visited[x]=NO) then aDFS(x);
}
}
DFS의 시간복잡도 역시 O(V+E) 이다.
'논자시' 카테고리의 다른 글
서울대학교 논문 자격 제출 시험 후기 (2) | 2023.09.08 |
---|---|
[서울대학교 논자시 준비] 알고리즘 : chapter 10 그래프 : 위상정렬 (0) | 2023.08.26 |
[서울대학교 논자시 준비] 알고리즘 : chapter 5 선택 알고리즘 (0) | 2023.08.26 |
[서울대학교 논자시 준비] 알고리즘 : chapter 4 정렬 - 계수정렬 (0) | 2023.08.26 |
[서울대학교 논자시 준비] 알고리즘 : chapter 4 정렬 - 퀵정렬, 힙정렬 (0) | 2023.08.26 |