数学建模社区-数学中国

标题: Matlab的图论工具箱 3——渡河问题。 [打印本页]

作者: 森之张卫东    时间: 2015-8-11 16:43
标题: Matlab的图论工具箱 3——渡河问题。
  1. <p>%渡河问题!
  2. %时间:2015-6-20
  3. clc,
  4. clear
  5. close all
  6. a=[1 1 1 1;1 1 1 0;1 1 0 1;1 0 1 1;1 0 1 0
  7.    0 1 0 1;0 1 0 0;0 0 1 0;0 0 0 1; 0 0 0 0]; %每一行是一个可行状态
  8. b=[1 0 0 0;1 1 0 0;1 0 1 0;1 0 0 1]; %每一行是一个转移状态
  9. w=zeros(10); %邻接矩阵初始化
  10. for i=1:9
  11.     for j=i+1:10
  12.         for k=1:4
  13.             if findstr(mod(a(i,:)+b(k,:),2),a(j,:))
  14.                 w(i,j)=1;
  15.             end
  16.         end
  17.     end
  18. end
  19. w=w'; %变成下三角矩阵
  20. [i,j,v]=find(w);  %找非零元素
  21. c=sparse(i,j,v,10,10) %构造稀疏矩阵
  22. [x,path,z]=graphshortestpath(c,1,10,'Directed',false)  % 该图是无向图
  23. %------------------------可以套用----------------------------------------
  24. h = view(biograph(c,[],'ShowArrows','off','ShowWeights','off'));</p><p>set( h.Nodes(path),'Color',[1 0.4 0.4] )
  25. fowEdges=getedgesbynodeid( h, get( h.Nodes(path),'ID' ) );
  26. revEdges=getedgesbynodeid( h, get( h.Nodes(fliplr(path)),'ID' ) );
  27. edges=[fowEdges;revEdges];
  28. set(edges,'LineColor',[1 0 0]); %为了将来打印清楚,边画成黑色
  29. set(edges,'LineWidth',1.5);  %线型宽度设置为1.5</p><p><p><p><p><p><p>
  30. </p>
复制代码

新建文件夹20150811_162115.jpg (2.35 MB, 下载次数: 212)

新建文件夹20150811_162115.jpg

效果图.PNG (14.12 KB, 下载次数: 215)

效果图.PNG






欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5