1주차 (1회차) - 데이크스트라에 대한 이론 학습 및 코드 구현, 그리고 백준 응용 문제풀기 1504번: 특정한 최단 경로 (acmicpc.net) 데이크 스트라란? 한 노드에서 다른 노드에 가중치가 있을 때, 그 가중치의 합이 가장 적은 길을 찾는 알고리즘 이다. 이런 데이크 스트라는 다이나믹 프로그래밍의 일종인데, 한 노드에서 탐색을 시작하여, 다른 노드로 갈 때, 현재의 최단 거리 값에서 다른 노드로 이동하는 거리의 합이 이전에 그 노드를 방문하여 얻은 최단 거리보다 짧은 경우 업데이트를 하여, 지속적으로 업데이트, 탐색하는 알고리즘이다. 해당 특정한 최단 경로 문제는 데이크 스트라를 돌렸을 때, dp배열의 값, 최단 거리가 무엇을 의미하는지 정확하게 묻는 문제라고 할 수 있다. 해당 문제는 양방향 간선이다. 즉, 특정한 노드에서 다른 노드로 가는 최단 거리는 그 반대여도 값이 같다는 것이다. 그리고 또한 모든 노드는 다른 노드로 가는 간선이 존재한다. 문제는 1에서 N 으로 가는 최단 거리는 우리가 거쳐가야 하는 두개의 노드가 포함 되어 있지 않을 수도 있다는 것이다. 그럼 어떻게 해결 해야 할까? 간단히 축약하여 그린 그림이다. 우리 시작 지점 1번노드 에서 거쳐야 하는 두개의 노드까지의 최단 거리를 구할 수 있다. 그리고 거쳐야 하는 두개의 노드를 시작점으로 다익스트라를 돌리게 되면, 해당 노드에서의 다른 노드까지의 모든 최단거리가 나오게 된다. 그러면 우리는 총 5개의 최단거리로 이루어진 간선을 얻게 되고 사용 할 수 있다. 우린 시작점에서 거쳐야 하는 노드 중 하나를 최단 거리를 이용하여 도착했을 때, 다른 거쳐야 하는 노드까지 현재 노드에서 최단거리를 이용하여 그 노드에...
댓글
댓글 쓰기