帮助中心帮助中心
有向无环图的拓扑顺序
n = topsort (G)
n = topsorort (G,'Order',算法)
[n,H] = topsort (___)
例子
n= toposort (G)返回拓扑顺序的节点的G这样I < j对于每条边(n (i)、n (j))在G.有向图G不能有任何循环。
n= toposort (G)
n
G
I < j
(n (i)、n (j))
n= toposort (G“秩序”,算法)指定排序算法。例如,toposort (G,“秩序”,“稳定”)使用基于节点的字典顺序的稳定排序算法。
n= toposort (G“秩序”,算法)
算法
toposort (G,“秩序”,“稳定”)
[n,H= topsort (___)另外返回有向图H其节点在给定的拓扑顺序。您可以使用前面语法中的任何输入参数组合。
[n,H= topsort (___)
H
全部折叠
创建并绘制一个代表大学数学课程进程的图表。两门课程之间的优势意味着课程要求。
一个= [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];Names = {学我的,“线性代数”,“微积分二世”,...“多元微积分”,“拓扑结构”,...“微分方程”,“实分析”};G =有向图(A,名称);情节(G)
找到课程的拓扑排序,以确定它们应该以适当的顺序完成。
N = topsort (G)
N =1×71 3 7 2 4 6 5
G.Nodes.Name (N,:)
ans =7 x1细胞{'微积分I'}{'微积分II'}{'实分析'}{'线性代数'}{'多元微积分'}{'微分方程'}{'拓扑'}
使用逻辑邻接矩阵创建有向图,然后绘制图。
rng默认的;A = tril(sprand(10,10,0.3), -1)~=0;G =有向图(A);[~,G] = topsort (G);情节(G)
找出图节点的拓扑排序。尽管G已经是拓扑顺序了,(1 2 3 4 5 6 7 8 9 10),toposort重新排序节点。
(1 2 3 4 5 6 7 8 9 10)
toposort
toposort (G)
ans =1×102 1 4 10 9 8 5 7 3 6
指定订单作为“稳定”使用稳定排序算法,使排序先对索引较小的节点排序。稳定排序不会重新排列G如果它已经是拓扑顺序。
订单
“稳定”
toposort (G,“秩序”,“稳定”)
ans =1×101 2 3 4 5 6 7 8 9 10
有向图
输入图形,指定为有向图对象。G必须是有向无环图。使用isdag为了证实这一点G不包含循环。
isdag
使用有向图创建一个有向图。
例子:G =有向图([1 2],[2 3])
G =有向图([1 2],[2 3])
“快”
排序算法,指定为“快”或“稳定”:
基于深度优先搜索。一个节点在考虑了它的所有后代之后被添加到列表的开头。
如果G已按拓扑顺序排列,此方法仍可能对节点重新排序。
基于字典顺序。n (1)是索引最小的节点,n (2)下一个最小的给定n (1),等等。
n (1)
n (2)
如果G是按照拓扑顺序的吗H不变,且n是1: numnodes (G).
1: numnodes (G)
例子:[n,H] = topsort (G,'Order','stable')
[n,H] = topsort (G,'Order','stable')
节点索引,作为行向量返回。
拓扑排序图,返回为有向图对象。H是同一张图吗G,但节点根据n.
有向图的拓扑排序是图中节点的排序,使每个节点出现在其后继节点(后代节点)之前。
考虑一个有向图,它的节点表示任务,边表示某些任务必须先于其他任务完成的依赖性。对于这样的图,图节点的拓扑排序产生一个有效的序列,在这个序列中任务可以被执行。
在R2015b中引入
有向图|isdag|reordernodes
reordernodes
您有了这个示例的修改版本。您想用您的编辑打开这个示例吗?
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
选择一个网站,在可用的地方获得翻译的内容,并查看当地的活动和优惠。根据您的地理位置,我们建议您选择:.
您也可以从以下列表中选择网站:
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。
联系当地办事处