Dijkstra 의 두 알고리즘 (단일 시작 노드에서 가장 짧은 경로)과 Prim (주어진 노드에서 시작하는 최소 가중치 스패닝 트리)의 구조는 매우 유사합니다. 그들은 탐욕스럽고 (현재의 관점에서 가장 좋은 가장자리를 취함) 그래프에 걸쳐있는 나무를 만듭니다.
그러나 그들이 최소화하는 가치는 다릅니다. Dijkstra는 트리에서 시작 노드에 가장 근접하게 선택되지 않은 노드로 이어지는 에지를 다음 에지로 선택합니다. (이러한 선택으로 거리가 다시 계산됩니다.) Prim은 지금까지 구성된 나무에서 가장 짧은 가장자리를 가장자리로 선택합니다. 따라서 두 알고리즘 모두 "최소 에지"를 선택했습니다. 가장 큰 차이점은 최소값으로 선택된 값입니다. Dijkstra의 경우 시작 노드에서 후보 노드까지의 전체 경로 길이이며 Prim의 경우 단일 에지의 가중치 일뿐입니다.
차이점을 확인하려면 몇 가지 예를 구성하여 어떤 일이 발생하는지 확인해야합니다. 이는 실제로 유익합니다. 다른 동작을 나타내는 가장 간단한 예는 모서리가 이고 길이가 2 인 인 삼각형 이며 , 길이는 1입니다. Dijkstra는 및 (길이 2의 두 경로 제공)를 선택하고 Prim은 및 (스패닝 트리 제공)를 선택합니다. 무게 3).x,y,z{x,y}{x,z}{y,z}x{x,y}{x,z}{x,y}{y,z}
에 관해서는 크루스 칼 , 그것은 약간 다릅니다. 최소한의 스패닝 트리를 해결하지만 실행 중에 트리를 형성하지 않을 수있는 가장자리를 선택하면 사이클을 피할 수 있습니다. 따라서 부분 솔루션의 연결이 끊어 질 수 있습니다. 결국 당신은 나무를 얻는다.