위상 정렬은 순서가 정해져 있는 작업을 차례대로 수행 해야될 때 순서를 결정해주기 위해 사용하는 알고리즘
DAG(Directed Acyclic Graph) 에만 적용이 가능합니다.
사이클이 발생하는 경우에는 위상 정렬을 수행할 수 없습니다.
위상 정렬은 여러개의 답이 존재할 수 있습니다.
모든 원소를 방문하기 전에 큐가 빈다면 사이클이 존재한다고 판단할 수 있습니다.
스택을 활용한 DFS를 이용해 위상 정렬을 수행할 수도 있습니다.
스택(Stack), 큐(Queue)를 사용하는 2가지 방식이 존재합니다.
그 중에서 큐를 사용하는 방식은 아래와 같습니다.
위상 정렬 알고리즘의 시간 복잡도는 O(V+E) 입니다.
진입차수(Indegree) : 특정한 노드로 들어오는 간선의 개수
진출차수(Outdegree) : 특정한 노드에서 나가는 간선의 개수
DAG(Directed Acyclic Graph) : 싸이클이 발생하지 않는 방향의 그래프