위상정렬은 DAG 이라고도 불리는 알고리즘입니다. 이 알고리즘은 어떤 일을 하는 순서를 찾는 알고리즘입니다.
같이 떡볶이를 만들면서 위상 정렬을 해봅시다!
이렇게 저는 떡볶이를 만드는 순서를 간단히 정리했습니다.
진입 차수가 0인 재료 준비라는 정점을 시작 정점으로 잡았습니다. 이 정점을 큐에 넣어줍니다.
재료준비를 큐에서 빼준 다음 연결되 있던 모든 간선을 제거해줍니다.
진입차수가 0인 양념장 만들기와 물 끓기를 큐에 넣어줍니다! 이때 순서는 상관 없습니다. 저는 일단 양념장 만들기를 먼저 넣어주겠습니다.
양념장 만들기는 빼준 다음 연결된 간선을 다 제거해줍니다.
이러한 방법으로 진행해줍니다!
싸이클이 있으면 위상 정렬을 사용하지 못한다.
- 싸이클이 존재한다면 진입 차수가 0인 정점을 기준으로 정렬을 시작하는데 싸이클이 있다면 시작 정점을 찾을 수 없습니다. 밑에 그래프처럼요!
하나의 방향 그래프로 여러 유형의 위상 정렬이 가능하다.
정렬 중 진입 차수가 0인 정점이 없다면 정렬을 중단합니다.
DAG 알고리즘은 블록체인 쪽에서 미래가 밝은 알고리즘입니다!