2013-10-25 1 views
0

G의 두 꼭지점 사이의 최대 거리를 나타내는 그래프의 지름을 계산하고 싶습니다.여기서 graphshortestpath 함수를 사용할 수 없습니까?

cm은 그래프의 연결 행렬이며 그래프의 지름은 변수 a에 있어야합니다. 하지만 MATLAB은 '입력 인수가 희소 배열이어야합니다.'라는 오류 메시지를 표시했습니다.

graphshortestpath 함수를 사용하여 직경을 계산할 수 없습니까? 그럼 내가 뭘해야하지?

cm = [0,1,1,1,0;1,0,0,1,0;0,1,0,0,0;1,0,0,0,0;0,0,0,0,0]; 
bg = biograph(cm); 
a = 1; 

for i = 1:4 
    for j = (i+1):5 
     [dist,path,pred] = graphshortestpath(bg,i,j) 
     if a<=dist 
      a = dist 
      end 
     end 
    end 

답변

1

나는이 (내가 MATLAB 여기이없는) 테스트,하지만 어떻게 cmsparse를 만드는 방법에 대한, 그 입력으로 graphshortestpath에 사용하지 않은?

documentation에 따르면 "첫 번째 인수는 그래프를 나타내는 N-N 스파 스 매트릭스 여야하며 매트릭스 G의 0이 아닌 항목은 에지의 가중치를 나타냅니다." 그러므로, 당신은 전기를 입력으로 사용해서는 안됩니다.

설명서의 첫 번째 예를 확인하면 매우 잘 설명됩니다!

cm_full = [0,1,1,1,0;1,0,0,1,0;0,1,0,0,0;1,0,0,0,0;0,0,0,0,0]; 
cm = sparse(cm_full); 

bg = biograph(cm); 
a = 1; 

for i = 1:4 
    for j = (i+1):5 
     [dist,path,pred] = graphshortestpath(cm,i,j) 
     if a<=dist 
      a = dist 
      end 
     end 
    end 
end 
관련 문제