> 文档中心 > 【数模】用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);

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

然后再通过allcycles函数找到圈

[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)

第一个圈

【数模】用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);[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)

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