지역 프로그래밍 콘테스트 문제를 풀려고했습니다. 문제는 기본적으로 가중 그래프에서 최단 경로를 찾는 것입니다. 나는 이런 종류의 문제에 상당히 익숙하며 Dijkstra의 알고리즘을 사용할 수 있다고 생각했습니다. 그러나이 현재 경로의 상황에 따라 특정 값이 다릅니다.가중치가 변화하는 그래프의 최단 경로
문제 무게의 두 가지 유형이 있습니다
: 일반 중량 및 무게 조건은 (의는 K를 부르 자). 조건은 다음과 같습니다. 일단 K 가중치를 사용하여 가장자리를 이동하면 K 유형의 다른 모든 가중치는 0이됩니다. 이것은 최단 경로가 K 유형의 가중치를 가진 가장자리의 조합으로 맞출 수 있기 때문에 .
예 아래
는 이러한 유형의 문제입니다. 가중치가 변경되지 않으면 Dijkstra를 사용하여 가장 짧은 경로를 쉽게 찾을 수 있습니다. 그러나, 가중치 K가 그 값을 변경할 때, 에지 C-D의 가중치가 에지 A-C를 통해 이동 한 후에 0이기 때문에, 더 짧은 경로를 발견 할 수있다.
질문
어떻게 최단 경로를 찾을 수 있습니까?
여기 Dijkstra의 알고리즘을 사용할 수 있습니까? 아니면 A * 또는 BFS와 같은 다른 알고리즘을 사용하는 것이 더 좋습니까?
감사! 이것은 내가 찾고 있었던 바로 그 것이다. K 에지 수는 0과 에지 수 사이의 범위에 있지만 그래프에 몇 개의 K 에지가 있더라도 솔루션은 작동하는 것처럼 보입니다. – KuboK
이건 내가 얼마나 많은 K가 거기에 있는지에 관한 것이 아니다. M 값 또는 Z 값도 있다고 상상해보십시오. 그래서 각각의 다른 가치에 대해 더 많은 일을해야 할 것입니다. K 가장자리의 수는 중요하지 않습니다. – Dolev
아, 이제 알겠습니다. 따라서 더 많은 특수 값 (K, M 또는 기타)을 사용하면 가능한 경로 조합이 더 많습니다. – KuboK