본문 바로가기

Algorithm/H. Trees & Graphs

122. Directed Acyclic Graph

DAG(Directed Acyclic Graph)는 사이클이 존재하지 않는 유향 그래프를 의미한다. 정의는 이렇게 간단하지만 응용할 수 있는 분야는 상당히 넓은 편이며, 최근에는 블록체인에서도 많이 다루면서 점점 주목받고 있는 개념이기도 하다. 사회과학에서도 등장한다고 한다.


그래프 이론의 관점에서 DAG의 큰 특징은 다음과 같이 나타낼 수 있다.

  • 진입 차수가 $0$인 정점이 하나 이상 존재한다.
  • 진출 차수가 $0$인 정점이 하나 이상 존재한다.
  • 어떤 정점 및 그 정점과 연결된 간선들을 그래프에서 제거할 경우 남는 정점과 간선들로 이루어진 그래프도 DAG이다.
  • 모든 정점을 순서대로 나열했을 때 간선의 방향이 전부 동일하게(왼쪽 → 오른쪽 또는 오른쪽 → 왼쪽) 할 수 있다.

네 번째 특징에 나온 정점 나열은 위상 정렬이라고 불리며 DAG와 연관되어 가장 많이 등장하는 주제 중 하나이다. 위상 정렬은 별도의 글에서 설명하며 여기서는 자세한 설명을 생략한다.

 

PS에서는 DAG의 개념이 단독으로 등장하는 문제는 찾아보기 어렵고, DAG에서 위상 정렬을 하는 문제나 그래프의 정점들을 SCC로 묶어서 DAG를 만들고 뭔가를 하는 문제 등 다른 개념이 결합된 문제들이 주로 등장한다. 위상 정렬과 SCC 등은 아직 설명하지 않은 내용이므로 해당 개념을 설명할 때 DAG와 결합된 문제를 함께 소개할 예정이며, 여기서는 DAG와 DFS, DP가 결합된 문제를 소개한다.

 

[참고 링크]

 

DAG

 

[연습문제]

 

BOJ 1005. ACM Craft (Gold III)

더보기

모든 간선을 뒤집은 다음 진입 차수가 $0$인 정점들에서 DFS를 차례로 실행하면서 정점들의 DP 테이블을 갱신한다. DP 테이블에는 각각의 건물을 건설하기까지 걸리는 최소 시간을 저장한다. 이런 유형의 문제들을 DAG DP라고 부르기도 한다.

 

→ solved.ac tag: dag

'Algorithm > H. Trees & Graphs' 카테고리의 다른 글

124. Disjoint Set & Union-Find  (0) 2022.06.21
123. Topological Sorting  (0) 2022.04.30
121. Independent Set & Clique  (0) 2022.04.25
120. Dial's Algorithm  (0) 2022.03.09
119. 0-1 BFS  (0) 2022.03.07