Matlab 有向有环图 所有回路非回路查询 最大环路查询

1.查看拓扑结构 mat文件为邻接矩阵%%% ShuanHolmes@outlook.com% 有向图绘制 拓扑情况%%%close all;clear;clc;% load('wMatTree.mat');% load('woutMat.mat');load('wMatWsparity.mat');W = full(W);W = W';% W = [W Wout'
摘要由CSDN通过智能技术生成

1.查看拓扑结构 mat文件为邻接矩阵

%%
% ShuanHolmes@outlook.com
% 有向图绘制 拓扑情况
%%
%close all;
clear;
clc;

% load('wMatTree.mat');
% load('woutMat.mat');
load('wMatWsparity.mat');

W = full(W);
W = W';
% W = [W Wout'];
% Wback = [Wback;0];
% W = [W;Wback'];

%load('xMat.mat');
%netplot(W,1);

 %IDS={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T'};
 %IDS={'A','B','C','D','E','F','G','H','I','J'};
 n = size(W,1); % W是一个方阵
 IDS = {};
 for i=1:n
    IDS = [IDS;num2str(i)]; % 节点标号 增加了一个反馈节点
 end

 % A G J H I C
 % 1 7 10 8 9 3
 %W = W - diag(diag(W)-diag(0));
 b
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个用matlab实现深度优先搜索(DFS)来寻找有向图环路的示例代码: ```matlab function hasCycle = dfs(graph) % graph表示有向图的邻接矩阵,hasCycle表示有向图是否存在环路 n = size(graph, 1); % 有向图顶点数 visited = zeros(n, 1); % 标记每个顶点是否已访问过 onStack = zeros(n, 1); % 标记每个顶点是否在递归调用栈上 hasCycle = false; % 初始默认没有环路 for v = 1:n % 从每个顶点开始深度优先搜索 if ~visited(v) hasCycle = dfsVisit(graph, visited, onStack, v); if hasCycle % 如果存在环路则直接返回 return; end end end end function hasCycle = dfsVisit(graph, visited, onStack, v) % 在有向图从顶点v开始深度优先搜索,visited和onStack记录访问状态,hasCycle表示是否存在环路 visited(v) = true; % 标记当前顶点已访问 onStack(v) = true; % 标记当前顶点在递归调用栈上 for w = find(graph(v,:)) % 遍历v的所有邻居节点w if ~visited(w) hasCycle = dfsVisit(graph, visited, onStack, w); if hasCycle % 如果存在环路则直接返回 return; end elseif onStack(w) % 如果w已经在递归调用栈上,则存在环路 hasCycle = true; return; end end onStack(v) = false; % 当前顶点的所有邻居节点已经访问完毕,将其从递归调用栈上移除 hasCycle = false; % 当前顶点的所有邻居节点均已访问过,不存在环路 end ``` 该代码,dfs函数是主函数,dfsVisit函数是递归函数。在dfs函数,我们从每个顶点开始深度优先搜索,如果存在环路则直接返回;在dfsVisit函数,我们从顶点v开始访问其所有邻居节点w,如果w已经在递归调用栈上,则存在环路,否则继续访问w的邻居节点。在访问完v的所有邻居节点后,将其从递归调用栈上移除,返回当前顶点的访问状态。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值