-

이것이 코딩테스트다. 나동빈 신님의 강의를 바탕으로 작성하였습니다.
위상 정렬 이란
'사이클이 없는 방향 그래프'의 모든 노드를 '방향성에 거스르지 않도록 순서대로 나열'하는 것을 의미
예시 > 선수과목을 고려한 학습 순서 설정
진입차수 : 특정한 노드로 들어오는 간선의 개수
진출차수 : 특정한 노드에서 나가는 간선의 개수위상 정렬 알고리즘
'큐'를 이용하는 '위상 정렬 알고리즘의 동작 과정'은 다음과 같다.
1. 진입차수가 0인 모든 노드를 큐에 넣는다.
2. 큐가 빌 때까지 다음의 과정을 반복한다.
1) 큐에서 원소를 꺼내 해당 노드에서 나가는 간선을 그래프에서 제거한다.
2) 새롭게 진입차수가 0이 된 노드를 큐에 넣는다.
>> 결과적으로 '각 노드가 큐에 들어온 순서가 위상 정렬을 수행한 결과'와 동일하다.
위상 정렬을 수행할 그래프를 준비한다.
이때 그래프는 '사이클이 없는 방향 그래프(DAG)이어야 한다.
위상 정렬의 특징DAG를 만족할 때만 수행할 수 있음.
위상 정렬에서는 여러 가지 답이 존재할 수 있음.
> 한 단계에서 큐에 새롭게 들어가는 원소가 2개 이상인 경우, 여러 답이 존재함.
'모든 원소를 방문하기 전에 큐가 빈다면 사이클이 존재'한다고 판단할 수 있음.
> 사이클에 포함된 원소 중에서 어떠한 원소도 큐에 들어가지 못한다.
스택을 활용한 DFS를 이용하여 위상 정렬을 수행할 수도 있음.
성능 분석
위상 정렬을 위해 차례대로 모든 노드를 확인하며 각 노드에서 나가는 간선을 차례대로 제거해야 한다
위상 정렬 알고리즘의 시간 복잡도는 O(V+E) 이다.'개발 > 이코테' 카테고리의 다른 글
에라토스테네스의 체 알고리즘 정의, 동작 방법, 성능 분석 (0) 2022.04.22 소수 판별 알고리즘의 정의 및 원리 (0) 2022.04.22 크루스칼 알고리즘 정의 (0) 2022.04.22 서로소 집합 알고리즘 (0) 2022.04.22 플로이드 워셜 알고리즘 개요, 성능 분석 (0) 2022.04.22 댓글 (비로그인 댓글 허용하지 않습니다.)