主要内容

托普索特

有向循环グラフの顺序顺序

说明

n= toposort(Gは,Gの各エッジ(n(i),n(j))についてとなる,Gのノードのトポロジカル顺序を返し。有向グラフGに循环设けられません。

n= toposort(G,'命令',算法は顺序アルゴリズム指定します。,,toposort(g,'order','stable')は,辞书的に基づく安定な付けアルゴリズムを使用します。

[[n,,,,H] = toposort(___はさらに指定れトポロジカル顺序のをもつ有向グラフHを返し前述のにある任意入力の组み合わせが使用できます。

すべて折りたたむ

大学の课程进行表すグラフ作成しプロットしますますますますますつつつ课程をを结ぶ结ぶエッジは

a = [0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 10 0];名称= {'微积分I',,,,“线性代数”,,,,“微积分II”,,,,...“多变量演算”,,,,“拓扑”,,,,...'微分方程',,,,“真实分析”};g = digraph(a,名称);图(g)

图包含一个轴对象。轴对象包含类型图形图的对象。

课程のを,课程を修了な顺序を决定し。

n = toposort(g)
n =1×71 3 7 2 4 6 5
g.nodes.name(n,:)
ans =7x1单元{'calculus i'} {'calculus ii'} {'真实分析'} {'线性代数'} {'multivariate calculus'} {'difectial equications'} {'topology'}

论理邻接使用て有向グラフを,それをプロットし。

RNG默认;a = tril(Sprand(10,10,0.3),-1)〜= 0;g = digraph(a);[〜,g] = toposort(g);图(g)

图包含一个轴对象。轴对象包含类型图形图的对象。

グラフノードトポロジカルソートを。。Gは既に(1 2 3 4 5 6 7 8 9 10)のトポロジカルになっいますが,托普索特はノードをます。

托普索特(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

入力引数

すべて折りたたむ

入力グラフ。Digraphオブジェクトとして指定ます。Gは有向循环でなけれなりません。Gが循环含まことをするには,ISDAGを使用し。

有向を作成する,,Digraphを使用し。

例:g = digraph([1 2],[2 3])

顺序付けアルゴリズム。'快速地'または'稳定的'として指定し。

'快速地'(既定)

深さにますノードはすべて下位を考虑考虑した后にリストのの先头先头に追加ささ

Gが既にになっいるでもこのメソッドノードが并べ替えられるられることがが。。。

'稳定的'

辞书的顺序に基づき。。n(1)は最小インデックスをもつ,,n(2)n(1)の次最小インデックスもつノード,と続きます。

Gがトポロジカルになって,,Hは変化せ,n1:numnodes(g)です。

例:[n,h] = toposort(g,'order','stable')

出力引数

すべて折りたたむ

ノードインデックス行ベクトル返されます。

トポロジカルにされた。。Digraphオブジェクトとして返さます。HGと同じグラフが,nに従っノード并べ替えられてい。。

详细

すべて折りたたむ

トポロジカル顺序

有向トポロジカルとは,グラフのノード后続后続后続后続后続()ノードノードノードの前前に现れる

タスク表す,特定のタスク他のタスクより前にしなければならないなければならない依存依存关系关系关系をを表すエッジエッジをもつもつ有向有向グラフグラフについて考え考えます。。そのそのそのようグラフグラフグラフグラフ有效なが得られ。。

バージョン履歴

R2015Bで导入