Loading...

우선순위가 2개 이상인 다익스트라 알고리즘 연습

1. 문제1 16167번: A Great Way (acmicpc.net) 16167번: A Great Way 첫 번째 줄에 거점의 수 N과 경로의 개수 R이 주어진다. (2 ≤ N ≤ 100, 1 ≤ R ≤ 200) 모든 거점에는 1부터 N까지 번호가 매겨져 있으며 중앙대학교는 1번, 숭실대학교는 N번이다. 두 번째 줄부터는 R www.acmicpc.net 2. 풀이 다익스트라 알고리즘으로 최단거리만을 요구하는 문제가 기본문제고, 최단거리면서, 그러한 거리가 여러개인 경우 거쳐가는 노드가 최소가 되는 경로를 찾으라고 한다면? 접근 방법은 distance 배열 설정을 조금만 바꿔주면 된다 distance[v]를 출발점에서 v까지 가는데 가는 [비용, 거친 노드 수]로 정의해주자 "비용이 먼저 최소가 되면서..

다익스트라를 응용해서 minimum bottleneck path 문제 기본 배우기

1. 문제 23286번: 허들 넘기 (acmicpc.net) 23286번: 허들 넘기 첫째 줄에 세 정수 N, M, T가 주어진다. 다음 M개의 줄에 그래프 간선의 정보 u, v, h가 주어지고, u에서 v로 가는 간선이 있고, 높이가 h인 허들이 간선 중간에 놓여 있다는 의미이다. 마지막 T개의 www.acmicpc.net 2. 풀이 출발 정점에서 도착 정점으로 가는 길에 가중치가 가장 큰 간선의 가중치가 최소가 되는 경로를 찾는 문제 경로에서 가중치가 가장 큰 간선을 bottleneck path라고 부른다 이 bottleneck path의 가중치를 최소로 만드는 문제가 minimum bottleneck path problem 여러가지 방법이 있는것 같기는 한데.. 가장 기본은 다익스트라 알고리즘을 살..

2022. 10. 3. 22:19

자다가도 일어나서 바로 구현할 수 있어야하는 최단경로를 찾는 다익스트라 알고리즘 최적화하기 2편

1. 개요 다익스트라 알고리즘을 간단히 구현하면 시간 복잡도가 $O(V^{2})$이지만 이제부터 배울 구현 방법을 이용하면 최악의 경우에도 $O(ElogV)$를 보장하여 해결할 수 있다. 여기서 V는 노드의 개수이고 E는 간선의 개수이다. 간단한 다익스트라 알고리즘은 "최단 거리가 가장 짧은 노드"를 찾기 위해 매번 최단 거리 테이블을 선형적으로 (모든 원소를 앞에서부터 하나씩) 탐색해야 했다. 이 과정에서만 O(V)의 시간이 걸린다. 하지만 최단 거리가 가장 짧은 노드를 단순히 선형적으로 찾는 것이 아니라 더욱 더 빠르게 찾을 수 있다면 어떨까? 개선된 다익스트라 알고리즘에서는 힙 자료구조를 사용한다. 힙 자료구조를 이용하면 특정 노드까지의 최단 거리에 대한 정보를 힙에 담아 처리하므로, 출발 노드부터..