当前位置:   article > 正文

【数模】用matlab程序求出有向图的所有有向圈(有向环)并可视化_matlab获取有向图的节点

matlab获取有向图的节点

matlab程序求出下图的所有有向圈。

在这里插入图片描述

首先在matlab中把图画出来
% 首先在matlab中把图画出来
s = [1 2 2 3 3 3 4 4 5];
t = [2 5 4 3 1 2 3 5 2];
G = digraph(s,t)
p = plot(G);
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

然后再通过allcycles函数找到圈
[cycles,edgecycles] = allcycles(G);
  • 1
最后可视化出来
p = plot(G);
highlight(p,'Edges',edgecycles{1},'EdgeColor','r','LineWidth',1.5,'NodeColor','r','MarkerSize',6)
p = plot(G);
highlight(p,'Edges',edgecycles{2},'EdgeColor','r','LineWidth',1.5,'NodeColor','r','MarkerSize',6)
p = plot(G);
highlight(p,'Edges',edgecycles{3},'EdgeColor','r','LineWidth',1.5,'NodeColor','r','MarkerSize',6)
p = plot(G);
highlight(p,'Edges',edgecycles{4},'EdgeColor','r','LineWidth',1.5,'NodeColor','r','MarkerSize',6)
p = plot(G);
highlight(p,'Edges',edgecycles{5},'EdgeColor','r','LineWidth',1.5,'NodeColor','r','MarkerSize',6)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

第一个圈

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Mzs0tROL-1655050403540)(D:/typora%E5%9B%BE%E7%89%87/image-20220613001024751.png)]

第二个圈

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zQj0QatG-1655050403541)(D:/typora%E5%9B%BE%E7%89%87/image-20220613001111536.png)]

第三个圈

在这里插入图片描述

第四个圈

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8bM32QfZ-1655050403543)(D:/typora%E5%9B%BE%E7%89%87/image-20220613001136209.png)]

第五个圈

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aaCO1Tei-1655050403544)(D:/typora%E5%9B%BE%E7%89%87/image-20220613001151485.png)]

完整代码如下
% 首先在matlab中把图画出来
s = [1 2 2 3 3 3 4 4 5];
t = [2 5 4 3 1 2 3 5 2];
G = digraph(s,t)
p = plot(G);
[cycles,edgecycles] = allcycles(G);
p = plot(G);
highlight(p,'Edges',edgecycles{1},'EdgeColor','r','LineWidth',1.5,'NodeColor','r','MarkerSize',6)
p = plot(G);
highlight(p,'Edges',edgecycles{2},'EdgeColor','r','LineWidth',1.5,'NodeColor','r','MarkerSize',6)
p = plot(G);
highlight(p,'Edges',edgecycles{3},'EdgeColor','r','LineWidth',1.5,'NodeColor','r','MarkerSize',6)
p = plot(G);
highlight(p,'Edges',edgecycles{4},'EdgeColor','r','LineWidth',1.5,'NodeColor','r','MarkerSize',6)
p = plot(G);
highlight(p,'Edges',edgecycles{5},'EdgeColor','r','LineWidth',1.5,'NodeColor','r','MarkerSize',6)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

谢谢大家的观看,这题不难,15min搞定。

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

闽ICP备14008679号