
[그래프] 위상정렬
·
Algorithm/백준
위상정렬 (Topological sort) 방향 그래프에서 간선으로 주어진 정점 간 선후 관계를 위배하지 않도록 나열하는 정렬 그래프 안에서 사이클이 존재하는 경우엔, 위상정렬을 적용할 수 없다. 근데, 사이클이 존재한다는 뜻이 무슨 뜻일까? 위와 같은 그래프가 존재한다고 가정할 떄, A->B->C->A... 이런식으로 다시 돌아올 때를 사이클이 존재한다고 한다. 즉, 한 노드에서 다른 노드들을 거쳐 처음 노드로 돌아오는 경우, 사이클이 존재한다고 얘기할 수 있다. 위와 같은 그래프가 주어졌을 때, 어떤 노드를 먼저 우선적으로 방문해야 할까? 우선적으로, indegree 배열을 만들어서 각 노드의 indegree 개수를 확인해보자. ABCDEFG0301210 indegree가 0인 정점을 살펴보면 A..