-1

n 포인트 n 포인트와 이들 포인트 사이의 거리 d를 감안할 때, 나는 이러한 거리를 초래할 무 방향성 가중 그래프를 찾아야합니다. Prim의 알고리즘을 사용하여 MST를 찾으려고 시도했지만,이 세트는 크기가 n-1이고 n 개의 필요한 모서리를 포함하지 않습니다. 예 : N 거리 나 해당 가장자리를 찾을 필요가 주어진 최단 경로로부터 대응하는 그래프 찾기

0 3 5 
3 0 4 
5 4 0 

에 의해 N 제공 :

그래프 결과
1 - 2 = 3 
1 - 3 = 5 
2 - 3 = 4 

:

 3 
1 --------- 2 
\  /
    \5  /4 
    \ /
    \ /
     3 

그러나 프림의이 이후 첫 번째 두 가장자리를 반환 MST에는 사이클이 없습니다.

답변

1

이러한 거리를 발생시키는 그래프는 모든 노드에서 다른 모든 노드까지의 가장자리가있는 그래프이며 해당 가장자리의 길이는 행렬에 따른 거리입니다. (나는 당신이주는 예제가 방향이없는 것처럼 보이고 여기서는 가중치와 길이의 차이점이 무엇인지 모르기 때문에 당신이 unweighted 지시어로 무엇을 의미하는지 확신 할 수 없다.)

또 다른 옵션은 Prim의 알고리즘을 사용한 것처럼 거리가 증가하는 순서를 고려하는 것입니다. 또한 가장자리가 두 끝을 연결해야하는지 확인하는 것 외에 최소 거리 지금까지 재구성 된 그래프의 끝점 사이의 거리는 행렬의 거리와 같습니다. 그렇지 않은 경우 끝까지 그래프에 연결되어 있어도 가장자리를 추가하십시오.

+0

질문에서 나는 이러한 최단 거리를 초래하는 n 개의 에지가있는 방향이없는 가중 그래프를 찾아야합니다. n = 3의 예에서 행렬에 따라 모든 에지를 구성하지만, n = 8 인 경우. 이것은 질문을 만족시키지 못할 것이다. 이 경우 Prim은이 7 개의 가장자리를 반환합니다. 두 번째 단락에서 언급 한 마지막 것을 찾는 방법은 무엇입니까? 나는 Java에서 Prim의 구현 : https://pastebin.com/Zmfpm3D1 – MGG

+0

만약 n 개의 모서리가 있다면 Prim을 사용하여 첫 번째 n-1 모서리를 얻은 다음 사용되지 않은 모서리를 길이가 길어 지도록 유지하면서 첫 번째는 기존 n-1 가장자리에 의해 형성된 트리를 통과하는 경로보다 짧습니다. 트리에서 거리를 계산한다는 사실을 이용하여 컴퓨팅 거리를 약간의 시간을 절약 할 수 있습니다. – mcdowella