主要内容

toposort

定向非循环图的拓扑顺序

描述

例子

n= toposort (G返回拓扑顺序节点的G这样i < j为每条边(n (i)、n (j))G.的有向图G不能有任何周期。

例子

n= toposort (G“秩序”,算法指定排序算法。例如,TopoSort(G,'订单','稳定')使用基于节点的词典顺序的稳定排序算法。

例子

nH) = 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)

图中包含一个坐标轴。坐标轴包含一个graphplot类型的对象。

找到课程的拓扑排序,以确定他们应该完成的正确顺序。

N = toposort (G)
N =1×71 3 7 2 4 6 5
g.nodes.name(n,:)
ans =7 x1细胞{'微积分I'}{'微积分II'}{'实分析'}{'线性代数'}{'多元微积分'}{'微分方程'}{'拓扑'}

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

RNG.默认的;A = trl (sprand(10, 10, 0.3), -1)~=0;G =有向图(一个);(~ G) = toposort (G);情节(G)

图中包含一个坐标轴。坐标轴包含一个graphplot类型的对象。

找到图节点的拓扑排序。尽管G已经按拓扑顺序排列了,(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不包含循环。

使用有向图创建有向图。

例子:G =有向图([1,2],[2 3])

订购算法,指定为'快速地'或者“稳定”

'快速地'(默认)

基于深度优先搜索。在考虑节点的所有子节点之后,将节点添加到列表的开头。

如果G已经是拓扑顺序,这种方法仍然可能重新排列节点。

“稳定”

基于词典秩序。n (1)为索引最小的节点,n (2)下一个最小的n (1),等等。

如果G是拓扑顺序的吗H是不变的,n1: numnodes (G)

例子:[n、H] = toposort (G,“秩序”,“稳定”)

输出参数

全部折叠

节点索引,作为行向量返回。

拓扑排序图,返回为有向图目的。HG,但已根据节点重新排序n

更多关于

全部折叠

拓扑顺序

有向图的拓扑排序是图中节点的排序,使得每个节点出现在它的后继节点(后代节点)之前。

考虑一个有向图,其节点表示任务,其边表示某些任务必须先于其他任务完成的依赖关系。对于这样一个图,图节点的拓扑排序产生一个有效的任务执行序列。

在R2015B中介绍