[알고리즘] 위상 정렬

2022. 10. 9. 18:03

1. 위상 정렬 (Topology Sort)

  • 순서가 정해져 있는 작업을 차례로 수행해야 할 경우 그 순서를 결정해주기 위해 사용하는 알고리즘
  • 사이클이 발생하지 않는 방향 그래프 DAG(Directed Acyclic Graph)에만 적용 가능
  • 사이클 그래프에서는 시작점이 존재하지 않으므로 적용 불가능
  • 현재 그래프가 위상 정렬이 가능한지 & 위상 정렬 결과는 무엇인지 알 수 있음
  • 시간 복잡도 O(V + E)

 

2. 위상 정렬 알고리즘 순서

1) 집입차수가 0인 정점을 큐에 삽입
2) 큐에서 원소를 꺼내 연결된 모든 간선 제거
3) 간선 제거 이후 진입차수가 0인 정점 큐에 삽입
4) 큐가 빌 때까지 위 과정 반복. 모든 원소를 방문하기 전에 큐가 빈다면 사이클이 존재하는 것이고, 모든 원소를 방문했다면 큐에서 꺼낸 순서가 위상 정렬의 결과.

 

3. 예시 문제

2022.10.09 - [코딩테스트 (JS)/DFS | BFS] - [JS] Course Schedule

 

[JS] Course Schedule

🔒 문제 (LeetCode 207) There are a total of numCourses courses you have to take, labeled from 0 to numCourses - 1. You are given an array prerequisites where prerequisites[i] = [ai, bi] ind..

timemash.tistory.com

2022.10.09 - [코딩테스트 (JS)/DFS | BFS] - [JS] Course Schedule II

 

[JS] Course Schedule II

🔒 문제 (LeetCode 210) There are a total of numCourses courses you have to take, labeled from 0 to numCourses - 1. You are given an array prerequisites where prerequisites[i] = [ai, bi] ind..

timemash.tistory.com

 

 

 

 

 

참고 https://m.blog.naver.com/ndb796/221236874984

+ Recent posts