当前位置:网站首页>【数模】Matlab allcycles()函数的源代码(2021a之前版本没有)
【数模】Matlab allcycles()函数的源代码(2021a之前版本没有)
2022-07-06 22:13:00 【Dream of Grass】
Matlaballcycles()
函数的源代码
在之前的这篇博文里用程序求出有向图的所有有向圈(有向环)并可视化中用到了一个allcycles
函数,这个函数只有2021a才有,如果matlab版本不高就用不了这个函数,所以为了方便大家使用,我把allcycles
的内置函数找到然后分享给大家。
function [cycles, edgecycles] = allcycles(G, varargin)
% ALLCYCLES Compute all cycles in digraph
% CYCLES = ALLCYCLES(G) computes all the cycles in digraph G. CYCLES is a
% cell array in which CYCLES{
i} is a vector of numeric node IDs (if G
% does not have node names) or a cell array of character vectors (if G
% has node names). Each cycle in CYCLES begins with the smallest node
% index. If G is acyclic, then CYCLES is empty. The cycles are in
% lexicographical order.
%
% [CYCLES, EDGECYCLES] = ALLCYCLES(G) also returns a cell array
% EDGECYCLES in which EDGECYCLES{
i} contains the edges on the cycle
% CYCLES{
i} of G.
%
% [...] = ALLCYCLES(G, Name, Value) specifies one or more additional
% options using name-value pair arguments. The available options are:
%
% 'MaxNumCycles' - A scalar that specifies the maximum number
% of cycles in the output.
% 'MaxCycleLength' - A scalar that specifies the maximum cycle
% length of cycles in the output.
% 'MinCycleLength' - A scalar that specifies the minimum cycle
% length of cycles in the output.
%
% See also ISDAG, HASCYCLES, CYCLEBASIS, ALLPATHS
% Copyright 2020-2021 The MathWorks, Inc.
%
% Reference:
% Johnson, Donald B. "Finding all the elementary circuits of a directed
% graph." SIAM Journal on Computing 4.1 (1975): 77-84.
[maxNumCycles, maxCycleLength, minCycleLength] = parseInputs(varargin{
:});
if maxCycleLength < minCycleLength
cycles = cell(0, 1);
edgecycles = cell(0, 1);
return
end
try
if nargout < 2
cycles = allSimpleCycles(G.Underlying, maxNumCycles, maxCycleLength,...
minCycleLength);
else
[cycles, edgecycles] = allSimpleCycles(G.Underlying, maxNumCycles,...
maxCycleLength, minCycleLength);
end
catch e
if e.identifier == "MATLAB:nomem"
error(message('MATLAB:graphfun:allcycles:nomem'));
else
rethrow(e);
end
end
[names, hasNodeNames] = getNodeNames(G);
names = names.';
if hasNodeNames
for i = 1:size(cycles, 1)
cycles{
i} = names(cycles{
i});
end
end
end
function [maxNumCycles, maxCycleLength, minCycleLength] = parseInputs(varargin)
names = {
'MaxNumCycles', 'MaxCycleLength', 'MinCycleLength'};
maxNumCycles = Inf;
maxCycleLength = Inf;
minCycleLength = 1;
for i = 1:2:numel(varargin)
opt = validatestring(varargin{
i}, names);
if i+1 > numel(varargin)
error(message('MATLAB:graphfun:allcycles:KeyWithoutValue', opt));
end
switch opt
case 'MaxNumCycles'
maxNumCycles = varargin{
i+1};
validateattributes(maxNumCycles, {
'numeric'}, {
'scalar', 'real', 'nonnegative', 'integer'}, '', 'MaxNumCycles')
case 'MaxCycleLength'
maxCycleLength = varargin{
i+1};
validateattributes(maxCycleLength, {
'numeric'}, {
'scalar', 'real', 'positive', 'integer'}, '', 'MaxCycleLength')
case 'MinCycleLength'
minCycleLength = varargin{
i+1};
validateattributes(minCycleLength, {
'numeric'}, {
'scalar', 'real', 'positive', 'integer'}, '', 'MinCycleLength')
end
end
end
做一点点小说明
计算有向图中的所有周期
CYCLES
= ALLCYCLES
(G
)计算有向图G中的所有周期
单元格数组,其中CYCLES
{ i
}是一个数值节点id的向量(如果G
没有节点名称)或字符向量的单元格数组(如果G
节点名称)。 CYCLES
中的每个周期都从最小的节点开始
索引。 如果G是无环的,那么CYCLES为空。 周期在
辞典编纂的秩序。
[CYCLES
, EDGECYCLES
] = ALLCYCLES
(G
)也返回一个单元格数组
EDGECYCLES
,其中EDGECYCLES
{ i
}包含循环上的边
周期{我}的G。
[… = ALLCYCLES
(G
, Name
, Value
)指定一个或多个附加值
使用名称-值对参数的选项。 可用选项有:
MaxNumCycles
-一个指定最大数目的标量
输出的周期。
MaxCycleLength
-一个指定最大周期的标量
输出中的周期长度。
MinCycleLength
-一个指定最小周期的标量
输出中的周期长度。
边栏推荐
- EasyCVR集群重启导致其他服务器设备通道状态离线情况的优化
- How do test / development programmers get promoted? From nothing, from thin to thick
- namespace基础介绍
- What about the collapse of win11 playing pubg? Solution to win11 Jedi survival crash
- [team learning] [34 sessions] Alibaba cloud Tianchi online programming training camp
- Gpt-3 is a peer review online when it has been submitted for its own research
- You can't sell the used lithography machine to China! The United States unreasonably pressured the Dutch ASML, and domestic chips were suppressed again
- Break the memory wall with CPU scheme? Learn from PayPal to expand the capacity of aoteng, and the volume of missed fraud transactions can be reduced to 1/30
- Hangzhou Electric 3711 binary number
- Comment les tests de logiciels sont - ils effectués sur le site Web? Testez la stratégie!
猜你喜欢
接口自动化测试实践指导(中):接口测试场景有哪些
1.19.11. SQL client, start SQL client, execute SQL query, environment configuration file, restart policy, user-defined functions, constructor parameters
[team learning] [34 sessions] Alibaba cloud Tianchi online programming training camp
[multi threading exercise] write a multi threading example of the producer consumer model.
视频融合云平台EasyCVR视频广场左侧栏列表样式优化
On the 110th anniversary of Turing's birth, has the prediction of intelligent machine come true?
Video fusion cloud platform easycvr video Plaza left column list style optimization
[OA] excel document generator: openpyxl module
What if the win11 screenshot key cannot be used? Solution to the failure of win11 screenshot key
How do test / development programmers get promoted? From nothing, from thin to thick
随机推荐
Win11图片打不开怎么办?Win11无法打开图片的修复方法
每人每年最高500万经费!选人不选项目,专注基础科研,科学家主导腾讯出资的「新基石」启动申报
Hangzhou Electric 3711 binary number
namespace基础介绍
Unit test asp Net MVC 4 Application - unit testing asp Net MVC 4 apps thoroughly
leetcode 53. Maximum subarray maximum subarray sum (medium)
Hardware development notes (10): basic process of hardware development, making a USB to RS232 module (9): create ch340g/max232 package library sop-16 and associate principle primitive devices
MySQL forgot how to change the password
一图看懂!为什么学校教了你Coding但还是不会的原因...
buildroot的根文件系统提示“depmod:applt not found”
Lecture 3 of "prime mover x cloud native positive sounding, cost reduction and efficiency enhancement lecture" - kubernetes cluster utilization improvement practice
测试/开发程序员怎么升职?从无到有,从薄变厚.......
Advertising attribution: how to measure the value of buying volume?
这项15年前的「超前」技术设计,让CPU在AI推理中大放光彩
GPT-3当一作自己研究自己,已投稿,在线蹲一个同行评议
Complimentary tickets quick grab | industry bigwigs talk about the quality and efficiency of software qecon conference is coming
Break the memory wall with CPU scheme? Learn from PayPal to expand the capacity of aoteng, and the volume of missed fraud transactions can be reduced to 1/30
Zhou Yajin, a top safety scholar of Zhejiang University, is a curiosity driven activist
程序员上班摸鱼,这么玩才高端!
Golang compresses and decompresses zip files