반응형
그래프 알고리즘 중 하나인 위상 정렬은 BFS, DFS보다 효율적일 수 있다.
의미 : 순서가 정해져있는 작업를 수행할 때 사용하는 알고리즘
위상 정렬의 조건
주어진 그래프에서 위상 정렬을 하려면, 아래와 같은 조건을 만족하는 그래프여야 한다.
- 위상 정렬을 할 그래프는 간선이 방향을 가지는(유향) 그래프여야 한다.
- 내부에 순환(cycle)이 있으면 안된다.
큐(Queue)를 이용한 방식
주어진 그래프에서 위상 정렬을 하려면, 아래와 같은 조건을 만족하는 그래프여야 한다.
- 진입차수가 0인 정점을 큐에 삽입한다. (들어오는 연결선이 없는 노드)
- 큐에서 원소를 꺼내 연결된 모든 간선을 제거한다.
- 제거 이후에 진입차수가 0이 된 정점을 큐에 삽입한다.
- 2번, 3번 반복
반응형
'코딩 테스트 > 알고리즘' 카테고리의 다른 글
[알고리즘 파이썬] input 속도 높이기 (0) | 2021.01.30 |
---|---|
[알고리즘 파이썬] 인접 행렬과 인접 리스트 (0) | 2020.11.08 |
수식 표현 방법 (중위, 전위, 후위) (0) | 2020.07.25 |
Array List vs Linked List (0) | 2020.07.25 |
[파이썬 문법] Union find (Disjoint-set = 서로소 집합) (0) | 2020.07.13 |