Matlab:toposort

语法:

Matlab 复制代码
n = toposort(G)            %调用toposort函数,对有向图G进行拓扑排序,并将排序结果存储在变量n中
n = toposort(G,'Order',algorithm)   
[n,H] = toposort(___)   %使用了两个输出参数的形式来调用toposort函数。除了返回排序结果n外,还将拓扑排序结果的有向边存储在变量H中。变量H是一个有向图的边列表

节点的拓扑排序:

示例:创建一个有向图,表示一些学科之间的关系,并使用 plot 函数将其可视化

Matlab 复制代码
A = [0 1 1 0 0 0 0
     0 0 0 1 0 0 0
     0 1 0 1 0 0 1
     0 0 0 0 1 1 0
     0 0 0 0 0 0 0
     0 0 0 0 1 0 0
     0 0 0 0 1 0 0];
%定义一个7x7的邻接矩阵A,用于表示学科之间的关系。每个元素A(i,j)表示学科i到学科j是否有边,1表示有,0表示没有

names = {'Calculus I','Linear Algebra','Calculus II', ...
    'Multivariate Calculus','Topology', ...
    'Differential Equations','Real Analysis'};
%定义一个cell数组 names,包含了7个字符串元素,分别对应7个学科的名称

G = digraph(A,names);
%使用digraph函数创建一个有向图G,其中第一个输入参数是邻接矩阵A,第二个输入参数是学科名称数组 names。digraph函数会返回一个代表有向图的对象

plot(G)            %可视化
N = toposort(G)
G.Nodes.Name(N,:)        %找出课程的拓扑排序来确定正确的课程完成顺序

稳定拓扑排序:

示例:使用逻辑邻接矩阵创建有向图,然后绘制图

Matlab 复制代码
rng default;
A = tril(sprand(10, 10, 0.3), -1)~=0;
%使用sprand函数生成一个大小为10x10的稀疏矩阵,其中非零元素的概率为0.3,并将其转换为逻辑型矩阵。tril函数将矩阵的上三角部分置零,得到一个下三角矩阵。最后,通过~=0将非零元素转换为逻辑值(1表示存在边,0表示无边)得到邻接矩阵A

G = digraph(A);        %使用digraph函数创建一个有向图 G,其中输入参数是邻接矩阵 A。digraph 函数会返回一个代表有向图的对象

[~,G] = toposort(G);        %调用 toposort 函数对有向图G进行拓扑排序(此处使用波浪线 (~) 忽略了排序结果的返回值)

plot(G)
toposort(G)
toposort(G,'Order','stable')
相关推荐
Georgeviewer3 小时前
商业落地评测|实体门店GEO优化性价比与服务体系深度复盘
大数据·人工智能
GuWenyue3 小时前
分不清AI Workflow与Agent?3个实战案例彻底讲透,做AI应用不再踩选型坑
人工智能
彩讯股份3006344 小时前
彩讯股份与心洲科技签署战略合作协议,共建企业级模型后训练能力
人工智能·科技
To_OC4 小时前
LC 51 N 皇后:我以为难的是回溯,结果栽在了对角线下标
javascript·算法·leetcode
Scott9999HH4 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
迅易科技4 小时前
从场景验证到Agent上线:迅易 × WorkBuddy如何帮助企业建设AI能力?
人工智能·ai·腾讯云
PNP Robotics4 小时前
多伦多大学机器人峰会|物理AI与具身智能落地新趋势
人工智能·深度学习·机器学习·机器人
GIR1234 小时前
官方出品 | 多通道土壤呼吸测量系统市场现状与十五五规划深度报告:行业分析+趋势预测全收录
大数据·人工智能·机器学习
绿算技术4 小时前
绿算技术亮相第十八届HPC AI中国年会,擘画AI基础设施全栈协同新图景
人工智能