文档帮助中心文档
有向无环图的拓扑序
n = toposort (G)
n = toposort (G,“秩序”,算法)
[n、H] = toposort (___)
例子
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) = toposort (___)另外,返回有向图H其节点按给定的拓扑顺序排列。可以使用前面语法中的任何输入参数组合。
[n,H) = toposort (___)
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];名称= {学我的,“线性代数”,“微积分二世”,...“多元微积分”,“拓扑结构”,...“微分方程”,“实分析”};G =有向图(名称);情节(G)
找出课程的拓扑排序,以确定它们应该在其中完成的适当顺序。
N = toposort (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 =有向图(一个);(~ G) = toposort (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
使用有向图创建有向图。
例子:有向图([1 2],[2 3])
有向图([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] = toposort (G,“秩序”,“稳定”)
[n、H] = toposort (G,“秩序”,“稳定”)
节点索引,作为行向量返回。
拓扑排序的图,返回为有向图对象。H是同一个图吗G,但是节点按照n.
有向图的拓扑排序是图中节点的排序,使每个节点出现在其后继(后代)之前。
考虑一个有向图,其节点表示任务,其边表示某些任务必须在其他任务之前完成的相关性。对于这样一个图,图节点的拓扑排序产生一个有效的序列,在其中任务可以被执行。
有向图|isdag|reordernodes
reordernodes
您有这个示例的一个修改版本。要用编辑打开这个例子吗?
您点击了一个对应于这个MATLAB命令的链接:
通过在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
选择一个网站来获得可用的翻译内容,并看到当地的活动和提供。根据您所在的位置,我们建议您选择:.
你也可以从以下列表中选择一个网站:
请选择表现最佳的中国网站(中文或英文)。MathWorks的其他国家网站并没有针对您所在位置的访问进行优化。
与当地办事处联系