위상 정렬이란? 순서가 정해져있을 때 정렬을 해주는 알고리즘이다. 위상 정렬의 특징 사이클이 없는 방향 그래프에서만 수행된다. 사이클이 생기면 어떤 정점에서 시작해도 결국 그 정점으로 돌아오기 때문에 모든 방향성을 만족시킬 수가 없다. 위상 정렬의 예 과목 A, B, C, D가 있을 때, 아래와 같이 순서를 정해주었다면 위상 정렬을 사용한다. A는 B를 우선적으로 수강해야 수강 가능하다. B는 C를 우선적으로 수강해야 수강 가능하다. D는 B를 우선적으로 수강해야 수강 가능하다. C → B → A, D 가 될 것이다. 위상 정렬의 동작 과정 먼저, 설명하기 전에 주요 키워드를 알아야 한다. 진입 차수(indegree) : 노드로 들어오는 간선의 개수 진출 차수(outdegree) : 노드에서 나가는 간선..
위상 정렬이란? 위상 정렬은 순서가 정해져있는 작업들을 차례대로 수행해야할 때, 그 순서를 결정해주는 알고리즘이다. 유향 그래프의 정점들을 간선 방향대로 나열하는 것. 사이클이 발생하지 않는 유향 그래프에서만 가능하다. 위상 정렬 구현 - BFS 사용 1. 진입 차수가 0인 노드를 큐에 모두 넣는다. (진입차수 : 자신의 정점으로 들어오는 간선의 수) 진입 차수 > 0 : 선행 정점이 존재 진입 차수 == 0 : 선행 정점이 없음 따라서 제일 먼저 탐색해야하는 정점이므로 큐에 먼저 넣음 현재 A → D, C → A, B → A 의 간선 정보가 주어져 있다고 가정하자. 그러면 진입 차수의 정보를 담는 inDegree 배열에 다음과 같이 표시할 수 있다. 진입 차수가 0인 B, C를 넣음 2. 큐에서 진입 ..