主要内容

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 = tril(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不包含循环。

使用有向图创建有向图。

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

排序算法,指定为“快”“稳定”

“快”(默认)

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

如果G已按拓扑顺序排列,此方法仍可能重新排列节点。

“稳定”

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

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

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

输出参数

全部折叠

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

拓扑排序的图,返回为有向图对象。H是同一个图吗G,但是节点按照n

更多关于

全部折叠

拓扑顺序

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

考虑一个有向图,其节点表示任务,其边表示某些任务必须在其他任务之前完成的相关性。对于这样一个图,图节点的拓扑排序产生一个有效的序列,在其中任务可以被执行。

介绍了R2015b