Loading...
2023. 5. 22. 04:17

코딩테스트 복기 - 최단거리를 가장 빠르게 구할 수 있는 0-1 BFS 알고리즘

1. 문제 그래프 G가 V개의 정점과 E개의 간선으로 이루어지며 간선의 가중치가 0 또는 1이다. 이때 두 정점 사이의 최단 경로를 찾는 효율적인 코드를 작성해야한다면? 2. 다익스트라 알고리즘이 항상 정답인가? 많은 경우에 다익스트라 알고리즘을 선택하지만, O(E+VlogV)가 최상의 구현이지만, 최악의 경우 효과적이지 않다. 많은 사람들이 이 문제를 보면 다익스트라 알고리즘을 선택하고, 효율적이지 않을때, 최적화할려고 노력하지만, 다익스트라 알고리즘이 최상이라고 생각한다면.. 매우 간단하면서 BFS를 이용한 아주 아름다운 0-1 BFS라는 기법을 알 필요가 있다 보조정리(Lemma) : "BFS 수행중에 정점을 포함하는 큐는, BFS 트리의 최대 2개의 연속한 레벨의 원소만을 포함할 수 있다" Lem..

다익스트라 응용하기 - 시작 정점은 여러개일 수도 있다

1. 문제 14221번: 편의점 (acmicpc.net) 14221번: 편의점 처음 줄에는 정점의 개수 n, 간선의 개수 m이 주어진다.(2 ≤ n ≤ 5,000, 1 ≤ m ≤ 100,000) 다음 m줄에는 a,b,c가 주어지는데 이는 a, b를 잇는 간선의 거리가 c라는 것이다.(1 ≤ a, b ≤ n, 1 ≤ c ≤ 10,000) www.acmicpc.net 2. 풀이 집에서 편의점까지 거리가 가장 가까운, 집의 번호를 출력하는 문제다. 간단하게 생각하면, 집이 p개 있고 편의점이 q개 있는데.. p개의 점 각각에 대하여, 다익스트라 알고리즘을 수행하면 p개의 다익스트라 배열이 나오고.. 여기서 편의점 q개의 점에 대해 거리를 구해보고 거리가 가장 가까운 점을 찾으면 될것이다 근데 이렇게 하면 다익..