当前位置:   article > 正文

图论——Dijkstra算法matlab代码

图论——Dijkstra算法matlab代码

Dijkstra算法步骤
(1)构造邻接矩阵
(2)定义起始点
(3)运行代码

  1. M=[ 0 5 9 Inf Inf Inf Inf
  2. Inf 0 Inf Inf 12 Inf Inf
  3. Inf 3 0 15 Inf 23 Inf
  4. Inf 6 Inf 0 Inf 8 7
  5. Inf 12 Inf 5 0 Inf 14
  6. Inf Inf Inf Inf Inf 0 10
  7. Inf Inf Inf Inf Inf Inf 0];
  8. first=2;
  9. last=4;
  10. [m,n]=size(M);
  11. L=zeros(1,m);
  12. symbol=zeros(1,m);
  13. direction=zeros(1,m);
  14. for i=1:m
  15. if(i~=first)
  16. L(i)=inf;
  17. end
  18. direction(i)=first;
  19. end
  20. judge=1;
  21. while judge
  22. for i=1:m
  23. if(symbol(i)==0)
  24. min=L(i);
  25. temporary=i;
  26. break
  27. end
  28. end
  29. for i=1:m
  30. if(symbol(i)==0)
  31. if(L(i)<min)
  32. min=L(i);
  33. temporary=i;
  34. end
  35. end
  36. end
  37. k=temporary;
  38. for j=1:m
  39. if(symbol(1,j)==0)
  40. if(M(k,j)==inf)
  41. continue;
  42. else
  43. if(L(k)+M(k,j)<L(j))
  44. L(j)=L(k)+M(k,j);
  45. direction(j)=k;
  46. end
  47. end
  48. end
  49. end
  50. symbol(k)=1;
  51. num=0;
  52. for i=1:m
  53. if(symbol(i)==1)
  54. num=num+1;
  55. end
  56. end
  57. if(num==m)
  58. judge=0;
  59. end
  60. end
  61. p=last;
  62. arrow=zeros(1,m);
  63. arrow(1)=last;
  64. i=2;
  65. while p~=first
  66. arrow(1,i)=direction(p);
  67. i=i+1;
  68. p=direction(p);
  69. end
  70. distance=L(last);

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/38222
推荐阅读
相关标签
  

闽ICP备14008679号