2013-10-25 5 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 представляют веса ребер». Таким образом, вы не должны использовать биографию в качестве входных данных.

Проверьте наш первый пример в документации, он объясняет это очень хорошо!

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 
Смежные вопросы