이러한 특징에 따라 DAG는 서로 간 연산에 따른 순서가 필요한 작업들
스프레드(엑셀) 시트의 수정 연산, 네트워크 흐름, 전자 회로 등 서로 간의 데이터 흐름에 따른 순서 즉 스케쥴링을 가지는 작업들에 사용할 수 있다.
그렇다면 이 순서들을 각 정점에 따라 어떻게 정렬할 것인가?
이게 바로 Topologicial Ordering(Sorting)이다.
이 구현법에서는 맨 처음에 들어간 노드가 맨 처음에 나와야 되고
그 노드에 연결 된 outdegree를 제거해야하기 때문에 Queue를 사용해야한다.
1. indegree가 없는 노드를 검색하고 출력한다
2. 출력한 정점과 에지를 제거한다
3. 1번을 반복한다
이렇게 되면 처음 indegree가 없던 정점이 제거되고, 제거된 정점이 가지고 있던 다음 정점은 indegree가 없는 정점이 된다.
이 반복은 최악의 경우 모든 노드 과 에지 대하여 이루어지므로 이 된다.
DFS를 통해 정점을 순회 하고 리스트 형식으로 정점을 묶는다
DFS가 종료되면 리스트에 정점이 꼬리 물기식으로 물려짐
DFS를 사용하기 위해 Stackd을 사용